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()