Přechody mezi stavy Pizza Day
This commit is contained in:
@@ -69,6 +69,9 @@ export function addPizzaOrder(login: string, pizza: Pizza, size: PizzaSize) {
|
||||
if (!clientData.pizzaDay) {
|
||||
throw Error("Pizza day pro dnešní den neexistuje");
|
||||
}
|
||||
if (clientData.pizzaDay.state !== PizzaDayState.CREATED) {
|
||||
throw Error("Pizza day není ve stavu " + PizzaDayState.CREATED);
|
||||
}
|
||||
let order: Order | undefined = clientData.pizzaDay.orders.find(o => o.customer === login);
|
||||
if (!order) {
|
||||
order = {
|
||||
@@ -79,6 +82,7 @@ export function addPizzaOrder(login: string, pizza: Pizza, size: PizzaSize) {
|
||||
clientData.pizzaDay.orders.push(order);
|
||||
}
|
||||
const pizzaOrder: PizzaOrder = {
|
||||
varId: size.varId,
|
||||
name: pizza.name,
|
||||
size: size.size,
|
||||
price: size.price,
|
||||
@@ -120,6 +124,98 @@ export function removePizzaOrder(login: string, pizzaOrder: PizzaOrder) {
|
||||
return clientData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Uzamkne možnost editovat objednávky pizzy.
|
||||
*
|
||||
* @param login login uživatele
|
||||
* @returns aktuální data pro uživatele
|
||||
*/
|
||||
export function lockPizzaDay(login: string) {
|
||||
const today = formatDate(getToday());
|
||||
const clientData: ClientData = db.get(today);
|
||||
if (!clientData.pizzaDay) {
|
||||
throw Error("Pizza day pro dnešní den neexistuje");
|
||||
}
|
||||
if (clientData.pizzaDay.creator !== login) {
|
||||
throw Error("Pizza day není spravován uživatelem " + login);
|
||||
}
|
||||
if (clientData.pizzaDay.state !== PizzaDayState.CREATED && clientData.pizzaDay.state !== PizzaDayState.ORDERED) {
|
||||
throw Error("Pizza day není ve stavu " + PizzaDayState.CREATED + " nebo " + PizzaDayState.ORDERED);
|
||||
}
|
||||
clientData.pizzaDay.state = PizzaDayState.LOCKED;
|
||||
db.set(today, clientData);
|
||||
return clientData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Odekmne možnost editovat objednávky pizzy.
|
||||
*
|
||||
* @param login login uživatele
|
||||
* @returns aktuální data pro uživatele
|
||||
*/
|
||||
export function unlockPizzaDay(login: string) {
|
||||
const today = formatDate(getToday());
|
||||
const clientData: ClientData = db.get(today);
|
||||
if (!clientData.pizzaDay) {
|
||||
throw Error("Pizza day pro dnešní den neexistuje");
|
||||
}
|
||||
if (clientData.pizzaDay.creator !== login) {
|
||||
throw Error("Pizza day není spravován uživatelem " + login);
|
||||
}
|
||||
if (clientData.pizzaDay.state !== PizzaDayState.LOCKED) {
|
||||
throw Error("Pizza day není ve stavu " + PizzaDayState.LOCKED);
|
||||
}
|
||||
clientData.pizzaDay.state = PizzaDayState.CREATED;
|
||||
db.set(today, clientData);
|
||||
return clientData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Nastaví stav pizza day na "pizzy objednány".
|
||||
*
|
||||
* @param login login uživatele
|
||||
* @returns aktuální data pro uživatele
|
||||
*/
|
||||
export function finishPizzaOrder(login: string) {
|
||||
const today = formatDate(getToday());
|
||||
const clientData: ClientData = db.get(today);
|
||||
if (!clientData.pizzaDay) {
|
||||
throw Error("Pizza day pro dnešní den neexistuje");
|
||||
}
|
||||
if (clientData.pizzaDay.creator !== login) {
|
||||
throw Error("Pizza day není spravován uživatelem " + login);
|
||||
}
|
||||
if (clientData.pizzaDay.state !== PizzaDayState.LOCKED) {
|
||||
throw Error("Pizza day není ve stavu " + PizzaDayState.LOCKED);
|
||||
}
|
||||
clientData.pizzaDay.state = PizzaDayState.ORDERED;
|
||||
db.set(today, clientData);
|
||||
return clientData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Nastaví stav pizza day na "pizzy doručeny".
|
||||
*
|
||||
* @param login login uživatele
|
||||
* @returns aktuální data pro uživatele
|
||||
*/
|
||||
export function finishPizzaDelivery(login: string) {
|
||||
const today = formatDate(getToday());
|
||||
const clientData: ClientData = db.get(today);
|
||||
if (!clientData.pizzaDay) {
|
||||
throw Error("Pizza day pro dnešní den neexistuje");
|
||||
}
|
||||
if (clientData.pizzaDay.creator !== login) {
|
||||
throw Error("Pizza day není spravován uživatelem " + login);
|
||||
}
|
||||
if (clientData.pizzaDay.state !== PizzaDayState.ORDERED) {
|
||||
throw Error("Pizza day není ve stavu " + PizzaDayState.ORDERED);
|
||||
}
|
||||
clientData.pizzaDay.state = PizzaDayState.DELIVERED;
|
||||
db.set(today, clientData);
|
||||
return clientData;
|
||||
}
|
||||
|
||||
export function initIfNeeded() {
|
||||
const today = formatDate(getToday());
|
||||
if (!db.has(today)) {
|
||||
|
||||
Reference in New Issue
Block a user