refactor(shop-coupon): migrate admin module to DI and release 0.266
This commit is contained in:
@@ -511,15 +511,15 @@ class BannerController
|
||||
{
|
||||
$formHandler = new FormRequestHandler();
|
||||
$viewModel = $this->buildFormViewModel(); // jak w edit()
|
||||
|
||||
|
||||
$result = $formHandler->handleSubmit($viewModel, $_POST);
|
||||
|
||||
|
||||
if (!$result['success']) {
|
||||
// Błędy walidacji - zapisane automatycznie do sesji
|
||||
echo json_encode(['success' => false, 'errors' => $result['errors']]);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
// Sukces - persist wyczyszczony automatycznie
|
||||
$this->repository->save($result['data']);
|
||||
echo json_encode(['success' => true]);
|
||||
@@ -782,3 +782,92 @@ Gdy `persist = true`:
|
||||
- FIX: zapis edycji promocji nie tworzy nowego rekordu (hidden `id` + fallback `id` z URL)
|
||||
- TEST: rozszerzono `PromotionRepositoryTest` o asercje `date_from`
|
||||
- Testy po zmianie: **OK (222 tests, 614 assertions)**.
|
||||
|
||||
## Plan 2026-02-13 - Refaktoryzacja `/admin/shop_coupon/` (HITL)
|
||||
- [x] Etap 1 (analiza i kontrakt URL/routingu):
|
||||
- potwierdzic docelowy kontrakt URL: `/admin/shop_coupon/list/`, `/admin/shop_coupon/edit/`, `/admin/shop_coupon/save/`, `/admin/shop_coupon/delete/`
|
||||
- decyzja: utrzymujemy aliasy legacy (`view_list`, `coupon_edit`, `coupon_save`, `coupon_delete`) w nowym kontrolerze jako kompatybilnosc wsteczna, przy jednoczesnym przejsciu menu i nowych widokow na URL kanoniczne
|
||||
- sprawdzic mapowanie modulu `ShopCoupon` w `admin\Site` (DI factory + fallback)
|
||||
- [x] Etap 2 (Domain):
|
||||
- dodac `Domain\Coupon\CouponRepository`:
|
||||
- `listForAdmin(filters, sort, dir, page, perPage)` (whitelist sortowania + paginacja)
|
||||
- `find(int $id)` (domyslne dane dla nowego formularza)
|
||||
- `save(array $data): ?int` (insert/update, normalizacja switchy, JSON dla `categories`)
|
||||
- `delete(int $id): bool`
|
||||
- `categoriesTree(?int $parentId): array` (drzewo kategorii bez zaleznosci od `admin\factory\ShopCategory`)
|
||||
- [x] Etap 3 (Admin Controller + routing DI):
|
||||
- dodac `admin\Controllers\ShopCouponController` z akcjami `list`, `edit`, `save`, `delete`
|
||||
- przepiac routing DI w `admin\Site::$newControllers` dla modulu `ShopCoupon`
|
||||
- zachowac obsluge legacy payload `values` JSON i nowego payload `$_POST` z `components/form-edit`
|
||||
- [x] Etap 4 (widoki):
|
||||
- przepiac liste z `grid` na `components/table-list` (filtry: nazwa, aktywny, uzyty, wyslany)
|
||||
- przepiac edycje z `gridEdit` na `components/form-edit`
|
||||
- dodac partiale drzewa kategorii w module `shop-coupon` (usuniecie zaleznosci od `shop-product/subcategories-list`)
|
||||
- dodac `shop-coupon/coupon-edit-custom-script.php` (obsluga drzewa kategorii i zachowania formularza)
|
||||
- [x] Etap 5 (cleanup i zaleznosci):
|
||||
- usunac legacy po pelnym przepieciu:
|
||||
- `autoload/admin/controls/class.ShopCoupon.php`
|
||||
- `autoload/admin/factory/class.ShopCoupon.php`
|
||||
- `admin/templates/shop-coupon/view-list.php` (wersja grid)
|
||||
- `admin/templates/shop-coupon/coupon-edit.php` (wersja gridEdit)
|
||||
- przepiac menu admin na kanoniczny URL `/admin/shop_coupon/list/`
|
||||
- przeszukac repo i usunac pozostale odwolania do `shop_coupon/view_list` i legacy klas `admin\controls\ShopCoupon`, `admin\factory\ShopCoupon`
|
||||
- [x] Etap 6 (testy):
|
||||
- dodac `tests/Unit/Domain/Coupon/CouponRepositoryTest.php`
|
||||
- dodac `tests/Unit/admin/Controllers/ShopCouponControllerTest.php`
|
||||
- uruchomic testy modulu + pelny `composer test`
|
||||
- [x] Etap 7 (dokumentacja i release note):
|
||||
- zaktualizowac `DATABASE_STRUCTURE.md` (dodac `pp_shop_coupon`)
|
||||
- zaktualizowac `PROJECT_STRUCTURE.md`
|
||||
- zaktualizowac `REFACTORING_PLAN.md` (sekcja "Aktualizacja ...")
|
||||
- zaktualizowac `TESTING.md` (nowy wynik suite + nowe testy)
|
||||
- dopisac wpis w `updates/changelog.php`
|
||||
|
||||
### Tryb HITL dla realizacji
|
||||
- Po kazdym etapie (1-7) zatrzymanie i krotkie podsumowanie diffu do akceptacji przed kolejnym krokiem.
|
||||
|
||||
### Postep 2026-02-13 (ShopCoupon)
|
||||
- Etap 2 zakonczony:
|
||||
- NOWE: `autoload/Domain/Coupon/CouponRepository.php`
|
||||
- Zakres: `listForAdmin`, `find`, `save`, `delete`, `categoriesTree`
|
||||
- Walidacja: `php -l` OK
|
||||
- Etap 3 zakonczony:
|
||||
- NOWE: `autoload/admin/Controllers/ShopCouponController.php`
|
||||
- UPDATE: `autoload/admin/class.Site.php` - rejestracja DI factory dla modulu `ShopCoupon`
|
||||
- Kompatybilnosc: dodane aliasy akcji `view_list`, `coupon_edit`, `coupon_save`, `coupon_delete`
|
||||
- Walidacja: `php -l` OK
|
||||
- Etap 4 zakonczony:
|
||||
- NOWE widoki: `admin/templates/shop-coupon/coupons-list.php`, `admin/templates/shop-coupon/coupon-edit-new.php`
|
||||
- NOWE partiale: `admin/templates/shop-coupon/coupon-categories-selector.php`, `admin/templates/shop-coupon/coupon-categories-tree.php`
|
||||
- NOWY skrypt: `admin/templates/shop-coupon/coupon-edit-custom-script.php`
|
||||
- UPDATE: `ShopCouponController::edit()` buduje `FormEditViewModel` (zakladki ustawienia/kategorie)
|
||||
- Walidacja: `php -l` OK
|
||||
- Etap 5 zakonczony:
|
||||
- CLEANUP: usuniete pliki legacy:
|
||||
- `autoload/admin/controls/class.ShopCoupon.php`
|
||||
- `autoload/admin/factory/class.ShopCoupon.php`
|
||||
- `admin/templates/shop-coupon/view-list.php`
|
||||
- `admin/templates/shop-coupon/coupon-edit.php`
|
||||
- UPDATE: menu admin (`admin/templates/site/main-layout.php`) wskazuje kanoniczny URL `/admin/shop_coupon/list/`
|
||||
- WERYFIKACJA: brak odwolan do `shop_coupon/view_list`, `admin\controls\ShopCoupon`, `admin\factory\ShopCoupon` w kodzie
|
||||
- Etap 6 zakonczony:
|
||||
- NOWE testy:
|
||||
- `tests/Unit/Domain/Coupon/CouponRepositoryTest.php` (8 testow)
|
||||
- `tests/Unit/admin/Controllers/ShopCouponControllerTest.php` (5 testow)
|
||||
- Test modulu: `OK (8 tests, 49 assertions)`
|
||||
- Pelny suite: `OK (235 tests, 682 assertions)`
|
||||
- Etap 7 zakonczony:
|
||||
- UPDATE: dokumentacja techniczna zaktualizowana (`DATABASE_STRUCTURE.md`, `PROJECT_STRUCTURE.md`, `TESTING.md`)
|
||||
- UPDATE: dopisany release note w `updates/changelog.php` (ver. 0.266)
|
||||
|
||||
## Aktualizacja 2026-02-13 (ver. 0.266)
|
||||
- **ShopCoupon** - migracja `/admin/shop_coupon` na Domain + DI + nowe widoki
|
||||
- NOWE: `Domain\Coupon\CouponRepository` (`listForAdmin`, `find`, `save`, `delete`, `categoriesTree`)
|
||||
- NOWE: `admin\Controllers\ShopCouponController` (DI) z akcjami `list`, `edit`, `save`, `delete`
|
||||
- UPDATE: kompatybilnosc aliasow legacy (`view_list`, `coupon_edit`, `coupon_save`, `coupon_delete`) obslugiwana przez nowy kontroler
|
||||
- UPDATE: modul `/admin/shop_coupon/*` dziala na `components/table-list` i `components/form-edit`
|
||||
- NOWE: widoki/partiale `shop-coupon/coupons-list`, `shop-coupon/coupon-edit-new`, `shop-coupon/coupon-categories-selector`, `shop-coupon/coupon-categories-tree`, `shop-coupon/coupon-edit-custom-script`
|
||||
- CLEANUP: usuniete legacy `autoload/admin/controls/class.ShopCoupon.php`, `autoload/admin/factory/class.ShopCoupon.php`, `admin/templates/shop-coupon/view-list.php`, `admin/templates/shop-coupon/coupon-edit.php`
|
||||
- UPDATE: menu admin przepiete na kanoniczny URL `/admin/shop_coupon/list/`
|
||||
- FIX: po akceptacji HITL ujednolicone UI drzewek i checkboxow miedzy kuponami i layoutami (spojne strzalki, brak nieestetycznego focusu, iCheck dla checkboxow)
|
||||
- Testy po zmianie: **OK (235 tests, 682 assertions)**.
|
||||
|
||||
Reference in New Issue
Block a user