import DialogTitle from "@mui/material/DialogTitle"; import DialogContent from "@mui/material/DialogContent"; import Stack from "@mui/material/Stack"; import Typography from "@mui/material/Typography"; import DialogActions from "@mui/material/DialogActions"; import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; import * as React from "react"; import {useEffect, useState} from "react"; import {CardMedia} from "@mui/material"; import Paper from "@mui/material/Paper"; import Box from "@mui/material/Box"; import StarBorderIcon from '@mui/icons-material/StarBorder'; import IconButton from "@mui/material/IconButton"; import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; import DeleteIcon from '@mui/icons-material/Delete'; import {IngredientInfoModal} from "../Ingredients/IngredientInfoModal"; import {api} from "../../lib/clients/api"; import {requests} from "../../requests"; import {useAlert} from "../../hooks/useAlert"; import {paths} from "../../path"; import {Loading} from "../core/Loading"; import {useUser} from "../../hooks/useUser"; import {useSelect} from "../../hooks/useSelect"; export function CocktailInfoModal({row}) { const {user} = useUser(); const {getError, createError, createSuccess} = useAlert(); const [cocktail, setCocktail] = useState(null) const [loading, setLoading] = useState(false); const {closeCocktail, selectIngredient, getIngredient, getOpenCocktail} = useSelect(); const openIngredientModalHandler = (id) => { api().get(`${requests.bar.ingredient}?id=${id}`) .then((r) => { selectIngredient(r.data) }) .catch(() => createError("Ошибка получения информации об ингредиенте")) } const selectIngredientHandler = (ingredient) => { const url = `${requests.bar.ingredient}?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("Ошибка сохранения")) } useEffect(() => { setLoading(true) if (!row) { setLoading(false) return; } api().get(requests.cocktails.modal + row) .then((r) => { setCocktail(r.data) setLoading(false) }) .catch(() => { getError(); setLoading(false) closeCocktail(); }) // eslint-disable-next-line }, [row]); if (!row || !cocktail) { return null; } return ( {cocktail.name} {cocktail.rating.rating > 0 && ( {`${cocktail.rating.rating}/5`} ) } Ингредиенты: {cocktail.receipt.map((r) => { const hasError = r.count === null || r.unit === null; const measure = hasError ? r.measure : (r.count + " " + r.unit.name) return ( {user.role !== "USER" && ( selectIngredientHandler(r.ingredient)}> {r.ingredient.isHave ? () : () } )} openIngredientModalHandler(r.ingredient.id)}>{r.ingredient.name} {measure} ) })} Инструкция: {cocktail.instructions} {user.role.includes("ADMIN") && ( )} ) }