[CZ] Endpointy a byznis logika - Rades98/AlzaCaseStudy GitHub Wiki

Objednávky

  • Id - Unikátní identifikátor - časem by bylo vhodné nahradit OrderCode
  • OrderCode - kód použitelný jako var. symbol
  • Total - celková cena
  • UserId - Id uživatele
  • OrderStatusId - stav objednávky

Endpointy

HTTP Verb Cesta Popis
GET orders Dotažení všech objednávek pro uživatele
GET orders{statusId} Dotažení všech objednávek pro uživatele, které mají odpovídající status
PUT orders Vytvoření nové objednávky
PATCH orders{Id, OrderStatusId} Změna stavu objednávky
DELETE orders{Id} Zrušení objednávky

Vytvoření objednávky

Vytvoření objednávky neblokuje žádné zboží, jen se musí vygenerovat číslo objednávky podle toho, jaké je poslední. formát je 5 písmen a 5 čísel.

Vytvoření čísla objednávky

Z db se načte poslední číslo objednávky a inkrementuje se jeho hodnota, pokud se dojde do stavu, kdy se vyčerpá všech 5 číselných pozic, zvýší se poslední písmeno... A -> B a čísla se se nastaví na 0000. Tak samo se postupuje u písmen. Je necelých 31 x 10^12 volných kódů.

Status objednávky

Název EN CZ Vysvětlení
Delivered Doručeno Objednávka byla doručena a je považována za vyřízenou. V DB drží kvůli případné reklamaci.
WaitingForPayment Čeká se na platbu Objednávka byla zaplacena, sklad už se mohl pohnout
Created Vytvořeno Objednávka byla vytvořena, čeká se na zadání adresy atp
InExpedition V expedici Objednávka byla vyexpedována
Canceled Zrušeno Objednávka byla zrušena - čas uvolnit zboží, jenž bylo rezervováno pro objednávku
New Nová Nová objednávka, kdy se ještě může přidat další zboží

Životní cyklus objednávky

  1. Objednávka se vytvoří zavoláním endpointu - stav "New"
  2. Postupně se do tabulky OrderItems přidávají položky košíku (Id objednávky a zboží) - s prvním přidáním se mění stav na "Created"
  3. Jakmile se v košíku přejde k platbě, stav se musí změnit na "WaitingForPayment"
  4. Po obdržení platby se změní na "InExpedition"
  5. Při předání na "Delivered"
  6. V případě zrušení objednávky se stav mění na Canceled (v tomto případě se mažou záznamy z OrderItems pro Id objednávky)

Do budoucna by možná bylo vhodné vytvořit tabulku s kódy produktů, jenž byly ve zrušené objednávce, pro možnost zakoupení znovu.

Položky objednávek

  • Id - Id
  • OrderId - Id objednávky
  • ProductId - Id produktu

Přidání a odebrání produktů z objednávek probíhá tak, že se vytvoří záznam v této tabulce. V případě, že se objednávka zruší, musí se všechny záznamy pro danou objednávku z této tabulky smazat, neboť i na základě této tabulky se určuje kapacita zboží na skladu.

Endpointy

HTTP Verb Cesta Popis
PUT orderItem{productCode} Přidá položku do objednávky
DELETE orderItem{productCode} Odebere položku z objednávky

Produkty

Produkt jako takový je popsán ve třech tabulkách.

Products

Zde je pouze ID produktu, bylo by vhodné přidat také sériové číslo a Id detailu. Tato logika zajišťuje to, že je zbytečné mít milion stejných záznamů s ruzným ID.

ProductDetails

Tato tabulka obsahuje vše potřebné pro náhledovou kartu produktu.

  • ImgUrl - náhledový obrázek (měl by být uložen na nějakém dostupném místě pro web)
  • Name - název
  • Price - cena
  • Description - popis
  • ProductCategoryId - Id kategorie

Endpointy

HTTP Verb Cesta Popis
GET productDetails Dotažení všech produktů
GET productDetails{categoryId, sub} Dotažení všech produktů podle kategorie případně i subkategorie
PATCH productDetails{Id, newDesc} Částečný update - změna popisu

ProductDetailInfos

Obsahuje detailní popis produktu pro kartu produktu a JSON formátované parametry produktu

Endpointy

HTTP Verb Cesta Popis
GET productDetailInfos{Id} Dotažení detailních informací pro zvolený produkt

Produktové kategorie

Enum produktových kategorií - needitovatelné (napevno v DB, přidání jedině pomocí migrace s updatem balíčku)

Endpointy

HTTP Verb Cesta Popis Kdy?
GET productCategories Dotažení všech produktových kategorií První načtení navigace viditelné na webu
GET productCategories{Id} Dotažení všech podkategorií pro kategorii specifikovanou ID Načítání subkategorií po rozkliknutí

Uživatelé

..todo popis

Aktuální diagram

image