Možnost přidat k objednávce poznámku

This commit is contained in:
2023-06-17 10:44:12 +02:00
parent 26337121de
commit 67242c48df
9 changed files with 97 additions and 24 deletions

View File

@@ -1,7 +1,7 @@
import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
import { EVENT_DISCONNECT, EVENT_MESSAGE, SocketContext } from './context/socket';
import { addPizza, createPizzaDay, deletePizzaDay, finishDelivery, finishOrder, getData, getFood, getPizzy, getQrUrl, lockPizzaDay, removePizza, unlockPizzaDay, updateChoice } from './Api';
import { addPizza, createPizzaDay, deletePizzaDay, finishDelivery, finishOrder, getData, getFood, getPizzy, getQrUrl, lockPizzaDay, removePizza, unlockPizzaDay, updateChoice, updateNote } from './Api';
import { useAuth } from './context/auth';
import Login from './Login';
import { Locations, ClientData, Pizza, PizzaOrder, State, Order } from './Types';
@@ -29,6 +29,7 @@ function App() {
const [myOrder, setMyOrder] = useState<Order>();
const socket = useContext(SocketContext);
const choiceRef = useRef<HTMLSelectElement>(null);
const poznamkaRef = useRef<HTMLInputElement>(null);
// Prvotní načtení aktuálního stavu
useEffect(() => {
@@ -83,9 +84,7 @@ function App() {
useEffect(() => {
if (data?.pizzaDay?.orders) {
const myOrder = data.pizzaDay.orders.find(o => o.customer === auth?.login);
if (myOrder) {
setMyOrder(myOrder);
}
setMyOrder(myOrder);
}
}, [data?.pizzaDay?.orders])
@@ -131,9 +130,19 @@ function App() {
}
}
const handlePizzaDelete = (pizzaOrder: PizzaOrder) => {
const handlePizzaDelete = async (pizzaOrder: PizzaOrder) => {
if (auth?.login) {
removePizza(auth?.login, pizzaOrder);
await removePizza(auth?.login, pizzaOrder);
}
}
const handlePoznamkaChange = async () => {
if (auth?.login) {
if (poznamkaRef.current?.value && poznamkaRef.current.value.length > 100) {
alert("Poznámka může mít maximálně 100 znaků");
return;
}
updateNote(auth.login, poznamkaRef.current?.value);
}
}
@@ -198,6 +207,7 @@ function App() {
<ul>
<li>Nová žárovka zatím funguje</li>
<li>Funkční generování a zobrazení QR kódů pro Pizza day</li>
<li>Možnost zadat k Pizza day objednávce poznámku</li>
</ul>
</Alert>
<h1 className='title'>Dnes je {data.date}</h1>
@@ -260,7 +270,10 @@ function App() {
{
data.pizzaDay.state === State.CREATED &&
<div>
<p>Pizza Day je založen a spravován uživatelem {data.pizzaDay.creator}.<br />Můžete upravovat své objednávky.</p>
<p>
Pizza Day je založen a spravován uživatelem {data.pizzaDay.creator}.<br />
Můžete upravovat své objednávky.
</p>
{
data.pizzaDay.creator === auth.login &&
<>
@@ -275,18 +288,22 @@ function App() {
</div>
}
{
data.pizzaDay.state === State.LOCKED && data.pizzaDay.creator === auth.login &&
data.pizzaDay.state === State.LOCKED &&
<div>
<p>Objednávky jsou uzamčeny uživatelem {data.pizzaDay.creator}</p>
<Button className='danger mb-3' title="Umožní znovu editovat objednávky." onClick={async () => {
await unlockPizzaDay(auth.login);
}}>Odemknout</Button>
{/* <Button className='danger mb-3' style={{ marginLeft: '20px' }} onClick={async () => {
{data.pizzaDay.creator === auth.login &&
<>
<Button className='danger mb-3' title="Umožní znovu editovat objednávky." onClick={async () => {
await unlockPizzaDay(auth.login);
}}>Odemknout</Button>
{/* <Button className='danger mb-3' style={{ marginLeft: '20px' }} onClick={async () => {
await addToCart();
}}>Přidat vše do košíku</Button> */}
<Button className='danger mb-3' style={{ marginLeft: '20px' }} title={noOrders ? "Nelze objednat - neexistuje žádná objednávka" : "Použij po objednání. Objednávky zůstanou zamčeny."} disabled={noOrders} onClick={async () => {
await finishOrder(auth.login);
}}>Objednáno</Button>
<Button className='danger mb-3' style={{ marginLeft: '20px' }} title={noOrders ? "Nelze objednat - neexistuje žádná objednávka" : "Použij po objednání. Objednávky zůstanou zamčeny."} disabled={noOrders} onClick={async () => {
await finishOrder(auth.login);
}}>Objednáno</Button>
</>
}
</div>
}
{
@@ -312,13 +329,27 @@ function App() {
</div>
}
</div>
<SelectSearch
search={true}
options={pizzaSuggestions}
placeholder='Vyhledat pizzu...'
onChange={handlePizzaChange}
disabled={data.pizzaDay.state !== State.CREATED}
/>
{data.pizzaDay.state === State.CREATED &&
<div style={{ textAlign: 'center' }}>
<SelectSearch
search={true}
options={pizzaSuggestions}
placeholder='Vyhledat pizzu...'
onChange={handlePizzaChange}
/>
Poznámka: <input ref={poznamkaRef} className='mt-3' type="text" onKeyDown={event => {
if (event.key === 'Enter') {
handlePoznamkaChange();
}
}} />
<Button
style={{ marginLeft: '20px' }}
disabled={!myOrder?.pizzaList?.length}
onClick={handlePoznamkaChange}>
Uložit
</Button>
</div>
}
<PizzaOrderList state={data.pizzaDay.state} orders={data.pizzaDay.orders} onDelete={handlePizzaDelete} />
{
data.pizzaDay.state === State.DELIVERED && myOrder?.hasQr &&