From 015416c43b8342979fea3b7977d0a1c88baa737c Mon Sep 17 00:00:00 2001 From: "Kayashov.SM" Date: Mon, 25 Aug 2025 18:27:19 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B2=D1=81=D0=B5=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D1=8B=20=D0=BD=D0=B0=20=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front/src/app/pages/BarChangePage.js | 68 +----- .../app/pages/auth/sign-in/telegram-code.js | 18 +- front/src/app/pages/calc/CalcPage.js | 26 +-- .../pages/cocktails/CocktailsPageContent.js | 94 +------- .../app/pages/cocktails/EditCocktailPage.js | 89 ++------ .../pages/ingredients/EditIngredientPage.js | 33 +-- .../app/pages/ingredients/IngredientsPage.js | 35 +-- front/src/components/BarCreateModal.js | 6 +- .../Ingredients/IngredientInfoModal.js | 18 +- front/src/components/auth/sign-in-form.js | 19 +- front/src/components/bar/BarItem.js | 40 ---- front/src/components/bar/BarList.js | 70 ------ .../components/cocktails/CocktailInfoModal.js | 58 +---- .../cocktails/EditCocktailReceipt.js | 16 +- front/src/components/cocktails/FilterBlock.js | 13 +- front/src/lib/clients/AuthClient.js | 36 ++++ front/src/lib/clients/BarClient.js | 63 ++++++ front/src/lib/clients/CategoryClient.js | 19 ++ front/src/lib/clients/CocktailClient.js | 201 ++++++++++++++++++ front/src/lib/clients/GlassClient.js | 17 ++ front/src/lib/clients/IngredientClient.js | 112 ++++++++++ front/src/requests.js | 1 - .../bar/controller/ReceiptController.java | 30 --- 23 files changed, 518 insertions(+), 564 deletions(-) delete mode 100644 front/src/components/bar/BarItem.js delete mode 100644 front/src/components/bar/BarList.js create mode 100644 front/src/lib/clients/BarClient.js create mode 100644 front/src/lib/clients/CategoryClient.js create mode 100644 front/src/lib/clients/CocktailClient.js create mode 100644 front/src/lib/clients/GlassClient.js create mode 100644 front/src/lib/clients/IngredientClient.js delete mode 100644 src/main/java/ru/kayashov/bar/controller/ReceiptController.java diff --git a/front/src/app/pages/BarChangePage.js b/front/src/app/pages/BarChangePage.js index 3af3b93..190f655 100644 --- a/front/src/app/pages/BarChangePage.js +++ b/front/src/app/pages/BarChangePage.js @@ -1,7 +1,5 @@ import Paper from "@mui/material/Paper"; import React, {useEffect, useState} from "react"; -import {api} from "../../lib/clients/api"; -import {requests} from "../../requests"; import {useAlert} from "../../hooks/useAlert"; import {Card} from "@mui/material"; import Stack from "@mui/material/Stack"; @@ -10,76 +8,23 @@ import IconButton from "@mui/material/IconButton"; import Box from "@mui/material/Box"; import DeleteIcon from '@mui/icons-material/Delete'; import ElectricalServicesIcon from '@mui/icons-material/ElectricalServices'; -import {getComparator} from "../../components/core/getComparator"; import Toolbar from "@mui/material/Toolbar"; import AddCircleIcon from '@mui/icons-material/AddCircle'; import {BarCreateModal} from "../../components/BarCreateModal"; import PowerIcon from '@mui/icons-material/Power'; +import {barClient} from "../../lib/clients/BarClient"; export function BarChangePage() { const [bars, setBars] = useState([]) const [open, setOpen] = useState(false) const {createError, createSuccess, createWarning} = useAlert(); - useEffect(() => { - api().get(requests.bar.all) - .then((r) => { - setBars(r.data.sort(getComparator("name"))) - }) - .catch(() => { - createError("Ошибка получения списков") - }) - // eslint-disable-next-line - }, []); - const changeHandler = (bar) => { - createWarning("Дождитесь окончания операции") - api().post(`${requests.bar.change}/${bar.id}`) - .then(() => createSuccess("Список изменен")) - .catch(() => createError("Ошибка изменения активного списка")) + const createHandler = (name) => barClient.createBar(name, bars, createSuccess, createError, setBars, setOpen) - const newState = bars.map((b) => { - if (b.active) { - return { - ...b, active: false - } - } - if (b.id === bar.id) { - return { - ...b, active: true - } - } - return b; - }) - setBars(newState); - } - const deleteHandler = (bar) => { - if (bar.active) { - createError("Нельзя удалить активный бар!") - return; - } - api().delete(requests.bar.crud + bar.id) - .then(() => createSuccess("Список удален")) - .catch(() => createError("Ошибка удаления. Обновите страницу")) - - setBars(bars.filter((b) => b.id !== bar.id)); - } - const createHandler = (name) => { - api().post(requests.bar.crud + name) - .then((r) => { - createSuccess("Cписок создан"); - let state = bars; - state.push(r.data); - setBars(state) - setOpen(false) - }).catch(() => createError("Ошибка создания списка")) - } - - function closeHandler() { - setOpen(false) - } + useEffect(() => barClient.getBarList(setBars, createError), []); return (<> - + Списки ингредиентов (бары) @@ -95,10 +40,11 @@ export function BarChangePage() { } {!b.active && - deleteHandler(b)}> + barClient.deleteBar(b, bars, createError, createSuccess, setBars)}> - changeHandler(b)}> + barClient.changeBar(b.id, bars, createWarning, createSuccess, createError, setBars)}> } diff --git a/front/src/app/pages/auth/sign-in/telegram-code.js b/front/src/app/pages/auth/sign-in/telegram-code.js index 6a3b783..1a2de52 100644 --- a/front/src/app/pages/auth/sign-in/telegram-code.js +++ b/front/src/app/pages/auth/sign-in/telegram-code.js @@ -1,28 +1,14 @@ import * as React from "react"; import {useSearchParams} from "react-router-dom"; import {Loading} from "../../../../components/core/Loading"; -import {api} from "../../../../lib/clients/api"; -import {requests} from "../../../../requests"; import {useAuth} from "../../../../hooks/useAuth"; +import {authClient} from "../../../../lib/clients/AuthClient"; export function TelegramCode() { const [searchParams] = useSearchParams(); const {checkSession} = useAuth(); - let code = searchParams.get("code"); - const request = { - byLogin: false, - code: code - } - api().post(requests.auth.login, request) - .then(async (response) => { - if (response.data.error) { - return; - } - localStorage.setItem("token", response.data.token); - await checkSession?.(); - window.location.reload(); - }) + authClient.loginByCode(searchParams.get("code"), checkSession) return ( diff --git a/front/src/app/pages/calc/CalcPage.js b/front/src/app/pages/calc/CalcPage.js index ebb7468..7f8d254 100644 --- a/front/src/app/pages/calc/CalcPage.js +++ b/front/src/app/pages/calc/CalcPage.js @@ -1,13 +1,12 @@ import Typography from "@mui/material/Typography"; import * as React from "react"; import {useEffect, useMemo} from "react"; -import {api} from "../../../lib/clients/api"; -import {requests} from "../../../requests"; import {useAlert} from "../../../hooks/useAlert"; import Stack from "@mui/material/Stack"; import Box from "@mui/material/Box"; import {CocktailItemCalc} from "./CocktailItemCalc"; import {IngredientCalcCard} from "./IngredientCalcCard"; +import {cocktailClient} from "../../../lib/clients/CocktailClient"; export function CalcPage() { const {createError} = useAlert(); @@ -23,28 +22,7 @@ export function CalcPage() { } useEffect(() => { - if (load) { - return; - } - api().get(requests.cocktails.calc) - .then((r) => { - const data = r.data; - if (data.length === 0) { - setLoad(false); - return; - } - setCocktails(data); - let map = []; - data.map((d) => { - map[d.id] = 1 - }) - setCocktailMap(map); - setLoad(true); - }) - .catch((r) => { - setLoad(true); - createError("Ошибка загрузки данных от сервера Status:" + r.code) - }) + cocktailClient.getCocktailsForCalcPage(load, setLoad, setCocktails, setCocktailMap, createError) // eslint-disable-next-line }, [load]); diff --git a/front/src/app/pages/cocktails/CocktailsPageContent.js b/front/src/app/pages/cocktails/CocktailsPageContent.js index 546eea3..600044b 100644 --- a/front/src/app/pages/cocktails/CocktailsPageContent.js +++ b/front/src/app/pages/cocktails/CocktailsPageContent.js @@ -5,19 +5,16 @@ import {useCallback, useEffect, useState} from "react"; import {Cocktail} from "../../../components/cocktails/Cocktail"; import {Fab, Skeleton} from "@mui/material"; import Box from "@mui/material/Box"; -import {requests} from "../../../requests"; import {NoResult} from "../../../components/cocktails/NoResult"; import {FilterBlock} from "../../../components/cocktails/FilterBlock"; -import {api} from "../../../lib/clients/api"; import {CocktailInfoModal} from "../../../components/cocktails/CocktailInfoModal"; import {useUser} from "../../../hooks/useUser"; import {blue} from "@mui/material/colors"; import UpIcon from "@mui/icons-material/KeyboardArrowUp"; -import {sortList} from "../../../components/cocktails/sortingList"; import {useSelect} from "../../../hooks/useSelect"; import Paper from "@mui/material/Paper"; import CheckMarks from "../../../components/cocktails/CheckMarks"; -import {getComparator} from "../../../components/core/getComparator"; +import {cocktailClient} from "../../../lib/clients/CocktailClient"; const emptyFilter = { search: "", @@ -36,7 +33,6 @@ const emptyFilter = { const CocktailsPageContent = () => { const {user} = useUser(); const {createError, createSuccess} = useAlert(); - const [allowIngredients, setAllowIngredients] = useState([]) const [rows, setRows] = useState([]); const [filter, setFilter] = useState(emptyFilter) const [chips, setChips] = useState([]) @@ -52,36 +48,10 @@ const CocktailsPageContent = () => { if (load || (!isNew && isEnd)) { return false; } - setLoad(true); - const request = { - ...filter, - sort: sortList.find((s) => s.name === filter.sorting).id, - page: page + 1, - size: size, - notHaveCount: Array.isArray(filter.iCount) ? null : filter.iCount - } - api().post(requests.cocktails.menu, request) - .then((r) => { - if (r.data.length === 0) { - if (isNew) { - setRows([]); - } - setIsEnd(true); - setLoad(false); - return; - } - const cocktails = isNew ? r.data : rows.concat(r.data); - setRows(cocktails); - setIsNew(false); - setPage(page + 1); - setLoad(false); - }) - .catch((r) => { - setLoad(false); - createError("Ошибка загрузки данных от сервера Status:" + r.code) - }) + cocktailClient.getMenu(setRows, setIsNew, setPage, setLoad, setIsEnd, isNew, rows, page, size, filter, createError); // eslint-disable-next-line }, [load, isEnd, page]); + useEffect(() => { const handleScroll = () => { const {scrollTop, scrollHeight, clientHeight} = document.documentElement; @@ -93,34 +63,7 @@ const CocktailsPageContent = () => { return () => window.removeEventListener('scroll', handleScroll); // eslint-disable-next-line }, [loading]); - useEffect(() => { - api().get(requests.ingredient.simple) - .then((r) => { - const arr = r.data.filter((i) => i.isHave) - .map((i) => i.name) - setAllowIngredients(arr) - }) - .catch(() => createError("Ошибка получения ингредиентов")) - // eslint-disable-next-line - }, []) - useEffect(() => { - loading(); - // eslint-disable-next-line - }, [filter]) - useEffect(() => { - if (!filter.all) { - return; - } - const ingredients = new Set(); - rows.map((c) => c.components) - .map((c) => c.split(", ")) - .map((c) => c.filter((i) => !allowIngredients.includes(i))) - .filter((nhc) => nhc.length === 1) - .map((fc) => fc[0]) - .forEach((i) => ingredients.add(i)) - setChips(Array.from(ingredients).sort(getComparator())); - // eslint-disable-next-line - }, [rows, allowIngredients]) + useEffect(() => loading(), [filter]) const renderSkeleton = () => { return Array.from({length: 3}, () => null) @@ -142,11 +85,7 @@ const CocktailsPageContent = () => { } return r; }) - api().post(`${requests.cocktails.rating}${row.id}&rating=${value}`) - .then(() => { - setRows(newState); - createSuccess("Спасибо за оценку!") - }).catch(() => createError("Ошибка сохранения")) + cocktailClient.changeRating(row.id, newState, value, setRows, createSuccess, createError) } const handleFilterChange = (filterName, value) => { @@ -172,14 +111,7 @@ const CocktailsPageContent = () => { } return r; }); - let url = `${requests.cocktails.favourite}${row.id}`; - let request = value ? api().put(url) : api().delete(url); - - request - .then(() => { - setRows(newState); - createSuccess("Спасибо за оценку!") - }).catch(() => createError("Ошибка сохранения")) + cocktailClient.changeFavourite(value, row.id, newState, setRows, createSuccess, createError) } const handleFilterClear = () => { setFilter(emptyFilter); @@ -187,17 +119,9 @@ const CocktailsPageContent = () => { setIsEnd(false); setPage(-1); } - const handleSelectCocktail = (row) => { - selectCocktail(row.id) - } - const deleteHandle = (row) => { - api().delete(requests.cocktails.cocktail + row.id) - .then(() => { - setRows(rows.filter((r) => r.id !== row.id)) - createSuccess("Коктейль удален") - }) - .catch(() => createError("Ошибка удаления коктейля")) - } + + const handleSelectCocktail = (row) => selectCocktail(row.id) + const deleteHandle = (row) => cocktailClient.deleteCocktail(row.id, rows, setRows, createSuccess, createError) return ( diff --git a/front/src/app/pages/cocktails/EditCocktailPage.js b/front/src/app/pages/cocktails/EditCocktailPage.js index a0f4642..be6eb9d 100644 --- a/front/src/app/pages/cocktails/EditCocktailPage.js +++ b/front/src/app/pages/cocktails/EditCocktailPage.js @@ -6,18 +6,18 @@ import {useEffect, useState} from "react"; import Paper from "@mui/material/Paper"; import {Autocomplete} from "@mui/material"; import TextField from "@mui/material/TextField"; -import {api} from "../../../lib/clients/api"; -import {requests} from "../../../requests"; import {useAlert} from "../../../hooks/useAlert"; import Stack from "@mui/material/Stack"; import Button from "@mui/material/Button"; import {EditCocktailReceipt} from "../../../components/cocktails/EditCocktailReceipt"; import {SelectEdit} from "../../../components/cocktails/SelectEdit"; -import {getComparator} from "../../../components/core/getComparator"; import {useSearchParams} from "react-router-dom"; import {Loading} from "../../../components/core/Loading"; import CloudUploadIcon from '@mui/icons-material/CloudUpload'; import {styled} from "@mui/material/styles"; +import {cocktailClient} from "../../../lib/clients/CocktailClient"; +import {categoryClient} from "../../../lib/clients/CategoryClient"; +import {glassClient} from "../../../lib/clients/GlassClient"; const emptyCocktail = { id: null, @@ -75,55 +75,15 @@ export function EditCocktailPage() { const [category, setCategory] = useState([]); useEffect(() => { - api().get(requests.cocktails.simple) - .then((r) => { - const arr = r.data.sort(getComparator("asc", "name")); - setCocktails(arr) - - const currentId = searchParams.get("id"); - if (!currentId) { - setLoading(false); - return; - } - const currentCocktail = arr.find((r) => r.id === (currentId * 1)); - if (!currentCocktail) { - setLoading(false); - return; - } - setSelected(currentCocktail.id); - setLoading(false); - }) - .catch(() => createError("Ошибка получения данных")) - - api().get(requests.category.basic) - .then((r) => { - setCategory(r.data.sort(getComparator()) - .map((item, i) => { - return {id: i, name: item} - })) - }) - .catch(() => createError("Ошибка получения категорий")) - - api().get(requests.glass.list) - .then((r) => setGlass(r.data.sort(getComparator()) - .map((item, i) => { - return {id: i, name: item} - }))) - .catch(() => createError("Ошибка получения посуды")) + cocktailClient.getSimpleList(setCocktails, setSelected, setLoading, createError, searchParams.get("id")) + categoryClient.getCategoryList(setCategory, createError); + glassClient.getGlassList(setGlass, createError) // eslint-disable-next-line }, []); - useEffect(() => { - if (!selected) { - setCocktail(emptyCocktail); - return; - } - api().get(requests.cocktails.cocktail + selected) - .then((r) => { - setCocktail(r.data) - }) - .catch(() => getError()); - // eslint-disable-next-line - }, [selected]) + + useEffect(() => cocktailClient.getOneCocktail(selected, setCocktail, getError, emptyCocktail), [selected]) + const saveHandler = () => cocktailClient.saveChangeCocktail(cocktail, createError, createSuccess) + const deleteHandle = () => cocktailClient.deleteCocktailFromEdit(setCocktails, setCocktail, createError, cocktails, cocktail, emptyCocktail) const changeCocktailValue = (name, value) => { if (name === "tags") { @@ -134,25 +94,7 @@ export function EditCocktailPage() { [name]: value })) } - const saveHandler = () => { - api().patch(requests.cocktails.basic, cocktail) - .then((r) => { - if (!r.data.error) { - createSuccess("Сохранено") - return; - } - createError("Ошибка на сервере: " + r.data.error) - }) - .catch(() => createError("Неизвестная ошибка")) - } - const deleteHandle = () => { - api().delete(requests.cocktails.cocktail + cocktail.id) - .then(() => { - setCocktails(cocktails.filter((r) => r.id !== cocktail.id)) - setCocktail(emptyCocktail); - }) - .catch(() => createError("Ошибка удаления коктейля")) - } + return ( {/*Загрузка*/} @@ -208,14 +150,7 @@ export function EditCocktailPage() { { - const file = event.target.files[0]; - let formData = new FormData(); - formData.append('file', file); - api().post(requests.cocktails.photo, formData) - .then((r) => changeCocktailValue("image", r.data)) - .catch(() => getError()) - }} + onChange={(event) => cocktailClient.savePhoto(event, changeCocktailValue, getError)} /> diff --git a/front/src/app/pages/ingredients/EditIngredientPage.js b/front/src/app/pages/ingredients/EditIngredientPage.js index b88dff0..70d5787 100644 --- a/front/src/app/pages/ingredients/EditIngredientPage.js +++ b/front/src/app/pages/ingredients/EditIngredientPage.js @@ -5,8 +5,6 @@ import * as React from "react"; import {useEffect, useState} from "react"; import Paper from "@mui/material/Paper"; import {Autocomplete, FormControl, FormControlLabel, InputLabel} from "@mui/material"; -import {api} from "../../../lib/clients/api"; -import {requests} from "../../../requests"; import {useAlert} from "../../../hooks/useAlert"; import {useSearchParams} from "react-router-dom"; import TextField from "@mui/material/TextField"; @@ -15,7 +13,7 @@ import Stack from "@mui/material/Stack"; import Button from "@mui/material/Button"; import Select from "@mui/material/Select"; import MenuItem from "@mui/material/MenuItem"; -import {getComparator} from "../../../components/core/getComparator"; +import {ingredientClient} from "../../../lib/clients/IngredientClient"; const emptyIngredient = { id: null, @@ -36,25 +34,8 @@ export function EditIngredientPage() { const [ingredient, setIngredient] = useState(emptyIngredient) const {createError, createSuccess} = useAlert(); useEffect(() => { - api().get(requests.ingredient.all) - .then((r) => { - const arr = r.data.sort(getComparator("asc", "name")); - setIngredients(arr) - - const currentId = searchParams.get("id"); - if (!currentId) { - return; - } - const currentIngredient = arr.find((r) => r.id === (currentId * 1)); - if (!currentIngredient) { - return; - } - setIngredient(currentIngredient); - }) - .catch(() => createError("Ошибка получения данных")) - - api().get(requests.ingredient.type) - .then((r) => setTypes(r.data.sort(getComparator("asc", "name")))) + ingredientClient.allList(searchParams.get("id"), setIngredients, setIngredient, createError) + ingredientClient.getType(setTypes) // eslint-disable-next-line }, []); @@ -64,11 +45,6 @@ export function EditIngredientPage() { [name]: value })) } - const saveIngredientHandler = () => { - api().patch(requests.ingredient.crud, ingredient) - .then(() => createSuccess("Ингредиент сохранен")) - .catch(() => createError("Ошибка сохранения")) - } return ( @@ -158,7 +134,8 @@ export function EditIngredientPage() { - + ) diff --git a/front/src/app/pages/ingredients/IngredientsPage.js b/front/src/app/pages/ingredients/IngredientsPage.js index 9e9061b..ea0f23c 100644 --- a/front/src/app/pages/ingredients/IngredientsPage.js +++ b/front/src/app/pages/ingredients/IngredientsPage.js @@ -8,10 +8,8 @@ import SearchIcon from "@mui/icons-material/Search"; import * as React from "react"; import {useEffect, useMemo, useState} from "react"; import {Loading} from "../../../components/core/Loading"; -import {requests} from "../../../requests"; import {useAlert} from "../../../hooks/useAlert"; import {IngredientInfoModal} from "../../../components/Ingredients/IngredientInfoModal"; -import {api} from "../../../lib/clients/api"; import Tab from "@mui/material/Tab"; import {a11yProps} from "../../../components/core/tabProps"; import {CustomTabPanel} from "../../../components/core/TabPanel"; @@ -19,6 +17,7 @@ import {IngredientList} from "../../../components/Ingredients/IngredientList"; import {blue} from "@mui/material/colors"; import UpIcon from "@mui/icons-material/KeyboardArrowUp"; import {useSelect} from "../../../hooks/useSelect"; +import {ingredientClient} from "../../../lib/clients/IngredientClient"; export function IngredientsPage() { const [value, setValue] = React.useState(0); @@ -30,15 +29,7 @@ export function IngredientsPage() { const {createError, createSuccess} = useAlert(); useEffect(() => { - api().get(requests.ingredient.all) - .then((r) => { - setIngredients(r.data) - setLoading(false); - }) - .catch(() => { - createError("Ошибка получения списка ингредиентов"); - setLoading(false); - }) + ingredientClient.getAllIngredients(setIngredients, setLoading, createError) // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -63,26 +54,12 @@ export function IngredientsPage() { return ingredient; } }) - const url = `${requests.ingredient.crud}?id=${row.id}`; - const request = value ? api().put(url) : api().delete(url); - request - .then(() => { - setIngredients(newState); - }) - .catch(() => { - createError("Ошибка изменения ингредиента"); - }); - } - const handleOpenModal = (i) => { - selectIngredient(i) + ingredientClient.changeIngredientIsHave(row.id, value, newState, setIngredients, createError) } const handleDelete = (id) => { const newState = ingredients.filter((ingredient) => ingredient.id !== id); setIngredients(newState) - - api().delete(`${requests.ingredient.crud}/${id}`) - .then((r) => createSuccess("Ингредиент удален")) - .catch(() => createError("Ошибка удаления ингредиента. Перезагрузите страницу")) + ingredientClient.deleteIngredientIsHave(id, createSuccess, createError) } return ( @@ -118,11 +95,11 @@ export function IngredientsPage() { + infoHandler={selectIngredient}/> + infoHandler={selectIngredient}/> setOpen(false)} sx={{ '& .MuiDialog-paper': { margin: '8px', diff --git a/front/src/components/Ingredients/IngredientInfoModal.js b/front/src/components/Ingredients/IngredientInfoModal.js index 65c7ec6..0d8c769 100644 --- a/front/src/components/Ingredients/IngredientInfoModal.js +++ b/front/src/components/Ingredients/IngredientInfoModal.js @@ -4,17 +4,16 @@ import DialogContent from "@mui/material/DialogContent"; import DialogActions from "@mui/material/DialogActions"; import Button from "@mui/material/Button"; import * as React from "react"; +import {useEffect, useState} from "react"; import Stack from "@mui/material/Stack"; import Typography from "@mui/material/Typography"; import List from "@mui/material/List"; -import {useEffect, useState} from "react"; -import {api} from "../../lib/clients/api"; -import {requests} from "../../requests"; import {useAlert} from "../../hooks/useAlert"; import ListItem from "@mui/material/ListItem"; import {useSelect} from "../../hooks/useSelect"; import {IngredientAlert} from "./IngredientAlert"; import {useUser} from "../../hooks/useUser"; +import {cocktailClient} from "../../lib/clients/CocktailClient"; export function IngredientInfoModal({ingredient, handleDelete}) { const {user} = useUser(); @@ -28,11 +27,7 @@ export function IngredientInfoModal({ingredient, handleDelete}) { }; useEffect(() => { - if(!ingredient) { - return - } - api().get(requests.cocktails.byIngredient + ingredient.id) - .then((r) => setCocktails(r.data)) + cocktailClient.getCocktailByIngredient(ingredient, setCocktails) .catch(() => createError()) // eslint-disable-next-line }, [ingredient]); @@ -59,7 +54,7 @@ export function IngredientInfoModal({ingredient, handleDelete}) { {cocktails.length > 0 && ( <> - Коктейли: + Коктейли: {cocktails.map((c) => { return ( @@ -69,7 +64,7 @@ export function IngredientInfoModal({ingredient, handleDelete}) { }}> {c.name} - {c.name} + {c.name} {c.rating.rating > 0 && {`${c.rating.rating}/5`}} @@ -83,7 +78,8 @@ export function IngredientInfoModal({ingredient, handleDelete}) { {user.role !== 'USER' && } - + ); } \ No newline at end of file diff --git a/front/src/components/auth/sign-in-form.js b/front/src/components/auth/sign-in-form.js index 4bfda97..c98bb59 100644 --- a/front/src/components/auth/sign-in-form.js +++ b/front/src/components/auth/sign-in-form.js @@ -10,9 +10,8 @@ import Button from "@mui/material/Button"; import CircularProgress from "@mui/material/CircularProgress"; import Box from "@mui/material/Box"; import {red} from "@mui/material/colors"; -import {requests} from "../../requests"; import {useAuth} from "../../hooks/useAuth"; -import {api} from "../../lib/clients/api"; +import {authClient} from "../../lib/clients/AuthClient"; const emptyRequest = { byLogin: true, @@ -38,21 +37,9 @@ export function SignInForm() { }), }; const handleButtonClick = async () => { - setLoading(true); - const response = await api().post(requests.auth.login, request); - - if (response.data.error) { - setError(response.data.error); - setLoading(false); - return; - } - - localStorage.setItem("token", response.data.token); - - await checkSession?.(); - - window.location.reload(); + await authClient.login(request, setLoading, setError, checkSession) } + const renderByCode = () => { return ( diff --git a/front/src/components/bar/BarItem.js b/front/src/components/bar/BarItem.js deleted file mode 100644 index d33b423..0000000 --- a/front/src/components/bar/BarItem.js +++ /dev/null @@ -1,40 +0,0 @@ -import {Card} from "@mui/material"; -import Stack from "@mui/material/Stack"; -import Box from "@mui/material/Box"; -import React from "react"; -import Typography from "@mui/material/Typography"; -import Button from "@mui/material/Button"; - -const role = (myRole) => { - switch (myRole) { - case "ADMIN": - return "Администратор"; - case "ADMIN_NOT_BARMEN": - return "Управляющий"; - default: - return null; - } -} - -export function BarItem({row, changeHandler, all, enterExist}) { - return ( - - - - {row.name} - {role(row.myRole)} - - - {row.open ? "Бар открыт" : "Бар закрыт"} - - - - - ) -} \ No newline at end of file diff --git a/front/src/components/bar/BarList.js b/front/src/components/bar/BarList.js deleted file mode 100644 index 005de9b..0000000 --- a/front/src/components/bar/BarList.js +++ /dev/null @@ -1,70 +0,0 @@ -import Box from "@mui/material/Box"; -import {useEffect, useMemo, useState} from "react"; -import {api} from "../../lib/clients/api"; -import {requests} from "../../requests"; -import {useAlert} from "../../hooks/useAlert"; -import {BarItem} from "./BarItem"; -import {Loading} from "../core/Loading"; -import * as React from "react"; -import {useUser} from "../../hooks/useUser"; - -export function BarList({all}) { - const {getError, createError} = useAlert(); - const {refresh} = useUser(); - const [bars, setBars] = useState([]); - const [loading, setLoading] = useState(true); - - useEffect(() => { - setLoading(true); - api().get(`${requests.bar.all}?my=${!all}`) - .then((r) => { - setBars(r.data) - setLoading(false); - }) - .catch(() => getError()) - // eslint-disable-next-line - }, []); - const enterExist = useMemo(() => bars.find((b) => b.enter), [bars]) - const changeHandler = (row, value) => { - let request; - let newState; - if (!all) { - if (value && enterExist) { - //todo: добавить переключение - createError("Нельзя войти более чем в один бар одновременно") - return; - } - request = api().patch(`${requests.bar.enter}${row.id}&value=${value}`); - newState = bars.map((b) => { - if (b.id !== row.id) { - return b; - } - return { - ...b, - enter: value - } - }) - } else { - request = api().post(requests.bar.addToMyList, row); - newState = bars.filter((b) => b.id !== row.id); - } - request.then(() => { - setBars(newState) - refresh(); - }).catch(() => getError()) - } - return ( - - { - bars.map((row) => { - return ( - - ) - }) - } - {/*Загрузчик*/} - - - ) -} \ No newline at end of file diff --git a/front/src/components/cocktails/CocktailInfoModal.js b/front/src/components/cocktails/CocktailInfoModal.js index 4d1887e..63fab9d 100644 --- a/front/src/components/cocktails/CocktailInfoModal.js +++ b/front/src/components/cocktails/CocktailInfoModal.js @@ -15,13 +15,13 @@ 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"; +import {cocktailClient} from "../../lib/clients/CocktailClient"; +import {ingredientClient} from "../../lib/clients/IngredientClient"; export function CocktailInfoModal({row}) { const {user} = useUser(); @@ -29,56 +29,8 @@ export function CocktailInfoModal({row}) { 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.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("Ошибка сохранения")) - } - 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]); + useEffect(() => cocktailClient.getCocktailForModal(row, setLoading, setCocktail, closeCocktail, getError), [row]); if (!row || !cocktail) { return null; @@ -134,7 +86,7 @@ export function CocktailInfoModal({row}) { {(user.role && user.role !== "USER") && ( selectIngredientHandler(r.ingredient)}> + onClick={() => ingredientClient.changeIngredientInBar(r.ingredient, cocktail, setCocktail, createSuccess, createError)}> {r.ingredient.isHave ? () : () @@ -142,7 +94,7 @@ export function CocktailInfoModal({row}) { )} openIngredientModalHandler(r.ingredient.id)}>{r.ingredient.name} + onClick={() => ingredientClient.findOne(r.ingredient.id, selectIngredient, createError)}>{r.ingredient.name} {measure} diff --git a/front/src/components/cocktails/EditCocktailReceipt.js b/front/src/components/cocktails/EditCocktailReceipt.js index 81be8d4..847eaf5 100644 --- a/front/src/components/cocktails/EditCocktailReceipt.js +++ b/front/src/components/cocktails/EditCocktailReceipt.js @@ -6,13 +6,11 @@ import AddIcon from "@mui/icons-material/Add"; import * as React from "react"; import {useEffect, useState} from "react"; import {useAlert} from "../../hooks/useAlert"; -import {api} from "../../lib/clients/api"; -import {requests} from "../../requests"; -import {getComparator} from "../core/getComparator"; import {Card} from "@mui/material"; import {SelectEdit} from "./SelectEdit"; import TextField from "@mui/material/TextField"; import DeleteForeverIcon from '@mui/icons-material/DeleteForever'; +import {ingredientClient} from "../../lib/clients/IngredientClient"; export function EditCocktailReceipt({receipt, handler}) { const {createError} = useAlert() @@ -20,13 +18,8 @@ export function EditCocktailReceipt({receipt, handler}) { const [units, setUnits] = useState([]) useEffect(() => { - api().get(requests.ingredient.all) - .then((r) => setIngredients(r.data.sort(getComparator("asc", "name")))) - .catch(() => createError("Ошибка получения списка ингредиентов")) - - api().get(requests.unit) - .then((r) => setUnits(r.data.sort(getComparator("asc", "name")))) - .catch(() => createError("Ошибка получения единиц измерения")) + ingredientClient.findAll(setIngredients, createError) + ingredientClient.findUnit(setUnits, createError) // eslint-disable-next-line }, []); @@ -153,7 +146,8 @@ export function EditCocktailReceipt({receipt, handler}) { value={r.count} onChange={(e) => countHandler(i, e.target.value)} /> - diff --git a/front/src/components/cocktails/FilterBlock.js b/front/src/components/cocktails/FilterBlock.js index bbddeda..c1b668d 100644 --- a/front/src/components/cocktails/FilterBlock.js +++ b/front/src/components/cocktails/FilterBlock.js @@ -10,9 +10,9 @@ import CheckMarks from "./CheckMarks"; import Button from "@mui/material/Button"; import * as React from "react"; import {useEffect, useState} from "react"; -import {requests} from "../../requests"; import {useAlert} from "../../hooks/useAlert"; -import {api} from "../../lib/clients/api"; +import {categoryClient} from "../../lib/clients/CategoryClient"; +import {glassClient} from "../../lib/clients/GlassClient"; export function FilterBlock({filter, handleFilterChange, handleClearFilter, barmen}) { const {createError} = useAlert(); @@ -23,13 +23,8 @@ export function FilterBlock({filter, handleFilterChange, handleClearFilter, barm const sort = ['Название по возрастанию', 'Название по убыванию']; useEffect(() => { - api().get(requests.category.basic) - .then((r) => setCategory(r.data)) - .catch(() => createError("Ошибка получения категорий")) - - api().get(requests.glass.list) - .then((r) => setGlass(r.data)) - .catch(() => createError("Ошибка получения посуды")) + categoryClient.getCategoryList(setCategory, createError) + glassClient.getGlassList(setGlass, createError) // eslint-disable-next-line }, []); diff --git a/front/src/lib/clients/AuthClient.js b/front/src/lib/clients/AuthClient.js index f658a3d..f2e1604 100644 --- a/front/src/lib/clients/AuthClient.js +++ b/front/src/lib/clients/AuthClient.js @@ -1,9 +1,45 @@ +import {api} from "./api"; +import {requests} from "../../requests"; + class AuthClient { async signOut() { localStorage.removeItem("token"); return {}; } + + async login(request, setLoading, setError, checkSession) { + setLoading(true); + const response = await api().post(requests.auth.login, request); + + if (response.data.error) { + setError(response.data.error); + setLoading(false); + return; + } + + localStorage.setItem("token", response.data.token); + + await checkSession?.(); + + window.location.reload(); + } + + loginByCode(code, checkSession) { + const request = { + byLogin: false, + code: code + } + api().post(requests.auth.login, request) + .then(async (response) => { + if (response.data.error) { + return; + } + localStorage.setItem("token", response.data.token); + await checkSession?.(); + window.location.reload(); + }) + } } export const authClient = new AuthClient(); diff --git a/front/src/lib/clients/BarClient.js b/front/src/lib/clients/BarClient.js new file mode 100644 index 0000000..c13a669 --- /dev/null +++ b/front/src/lib/clients/BarClient.js @@ -0,0 +1,63 @@ +import {api} from "./api"; +import {requests} from "../../requests"; +import {getComparator} from "../../components/core/getComparator"; + +class BarClient { + + getBarList(setBars, createError) { + api().get(requests.bar.all) + .then((r) => { + setBars(r.data.sort(getComparator("name"))) + }) + .catch(() => { + createError("Ошибка получения списков") + }) + } + + changeBar(id, bars, createWarning, createSuccess, createError, setBars) { + createWarning("Дождитесь окончания операции") + api().post(`${requests.bar.change}/${id}`) + .then(() => createSuccess("Список изменен")) + .catch(() => createError("Ошибка изменения активного списка")) + + const newState = bars.map((b) => { + if (b.active) { + return { + ...b, active: false + } + } + if (b.id === id) { + return { + ...b, active: true + } + } + return b; + }) + setBars(newState); + } + + deleteBar(bar, bars, createError, createSuccess, setBars) { + if (bar.active) { + createError("Нельзя удалить активный бар!") + return; + } + api().delete(requests.bar.crud + bar.id) + .then(() => createSuccess("Список удален")) + .catch(() => createError("Ошибка удаления. Обновите страницу")) + + setBars(bars.filter((b) => b.id !== bar.id)); + } + + createBar(name, bars, createSuccess, createError, setBars, setOpen) { + api().post(requests.bar.crud + name) + .then((r) => { + createSuccess("Cписок создан"); + let state = bars; + state.push(r.data); + setBars(state) + setOpen(false) + }).catch(() => createError("Ошибка создания списка")) + } +} + +export const barClient = new BarClient(); \ No newline at end of file diff --git a/front/src/lib/clients/CategoryClient.js b/front/src/lib/clients/CategoryClient.js new file mode 100644 index 0000000..c539140 --- /dev/null +++ b/front/src/lib/clients/CategoryClient.js @@ -0,0 +1,19 @@ +import {api} from "./api"; +import {requests} from "../../requests"; +import {getComparator} from "../../components/core/getComparator"; + +class CategoryClient { + + getCategoryList(setCategory, createError) { + api().get(requests.category.basic) + .then((r) => { + setCategory(r.data.sort(getComparator()) + .map((item, i) => { + return {id: i, name: item} + })) + }) + .catch(() => createError("Ошибка получения категорий")) + } +}; + +export const categoryClient = new CategoryClient(); \ No newline at end of file diff --git a/front/src/lib/clients/CocktailClient.js b/front/src/lib/clients/CocktailClient.js new file mode 100644 index 0000000..f684c18 --- /dev/null +++ b/front/src/lib/clients/CocktailClient.js @@ -0,0 +1,201 @@ +import {api} from "./api"; +import {requests} from "../../requests"; +import {sortList} from "../../components/cocktails/sortingList"; +import {getComparator} from "../../components/core/getComparator"; + +class CocktailClient { + emptyCocktailForEditPage = { + id: null, + name: "", + alcoholic: "", + category: "", + components: "", + glass: "", + image: "", + instructions: "", + isAllowed: false, + rating: { + rating: 0, + favourite: false + }, + receipt: [], + tags: "", + video: "" + } + + getMenu(setRows, setIsNew, setPage, setLoad, setIsEnd, isNew, rows, page, size, filter, createError) { + setLoad(true); + + const request = { + ...filter, + sort: sortList.find((s) => s.name === filter.sorting).id, + page: page + 1, + size: size, + notHaveCount: Array.isArray(filter.iCount) ? null : filter.iCount + } + + api().post(requests.cocktails.menu, request) + .then((r) => { + if (r.data.length === 0) { + if (isNew) { + setRows([]); + } + setIsEnd(true); + setLoad(false); + return; + } + const cocktails = isNew ? r.data : rows.concat(r.data); + setRows(cocktails); + setIsNew(false); + setPage(page + 1); + setLoad(false); + }) + .catch((r) => { + setLoad(false); + createError("Ошибка загрузки данных от сервера Status:" + r.code) + }) + } + + async getCocktailByIngredient(ingredient, setCocktails) { + if(!ingredient) { + return + } + api().get(requests.cocktails.byIngredient + ingredient.id) + .then((r) => setCocktails(r.data)) + } + + getCocktailsForCalcPage(load,setLoad, setCocktails, setCocktailMap, createError) { + if (load) { + return; + } + api().get(requests.cocktails.calc) + .then((r) => { + const data = r.data; + if (data.length === 0) { + setLoad(false); + return; + } + setCocktails(data); + let map = []; + map = data.map((d) => map[d.id] = 1) + setCocktailMap(map); + setLoad(true); + }) + .catch((r) => { + setLoad(true); + createError("Ошибка загрузки данных от сервера Status:" + r.code) + }) + } + + savePhoto(event, changeCocktailValue, getError) { + const file = event.target.files[0]; + let formData = new FormData(); + formData.append('file', file); + api().post(requests.cocktails.photo, formData) + .then((r) => changeCocktailValue("image", r.data)) + .catch(() => getError()) + } + + deleteCocktailFromEdit(setCocktails, setCocktail, createError, cocktails, cocktail, emptyCocktail) { + api().delete(requests.cocktails.cocktail + cocktail.id) + .then(() => { + setCocktails(cocktails.filter((r) => r.id !== cocktail.id)) + setCocktail(emptyCocktail); + }) + .catch(() => createError("Ошибка удаления коктейля")) + } + + deleteCocktail(id, rows, setRows, createSuccess, createError) { + api().delete(requests.cocktails.cocktail + id) + .then(() => { + setRows(rows.filter((r) => r.id !== id)) + createSuccess("Коктейль удален") + }) + .catch(() => createError("Ошибка удаления коктейля")) + } + + saveChangeCocktail (cocktail, createError, createSuccess) { + api().patch(requests.cocktails.basic, cocktail) + .then((r) => { + if (!r.data.error) { + createSuccess("Сохранено") + return; + } + createError("Ошибка на сервере: " + r.data.error) + }) + .catch(() => createError("Неизвестная ошибка")) + } + + getOneCocktail (selected, setCocktail, getError, emptyCocktail) { + if (!selected) { + setCocktail(emptyCocktail); + return; + } + api().get(requests.cocktails.cocktail + selected) + .then((r) => { + setCocktail(r.data) + }) + .catch(() => getError()); + } + + getSimpleList(setCocktails, setSelected, setLoading, createError, currentId) { + api().get(requests.cocktails.simple) + .then((r) => { + const arr = r.data.sort(getComparator("asc", "name")); + setCocktails(arr) + + if (!currentId) { + setLoading(false); + return; + } + const currentCocktail = arr.find((r) => r.id === (currentId * 1)); + if (!currentCocktail) { + setLoading(false); + return; + } + setSelected(currentCocktail.id); + setLoading(false); + }) + .catch(() => createError("Ошибка получения данных")) + } + + getCocktailForModal (row, setLoading, setCocktail, closeCocktail, getError) { + 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(); + }) + } + + changeFavourite(value, id, newState, setRows, createSuccess, createError) { + const url = `${requests.cocktails.favourite}${id}`; + const request = value ? api().put(url) : api().delete(url); + + request + .then(() => { + setRows(newState); + createSuccess("Спасибо за оценку!") + }).catch(() => createError("Ошибка сохранения")) + } + + changeRating(id, newState, value, setRows, createSuccess, createError) { + api().post(`${requests.cocktails.rating}${id}&rating=${value}`) + .then(() => { + setRows(newState); + createSuccess("Спасибо за оценку!") + }).catch(() => createError("Ошибка сохранения")) + } + +} + +export const cocktailClient = new CocktailClient(); \ No newline at end of file diff --git a/front/src/lib/clients/GlassClient.js b/front/src/lib/clients/GlassClient.js new file mode 100644 index 0000000..91c1ccd --- /dev/null +++ b/front/src/lib/clients/GlassClient.js @@ -0,0 +1,17 @@ +import {api} from "./api"; +import {requests} from "../../requests"; +import {getComparator} from "../../components/core/getComparator"; + +class GlassClient { + + getGlassList(setGlass, createError) { + api().get(requests.glass.list) + .then((r) => setGlass(r.data.sort(getComparator()) + .map((item, i) => { + return {id: i, name: item} + }))) + .catch(() => createError("Ошибка получения посуды")) + } +} + +export const glassClient = new GlassClient(); \ No newline at end of file diff --git a/front/src/lib/clients/IngredientClient.js b/front/src/lib/clients/IngredientClient.js new file mode 100644 index 0000000..5fa3d13 --- /dev/null +++ b/front/src/lib/clients/IngredientClient.js @@ -0,0 +1,112 @@ +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.bar.ingredient}?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() \ No newline at end of file diff --git a/front/src/requests.js b/front/src/requests.js index 2fa6352..4776c9d 100644 --- a/front/src/requests.js +++ b/front/src/requests.js @@ -37,7 +37,6 @@ export const requests = { modal: routes.cocktail + "/modal?id=", favourite: routes.cocktail + "/favourite?id=", rating: routes.cocktail + "/rating?id=", - receipts: routes.cocktail + "/receipts?id=", }, glass: { list: routes.glass, diff --git a/src/main/java/ru/kayashov/bar/controller/ReceiptController.java b/src/main/java/ru/kayashov/bar/controller/ReceiptController.java deleted file mode 100644 index d3a2214..0000000 --- a/src/main/java/ru/kayashov/bar/controller/ReceiptController.java +++ /dev/null @@ -1,30 +0,0 @@ -package ru.kayashov.bar.controller; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import ru.kayashov.bar.controller.dto.cocktail.ReceiptResponseDto; -import ru.kayashov.bar.service.ReceiptService; - -import javax.annotation.security.PermitAll; -import java.util.List; - -@Slf4j -@CrossOrigin(origins = {"*"}) -@RestController -@RequestMapping("/api/receipt") -@RequiredArgsConstructor -public class ReceiptController { - - private final ReceiptService receiptService; - - @PermitAll - @GetMapping - public List getReceipt(@RequestParam("id") Long id) { - return receiptService.getReceiptList(id); - } -}