Internetový obchod s pastelkami a skicáky
- Autoři
- Vladan Kudláč
xkudla15@stud.fit.vutbr.cz -
uživatelské rozhraní, db, návrh
- Marek Musil
xmusil65@stud.fit.vutbr.cz -
uživatelské rozhraní, db
- URL aplikace
- http://kudlac.tode.cz/iishop/www/
- http://kudlac.tode.cz/iishop/www/administrace - administrace
Uživatelé systému pro testování
Login | Heslo | Role |
admin | admin | Správce |
vokoun | vokoun | Prodavač |
pkapr@example.com | 1234 | Zákazník |
Role Zákazník je uživatel pro e-shop samotný. Role Správce a Prodavač jsou určeny pro zaměstnance pro přístup do administrace systému.
Rozdíl mezi rolí správce a prodavače je ten, že správce na rozdíl od prodavače může přidávat a spravovat existující uživatele administračního rozhraní.
Implementace
Systém je rozdělen do dvou hlavních modulů, AdminModule a FrontModule. AdminModule má na starost administrační část a FrontModule je veřejná část eshopu. Přihlášení uživatele do jednotlivých modulů je na sobě nezávislé. Architektura se řídí dle Model-View-Presenter:
- Model - získává a zpracovává data z databáze či z konfiguračních souborů
- View - prezentace dat uživateli
- Presenter - má na starost zpracování požadavků, získání adekvátních dat z modelu, předání a připravení dat patřičnému pohledu, vykreslení komponent.
Use Case Diagram
FrontModule
Část systému, kterou vidí zákazník a pracuje s ní. Přihlášení probíhá emailovou adresou a heslem. Registrovat se může kdokoliv. Modul se skládá z presenterů, formulářů a pohledů. Modely jsou společné pro FrontModule i AdminModule.
Ve složce modulu se nachází složky forms a presenters. Každý formulář je vlastní třída, stejně tak jako presentery jsou samostatné třídy. Ve složce presenters se dále nachází šablony pro HTML samotné.
Popis presenterů
Názvy tříd jsme volili tak, aby co nejvíce reflektovaly, co mají na starost.
- BasePresenter - Abstraktní třída, sloužící jako základ pro jednotlivé presentery, vytváří komponenty společné pro všechny presentery (vyhledávání, stav košíku a navigační menu), získává a poskytuje presenterům nastavení frameworku.
- Error4xxPresenter - Presenter použitý při HTML chybách 4xx.
- ErrorPresenter - Pokud dojde v průběhu zpracování požadavku k chybě, je zpracována a zobrazena tímto presenterem.
- HomepagePresenter - Úvodní strana se seznamem produktů, vyhledávání produktů, zobrazení produkůtů podle kategorie.
- InfoPresenter - Prezenter slouží pro zobrazení informací o kontaktních údajích, obchodních podmínkách, dopravě a platbě.
- ProductPresenter - Presenter pro konkrétní produkt, zobrazení informací o produktu, přidání do košíku, recenze. Presenter má rovněž na starost objednávkový proces a odeslání objednávky.
- RegisterPresenter - Registrace uživatele (pro FrontModule).
- SignPresenter - Přihlášení/odhlášení uživatele (pro FrontModule).
- UserPresenter - Inforace o uživateli - jeho košík, objednávky. Má na starost zobrazení detailu objednávky a tisk faktury a objednávky.
AdminModule
Struktura složky mobulu je stejná jako u FrontModule. Obsahuje formuláře, presentery a šablony.
Popis presenterů
Podobně jako u FrontModule.
- BasePresenter - Abstraktní třída, sloužící jako základ pro jednotlivé presentery, vytváří navigační menu, které jse společné pro všechny presetery, ověřuje, zda-li je uživatel oprávněn pracovat s administrační částí a získává a poskytuje presenterům nastavení frameworku.
- CustomersPresenter - Funkce spojené se zákazníky. Výpis zákazníků, možnost kontaktu, editace karty zákazníka, jeho smazání či deaktivace. Vytvoření nového zákazníka.
- EmployeesPresenter - Výpis zaměstnanců a jejich rolí, editace karty zaměstnance, smazání, či deaktivace. Vytvoření nového zaměstnance.
- HomepagePresenter - Úvodní strana, jako výchozí jsou zobrazené objednávky, požadavky pouze přesměruje na OrdersPresenter.
- OrdersPresenter - Seznam objednávek a operace s nimi spojené. Zobrazení objednávky, kontaktování zákazníka, smazání objednávky, změna stavu objednávky.
- ProductsPresenter - Seznam produktů a informací o nich. Zobrazení karty produktu, jeho editace, deaktivace a smazání. Přidání nového produktu.
- SignPresenter - Přihlašování do administrační části.
- SuppliersPresenter - Seznam dodavatelů, možnost editace jeho karty, či smazání. Přidání nového dodavatele.
Model
Složka model obsahuje třídy modelu. Tedy pro jednotlivé logické celky, každá třída má množinu metod, které se dotazují na databázi a komunikují s presentery.
Popis modelů
- CartManager - Model pro košík. Práce s tabulkou `vlozil_do_kosiku`. Přidávání, odebírání zboží do/z košíku, zobrazení obashu košíku.
- EmailValidator - Validace e-mailu, kontrola existence v databázi.
- EmployeeAuthenticator - Autentizace uživatele (zaměstnance).
- EmployeeManager - Operace nad tabulkou `zamestnanec`. Zobrazení všech zaměstnanců, zobrazení a editace údajů o konkrétním zaměstnanci. Přidání nového, smazání existujicího.
- OrderManager - Operace nad tabulkou `objednavka`. Vytvoření nové objednávky, zobrazení objednávek uživatele, zobrazení všech dle stavu
- ParameterManager - Zobrazení parametrů produktu.
- Parameters - Přístup k parametrům ze souboru `app/config/config.neon`
- ProductManager - Operace nad tabulkami `produkt`, `ohodnotil`, `upresnuje`. Vytvoření nového produktu, editace existujícího, smazání produktu, deaktivace produktu.
- Registrator - Vytváření nového uživatele.
- SupplierManager - Operace nad tabulkou `dodavatel`. Zobrazení dodavatelů, jejich editace, smazání, vytvoření nového.
- UserAuthenticator - Autentizace uživatele(zákaznika).
- UserManager - Operace nad tabulkou `zakaznik`. Zobrazení zákazníků, vytváření nových zákazníků, editace údajů, mazání, deaktivace.
Změny oproti původnímu ERD
Ačkoliv jsme se znažili schéma databáze už v IDS navrhnout tak, aby bylo co nejvíce použitelné pro použití systémem, neobešlo se bez pár menších úprav.
Tyto úpravy jsou v ERD.pdf vyznačeny žlutým zvýrazňovačem. Jedná se hlavně o přidání dalších řádků do tabulek, případně změny datových typů.
Instalace
- Po instalaci potřebného SW, je zapotřebí nainstalovat Nette Framework. K tomu slouží příkaz `composer install`. Po nainstalování Nette, by za předpokladu správně nastaveného serveru a importované databáze, měl být echop funkční.
- Softwarové požadavky:
- PHP 7.2 a novější
- Composer
- Nette Framework 2.4
- Šablonovací systém Latte
- MariaDB 10.3 nebo ekvivalentní MySQL databázový server
- Nastavení DB
-
Konfigurace připojení k databázi se nachází v souboru `app/config/config.local.neon`
Známé problémy
Z časových důvodů nebyla implementována funkce statistik prodeje produktů.