112 lines
4.2 KiB
JavaScript
112 lines
4.2 KiB
JavaScript
import {api} from "./api";
|
||
import {requests} from "../../requests";
|
||
import {getComparator} from "../../components/core/getComparator";
|
||
|
||
class IngredientClient {
|
||
|
||
allList(currentId, setIngredients, setIngredient, createError) {
|
||
api().get(requests.ingredient.all)
|
||
.then((r) => {
|
||
const arr = r.data.sort(getComparator("asc", "name"));
|
||
setIngredients(arr)
|
||
|
||
if (!currentId) {
|
||
return;
|
||
}
|
||
const currentIngredient = arr.find((r) => r.id === (currentId * 1));
|
||
if (!currentIngredient) {
|
||
return;
|
||
}
|
||
setIngredient(currentIngredient);
|
||
})
|
||
.catch(() => createError("Ошибка получения данных"))
|
||
}
|
||
|
||
getType(setTypes) {
|
||
api().get(requests.ingredient.type)
|
||
.then((r) => setTypes(r.data.sort(getComparator("asc", "name"))))
|
||
}
|
||
|
||
findAll(setIngredients, createError) {
|
||
api().get(requests.ingredient.all)
|
||
.then((r) => setIngredients(r.data.sort(getComparator("asc", "name"))))
|
||
.catch(() => createError("Ошибка получения списка ингредиентов"))
|
||
}
|
||
|
||
getAllIngredients(setIngredients, setLoading, createError) {
|
||
api().get(requests.ingredient.all)
|
||
.then((r) => {
|
||
setIngredients(r.data)
|
||
setLoading(false);
|
||
})
|
||
.catch(() => {
|
||
createError("Ошибка получения списка ингредиентов");
|
||
setLoading(false);
|
||
})
|
||
}
|
||
|
||
changeIngredientIsHave(id, value, state, setIngredients, createError) {
|
||
const url = `${requests.ingredient.crud}?id=${id}`;
|
||
const request = value ? api().put(url) : api().delete(url);
|
||
request
|
||
.then(() => {
|
||
setIngredients(state);
|
||
})
|
||
.catch(() => {
|
||
createError("Ошибка изменения ингредиента");
|
||
});
|
||
}
|
||
|
||
deleteIngredientIsHave(id, createSuccess, createError) {
|
||
api().delete(`${requests.ingredient.crud}/${id}`)
|
||
.then(() => createSuccess("Ингредиент удален"))
|
||
.catch(() => createError("Ошибка удаления ингредиента. Перезагрузите страницу"))
|
||
}
|
||
|
||
saveIngredient(ingredient, createSuccess, createError) {
|
||
api().patch(requests.ingredient.crud, ingredient)
|
||
.then(() => createSuccess("Ингредиент сохранен"))
|
||
.catch(() => createError("Ошибка сохранения"))
|
||
}
|
||
|
||
findOne(id, selectIngredient, createError) {
|
||
api().get(`${requests.ingredient.crud}?id=${id}`)
|
||
.then((r) => {
|
||
selectIngredient(r.data)
|
||
})
|
||
.catch(() => createError("Ошибка получения информации об ингредиенте"))
|
||
}
|
||
|
||
changeIngredientInBar(ingredient, cocktail, setCocktail, createSuccess, createError) {
|
||
const url = `${requests.ingredient.crud}?id=${ingredient.id}`;
|
||
const request = ingredient.isHave ? api().delete(url) : api().put(url);
|
||
const value = !ingredient.isHave;
|
||
request.then(() => {
|
||
const newReceipts = cocktail.receipt.map((r) => {
|
||
if (r.ingredient.id !== ingredient.id) {
|
||
return r;
|
||
}
|
||
return {
|
||
...r,
|
||
ingredient: {
|
||
...ingredient,
|
||
isHave: value
|
||
}
|
||
}
|
||
})
|
||
setCocktail({
|
||
...cocktail,
|
||
receipt: newReceipts
|
||
})
|
||
createSuccess("Сохранено")
|
||
}).catch(() => createError("Ошибка сохранения"))
|
||
}
|
||
|
||
findUnit(setUnits, createError) {
|
||
api().get(requests.unit)
|
||
.then((r) => setUnits(r.data.sort(getComparator("asc", "name"))))
|
||
.catch(() => createError("Ошибка получения единиц измерения"))
|
||
}
|
||
}
|
||
|
||
export const ingredientClient = new IngredientClient() |