From 2762b246d8746d60474233dbf44e6f84f59cb92c Mon Sep 17 00:00:00 2001 From: DualFroz Date: Wed, 26 Aug 2026 11:08:33 +0200 Subject: [PATCH] feat: define application routes --- src/Routes.php | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/Routes.php diff --git a/src/Routes.php b/src/Routes.php new file mode 100644 index 0000000..23f69f1 --- /dev/null +++ b/src/Routes.php @@ -0,0 +1,104 @@ +get('/', [HomeController::class, 'index']); + $router->get('/products', [CatalogController::class, 'index']); + $router->get('/products/{slug}', [CatalogController::class, 'show']); + + $router->get('/locale/{locale}', [LocaleController::class, 'set']); + + $router->get('/cart', [CartController::class, 'index']); + $router->post('/cart/add', [CartController::class, 'add']); + $router->post('/cart/update', [CartController::class, 'update']); + $router->post('/cart/remove', [CartController::class, 'remove']); + $router->post('/cart/coupon', [CartController::class, 'applyCoupon']); + $router->post('/cart/coupon/remove', [CartController::class, 'removeCoupon']); + + $router->post('/wishlist/toggle', [WishlistController::class, 'toggle'], ['auth']); + $router->get('/account/wishlist', [WishlistController::class, 'index'], ['auth']); + + $router->post('/reviews', [ReviewController::class, 'store'], ['auth']); + + $router->get('/register', [AuthController::class, 'showRegister'], ['guest']); + $router->post('/register', [AuthController::class, 'register'], ['guest']); + $router->get('/login', [AuthController::class, 'showLogin'], ['guest']); + $router->post('/login', [AuthController::class, 'login'], ['guest']); + $router->post('/logout', [AuthController::class, 'logout'], ['auth']); + + $router->get('/account/orders', [AccountController::class, 'orders'], ['auth']); + $router->get('/account/orders/{id}', [AccountController::class, 'show'], ['auth']); + + $router->get('/checkout', [CheckoutController::class, 'index'], ['auth']); + $router->post('/checkout', [CheckoutController::class, 'create'], ['auth']); + $router->get('/checkout/success', [CheckoutController::class, 'success'], ['auth']); + $router->get('/checkout/cancel', [CheckoutController::class, 'cancel'], ['auth']); + $router->post('/webhook/stripe', [CheckoutController::class, 'webhook'], ['webhook']); + + $router->get('/admin', [DashboardController::class, 'index'], ['staff']); + $router->get('/admin/analytics', [AnalyticsController::class, 'index'], ['staff']); + + $router->get('/admin/products', [AdminProductController::class, 'index'], ['staff']); + $router->get('/admin/products/create', [AdminProductController::class, 'create'], ['staff']); + $router->post('/admin/products', [AdminProductController::class, 'store'], ['staff']); + $router->get('/admin/products/{id}/edit', [AdminProductController::class, 'edit'], ['staff']); + $router->post('/admin/products/{id}', [AdminProductController::class, 'update'], ['staff']); + $router->post('/admin/products/{id}/delete', [AdminProductController::class, 'destroy'], ['staff']); + + $router->get('/admin/products/{id}/variants', [AdminVariantController::class, 'index'], ['staff']); + $router->post('/admin/products/{id}/variants', [AdminVariantController::class, 'store'], ['staff']); + $router->post('/admin/variants/{id}/delete', [AdminVariantController::class, 'destroy'], ['staff']); + + $router->get('/admin/attributes', [AdminAttributeController::class, 'index'], ['staff']); + $router->post('/admin/attributes', [AdminAttributeController::class, 'store'], ['staff']); + $router->post('/admin/attributes/{id}/values', [AdminAttributeController::class, 'storeValue'], ['staff']); + + $router->get('/admin/categories', [AdminCategoryController::class, 'index'], ['staff']); + $router->get('/admin/categories/create', [AdminCategoryController::class, 'create'], ['staff']); + $router->post('/admin/categories', [AdminCategoryController::class, 'store'], ['staff']); + $router->get('/admin/categories/{id}/edit', [AdminCategoryController::class, 'edit'], ['staff']); + $router->post('/admin/categories/{id}', [AdminCategoryController::class, 'update'], ['staff']); + $router->post('/admin/categories/{id}/delete', [AdminCategoryController::class, 'destroy'], ['staff']); + + $router->get('/admin/orders', [AdminOrderController::class, 'index'], ['staff']); + $router->get('/admin/orders/{id}', [AdminOrderController::class, 'show'], ['staff']); + $router->post('/admin/orders/{id}/fulfill', [AdminOrderController::class, 'fulfill'], ['staff']); + + $router->get('/admin/reviews', [AdminReviewController::class, 'index'], ['staff']); + $router->post('/admin/reviews/{id}/approve', [AdminReviewController::class, 'approve'], ['staff']); + $router->post('/admin/reviews/{id}/reject', [AdminReviewController::class, 'reject'], ['staff']); + + $router->get('/admin/coupons', [AdminCouponController::class, 'index'], ['admin']); + $router->get('/admin/coupons/create', [AdminCouponController::class, 'create'], ['admin']); + $router->post('/admin/coupons', [AdminCouponController::class, 'store'], ['admin']); + $router->post('/admin/coupons/{id}/delete', [AdminCouponController::class, 'destroy'], ['admin']); + + $router->get('/admin/users', [AdminUserController::class, 'index'], ['admin']); + $router->post('/admin/users/{id}/role', [AdminUserController::class, 'updateRole'], ['admin']); + } +}