- Implemented OrdersRepository for handling order data with pagination, filtering, and sorting capabilities. - Added methods for retrieving order status options, quick stats, and detailed order information. - Created OrderStatusRepository for managing order status groups and statuses, including CRUD operations and sorting. - Introduced a bootstrap file for test environment setup and autoloading.
7.0 KiB
7.0 KiB
Architecture
Status
- Projekt po resecie do trybu
users-only.
Moduly aktywne
App\Modules\AuthApp\Modules\OrdersApp\Modules\UsersApp\Modules\Settings
Routing
GET /login,POST /login,POST /logoutGET /settings/users,POST /settings/usersGET /orders(redirect do/orders/list)GET /orders/listGET /orders/{id}GET /users(redirect do/settings/users)POST /users(compat route)GET /settings(redirect do/settings/users)GET /settings/databasePOST /settings/database/migrateGET /settings/statusesPOST /settings/status-groupsPOST /settings/status-groups/updatePOST /settings/status-groups/deletePOST /settings/status-groups/reorderPOST /settings/statuses/createPOST /settings/statuses/updatePOST /settings/statuses/deletePOST /settings/statuses/reorderGET /health,GET /(redirect)
Korekta logowania
AuthController::showLogin(Request): Response:- dla zalogowanego usera redirect na
/settings/users(zamiast nieistniejacego/dashboard).
- dla zalogowanego usera redirect na
AuthController::login(Request): Response:- po poprawnym logowaniu redirect na
/settings/users.
- po poprawnym logowaniu redirect na
Kluczowe klasy
App\Core\ApplicationApp\Modules\Auth\AuthControllerApp\Modules\Auth\AuthServiceApp\Modules\Orders\OrdersControllerApp\Modules\Orders\OrdersRepositoryApp\Modules\Settings\SettingsControllerApp\Modules\Settings\OrderStatusRepositoryApp\Modules\Users\UsersControllerApp\Modules\Users\UserRepository
Przeplyw Zamowienia > Lista zamowien
GET /orders/list:OrdersController::index(Request): Response- pobiera dane listy przez
OrdersRepository::paginate(...), - pobiera slowniki filtrow (
sourceOptions(),statusOptions()), statystyki (quickStats()), agregaty statusow (statusCounts()) i konfiguracje grup/statusow (statusPanelConfig()), - buduje panel statusow z grupami i licznikami (
buildStatusPanel(...)) z linkami filtrujacymi po statusie, - panel statusow i etykiety statusow sa zgodne z konfiguracja z
Ustawienia > Statusy(z fallbackiemPozostale), - renderuje podglad pozycji zamowienia (nazwa, miniatura, ilosc) na bazie
order_items, - obsluguje modal podgladu zdjecia pozycji po kliknieciu miniatury,
- normalizuje status techniczny na etykiete biznesowa (bez kodu statusu),
- renderuje widok
resources/views/orders/list.phpi komponent tabeliresources/views/components/table-list.php.
GET /orders/{id}:OrdersController::show(Request): Response- pobiera szczegoly przez
OrdersRepository::findDetails(int $orderId), statystyke statusow przezstatusCounts()oraz konfiguracje przezstatusPanelConfig(), - buduje panel statusow z grupami i licznikami (
buildStatusPanel(...)), - renderuje klikalne taby sekcji i przelaczanie paneli po stronie klienta (JS w
orders/show.php), - renderuje widok
resources/views/orders/show.phpz sekcjami:- pozycje zamowienia,
- szczegoly zamowienia,
- platnosc i wysylka,
- adresy (
customer,invoice,delivery), - notatki i historia statusow.
- Sidebar ma oddzielna grupe nawigacyjna:
Zamowienia->Lista zamowien.
Skrypty techniczne (CLI)
bin/fix_status_codes.php- naprawa kodow grup/statusow (transliteracja PL -> ASCII, tryb
--dry-run, opcja--use-remote).
- naprawa kodow grup/statusow (transliteracja PL -> ASCII, tryb
bin/deploy_and_seed_orders.php- aplikuje generyczny schema zamowien z
database/drafts/20260302_orders_schema_v1.sql, - seeduje dane testowe (
--count,--append,--use-remote,--profile=default|realistic), - profil
realisticutrzymuje spojne zaleznosci miedzy:- statusem zamowienia,
- statusem i kwota platnosci,
- obecnoscia wysylek i dokumentow,
- historia przejsc statusow (deterministyczne sciezki zamiast losowych przeskokow).
- aplikuje generyczny schema zamowien z
Przeplyw Ustawienia > Statusy
GET /settings/statuses:SettingsController::statuses(Request): Response- pobiera dane przez
OrderStatusRepository::listGroups()iOrderStatusRepository::listStatuses(), - renderuje widok
resources/views/settings/statuses.php.
POST /settings/status-groups:SettingsController::createStatusGroup(Request): Response- waliduje CSRF i dane (
name,color_hex,is_active), codejest generowany automatycznie znamei nie jest edytowany z UI,- zapisuje przez
OrderStatusRepository::createGroup(...).
POST /settings/status-groups/update:SettingsController::updateStatusGroup(Request): Response- waliduje istnienie grupy i aktualizuje rekord przez
updateGroup(...), codepozostaje bez zmian (read-only po utworzeniu).
POST /settings/status-groups/delete:SettingsController::deleteStatusGroup(Request): Response- usuwa grupe przez
deleteGroup(...); statusy z tej grupy usuwane sa kaskadowo (FK).
POST /settings/status-groups/reorder:SettingsController::reorderStatusGroups(Request): Response- zapisuje kolejnosc drag-and-drop grup przez
OrderStatusRepository::reorderGroups(...), - endpoint jest wywolywany automatycznie po upuszczeniu elementu listy (auto-save).
POST /settings/statuses/create:SettingsController::createStatus(Request): Response- waliduje grupe, pola statusu i zapisuje przez
createStatus(...).
POST /settings/statuses/update:SettingsController::updateStatus(Request): Response- waliduje dane i aktualizuje status przez
updateStatus(...), codepozostaje bez zmian (read-only po utworzeniu).
POST /settings/statuses/delete:SettingsController::deleteStatus(Request): Response- usuwa status przez
deleteStatus(...).
POST /settings/statuses/reorder:SettingsController::reorderStatuses(Request): Response- zapisuje kolejnosc drag-and-drop statusow w ramach grupy przez
OrderStatusRepository::reorderStatusesByGroup(...), - endpoint jest wywolywany automatycznie po upuszczeniu elementu listy (auto-save).
Nawigacja ustawien
- Sidebar (
resources/views/layouts/app.php) ma nowy podlink:Statusy(/settings/statuses).
Przeplyw Ustawienia > Baza danych
GET /settings/database:SettingsController::database(Request): Response- pobiera
Migrator::status(), przekazuje statystyki i liste pending migracji do widokuresources/views/settings/database.php.
POST /settings/database/migrate:SettingsController::migrate(Request): Response- waliduje CSRF,
- uruchamia
Migrator::runPending(), - zapisuje wynik do flash (
settings_success/settings_error,settings_migrate_logs), - wykonuje redirect do
GET /settings/database.
Zmiany nawigacji
- Sidebar ma teraz grupe
Ustawieniaz podlinkami:Uzytkownicy(/settings/users)Baza danych(/settings/database)
UsersController::index(Request): Responseustawia:activeMenu = settingsactiveSettings = users
- Usunieto wewnetrzny pasek
settings-navz widokow podstron ustawien.
Zasady aktualizacji
- Przy kazdej zmianie dopisz:
- nowe klasy i metody (sygnatury + odpowiedzialnosc),
- zmiany przeplywu request -> controller -> repository,
- kontrakty wejscia/wyjscia istotnych metod.