Add Orders and Order Status repositories with pagination and management features
- 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.
This commit is contained in:
170
routes/web.php
170
routes/web.php
@@ -4,29 +4,10 @@ declare(strict_types=1);
|
||||
use App\Core\Application;
|
||||
use App\Core\Http\Request;
|
||||
use App\Core\Http\Response;
|
||||
use App\Core\Security\Csrf;
|
||||
use App\Modules\Auth\AuthController;
|
||||
use App\Modules\Auth\AuthMiddleware;
|
||||
use App\Modules\Cron\CronJobRepository;
|
||||
use App\Modules\GS1\GS1Service;
|
||||
use App\Modules\Marketplace\MarketplaceController;
|
||||
use App\Modules\Marketplace\MarketplaceRepository;
|
||||
use App\Modules\ProductLinks\ChannelOffersRepository;
|
||||
use App\Modules\ProductLinks\LinkMatcherService;
|
||||
use App\Modules\ProductLinks\OfferImportService;
|
||||
use App\Modules\ProductLinks\ProductLinksController;
|
||||
use App\Modules\ProductLinks\ProductLinksRepository;
|
||||
use App\Modules\ProductLinks\ProductLinksService;
|
||||
use App\Modules\Products\ProductRepository;
|
||||
use App\Modules\Products\ProductSkuGenerator;
|
||||
use App\Modules\Products\ProductsController;
|
||||
use App\Modules\Products\ProductService;
|
||||
use App\Modules\Products\ProductValidator;
|
||||
use App\Modules\Products\ShopProExportService;
|
||||
use App\Modules\Settings\AppSettingsRepository;
|
||||
use App\Modules\Settings\IntegrationRepository;
|
||||
use App\Modules\Orders\OrdersController;
|
||||
use App\Modules\Settings\SettingsController;
|
||||
use App\Modules\Settings\ShopProClient;
|
||||
use App\Modules\Users\UsersController;
|
||||
|
||||
return static function (Application $app): void {
|
||||
@@ -36,70 +17,9 @@ return static function (Application $app): void {
|
||||
$translator = $app->translator();
|
||||
|
||||
$authController = new AuthController($template, $auth, $translator);
|
||||
$integrationRepository = new IntegrationRepository(
|
||||
$app->db(),
|
||||
(string) $app->config('app.integrations.secret', '')
|
||||
);
|
||||
$appSettingsRepository = new AppSettingsRepository($app->db());
|
||||
$cronJobRepository = new CronJobRepository($app->db());
|
||||
$usersController = new UsersController($template, $translator, $auth, $app->users(), $integrationRepository);
|
||||
$marketplaceRepository = new MarketplaceRepository($app->db());
|
||||
$shopProClient = new ShopProClient();
|
||||
$channelOffersRepository = new ChannelOffersRepository($app->db());
|
||||
$productLinksRepository = new ProductLinksRepository($app->db());
|
||||
$linkMatcherService = new LinkMatcherService();
|
||||
$productLinksService = new ProductLinksService(
|
||||
$productLinksRepository,
|
||||
$channelOffersRepository,
|
||||
$integrationRepository,
|
||||
$linkMatcherService,
|
||||
$app->db()
|
||||
);
|
||||
$productLinksController = new ProductLinksController($translator, $auth, $productLinksService);
|
||||
$offerImportService = new OfferImportService($shopProClient, $channelOffersRepository, $app->db());
|
||||
$productRepository = new ProductRepository($app->db());
|
||||
$settingsController = new SettingsController(
|
||||
$template,
|
||||
$translator,
|
||||
$auth,
|
||||
$app->migrator(),
|
||||
$integrationRepository,
|
||||
$shopProClient,
|
||||
$offerImportService,
|
||||
$cronJobRepository,
|
||||
$appSettingsRepository,
|
||||
$productRepository,
|
||||
$app->db(),
|
||||
$app->logger()
|
||||
);
|
||||
$productValidator = new ProductValidator();
|
||||
$productService = new ProductService($app->db(), $productRepository, $productValidator);
|
||||
$productSkuGenerator = new ProductSkuGenerator($appSettingsRepository, $productRepository);
|
||||
$shopProExportService = new ShopProExportService($app->db(), $productRepository, $integrationRepository, $shopProClient);
|
||||
$gs1Service = new GS1Service($productRepository, $appSettingsRepository);
|
||||
$productsController = new ProductsController(
|
||||
$template,
|
||||
$translator,
|
||||
$auth,
|
||||
$productRepository,
|
||||
$productService,
|
||||
$productSkuGenerator,
|
||||
$integrationRepository,
|
||||
$productLinksService,
|
||||
$shopProExportService,
|
||||
$gs1Service
|
||||
);
|
||||
$marketplaceController = new MarketplaceController(
|
||||
$template,
|
||||
$translator,
|
||||
$auth,
|
||||
$marketplaceRepository,
|
||||
$integrationRepository,
|
||||
$shopProClient,
|
||||
$productRepository,
|
||||
$productService,
|
||||
$productValidator
|
||||
);
|
||||
$usersController = new UsersController($template, $translator, $auth, $app->users());
|
||||
$ordersController = new OrdersController($template, $translator, $auth, $app->orders());
|
||||
$settingsController = new SettingsController($template, $translator, $auth, $app->migrator(), $app->orderStatuses());
|
||||
$authMiddleware = new AuthMiddleware($auth);
|
||||
|
||||
$router->get('/health', static fn (Request $request): Response => Response::json([
|
||||
@@ -110,7 +30,7 @@ return static function (Application $app): void {
|
||||
|
||||
$router->get('/', static function (Request $request) use ($auth): Response {
|
||||
return $auth->check()
|
||||
? Response::redirect('/dashboard')
|
||||
? Response::redirect('/settings/users')
|
||||
: Response::redirect('/login');
|
||||
});
|
||||
|
||||
@@ -118,71 +38,23 @@ return static function (Application $app): void {
|
||||
$router->post('/login', [$authController, 'login']);
|
||||
$router->post('/logout', [$authController, 'logout'], [$authMiddleware]);
|
||||
|
||||
$router->get('/dashboard', static function (Request $request) use ($template, $auth, $translator, $integrationRepository): Response {
|
||||
$user = $auth->user();
|
||||
$html = $template->render('dashboard/index', [
|
||||
'title' => $translator->get('dashboard.title'),
|
||||
'activeMenu' => 'dashboard',
|
||||
'user' => $user,
|
||||
'csrfToken' => Csrf::token(),
|
||||
'marketplaceIntegrations' => array_values(array_filter(
|
||||
$integrationRepository->listByType('shoppro'),
|
||||
static fn (array $row): bool => (bool) ($row['is_active'] ?? false)
|
||||
)),
|
||||
], 'layouts/app');
|
||||
|
||||
return Response::html($html);
|
||||
}, [$authMiddleware]);
|
||||
|
||||
$router->get('/users', [$usersController, 'index'], [$authMiddleware]);
|
||||
$router->get('/users', static fn (Request $request): Response => Response::redirect('/settings/users'), [$authMiddleware]);
|
||||
$router->get('/orders', static fn (Request $request): Response => Response::redirect('/orders/list'), [$authMiddleware]);
|
||||
$router->get('/orders/list', [$ordersController, 'index'], [$authMiddleware]);
|
||||
$router->get('/orders/{id}', [$ordersController, 'show'], [$authMiddleware]);
|
||||
$router->post('/users', [$usersController, 'store'], [$authMiddleware]);
|
||||
$router->get('/products', [$productsController, 'index'], [$authMiddleware]);
|
||||
$router->get('/products/show', [$productsController, 'show'], [$authMiddleware]);
|
||||
$router->get('/products/{id}', [$productsController, 'show'], [$authMiddleware]);
|
||||
$router->get('/marketplace', [$marketplaceController, 'index'], [$authMiddleware]);
|
||||
$router->get('/marketplace/{integration_id}', [$marketplaceController, 'offers'], [$authMiddleware]);
|
||||
$router->get('/marketplace/{integration_id}/product/{external_product_id}/edit', [$marketplaceController, 'editProduct'], [$authMiddleware]);
|
||||
$router->post('/marketplace/{integration_id}/product/{external_product_id}/update', [$marketplaceController, 'updateProduct'], [$authMiddleware]);
|
||||
$router->get('/marketplace/{integration_id}/categories', [$marketplaceController, 'categoriesJson'], [$authMiddleware]);
|
||||
$router->get('/marketplace/{integration_id}/product/{external_product_id}/categories', [$marketplaceController, 'productCategoriesJson'], [$authMiddleware]);
|
||||
$router->post('/marketplace/{integration_id}/product/{external_product_id}/categories', [$marketplaceController, 'saveProductCategoriesJson'], [$authMiddleware]);
|
||||
$router->get('/products/links', [$productsController, 'links'], [$authMiddleware]);
|
||||
$router->get('/products/{id}/links', [$productsController, 'links'], [$authMiddleware]);
|
||||
$router->get('/products/{id}/links/suggestions', [$productsController, 'linkSuggestions'], [$authMiddleware]);
|
||||
$router->get('/products/create', [$productsController, 'create'], [$authMiddleware]);
|
||||
$router->post('/products', [$productsController, 'store'], [$authMiddleware]);
|
||||
$router->get('/products/edit', [$productsController, 'edit'], [$authMiddleware]);
|
||||
$router->post('/products/update', [$productsController, 'update'], [$authMiddleware]);
|
||||
$router->post('/products/delete', [$productsController, 'destroy'], [$authMiddleware]);
|
||||
$router->post('/products/images/upload', [$productsController, 'uploadImage'], [$authMiddleware]);
|
||||
$router->post('/products/images/set-main', [$productsController, 'setMainImage'], [$authMiddleware]);
|
||||
$router->post('/products/images/delete', [$productsController, 'deleteImage'], [$authMiddleware]);
|
||||
$router->post('/products/next-sku', [$productsController, 'nextSku'], [$authMiddleware]);
|
||||
$router->post('/products/links/create', [$productLinksController, 'create'], [$authMiddleware]);
|
||||
$router->post('/products/links/relink', [$productLinksController, 'relink'], [$authMiddleware]);
|
||||
$router->post('/products/links/unlink', [$productLinksController, 'unlink'], [$authMiddleware]);
|
||||
$router->post('/products/{id}/links', [$productLinksController, 'create'], [$authMiddleware]);
|
||||
$router->post('/products/{id}/links/{mapId}/relink', [$productLinksController, 'relink'], [$authMiddleware]);
|
||||
$router->post('/products/{id}/links/{mapId}/unlink', [$productLinksController, 'unlink'], [$authMiddleware]);
|
||||
$router->post('/products/import/shoppro', [$settingsController, 'importProducts'], [$authMiddleware]);
|
||||
$router->post('/products/export/shoppro', [$productsController, 'exportShopPro'], [$authMiddleware]);
|
||||
$router->post('/products/{id}/assign-ean', [$productsController, 'assignGs1Ean'], [$authMiddleware]);
|
||||
$router->get('/settings/integrations', static fn (Request $request): Response => Response::redirect('/settings/integrations/shoppro'), [$authMiddleware]);
|
||||
$router->get('/settings/integrations/shoppro', [$settingsController, 'integrations'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/save', [$settingsController, 'saveIntegration'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/shoppro/save', [$settingsController, 'saveIntegration'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/test', [$settingsController, 'testIntegration'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/shoppro/test', [$settingsController, 'testIntegration'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/import-one-product', [$settingsController, 'importOneProduct'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/shoppro/import-one-product', [$settingsController, 'importOneProduct'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/import-offers-cache', [$settingsController, 'importOffersCache'], [$authMiddleware]);
|
||||
$router->post('/settings/integrations/shoppro/import-offers-cache', [$settingsController, 'importOffersCache'], [$authMiddleware]);
|
||||
$router->get('/settings/users', [$usersController, 'index'], [$authMiddleware]);
|
||||
$router->post('/settings/users', [$usersController, 'store'], [$authMiddleware]);
|
||||
$router->get('/settings', static fn (Request $request): Response => Response::redirect('/settings/users'), [$authMiddleware]);
|
||||
$router->get('/settings/database', [$settingsController, 'database'], [$authMiddleware]);
|
||||
$router->post('/settings/database/migrate', [$settingsController, 'migrate'], [$authMiddleware]);
|
||||
$router->get('/settings/cron', [$settingsController, 'cron'], [$authMiddleware]);
|
||||
$router->post('/settings/cron/save', [$settingsController, 'saveCronSettings'], [$authMiddleware]);
|
||||
$router->get('/settings/gs1', [$settingsController, 'gs1'], [$authMiddleware]);
|
||||
$router->post('/settings/gs1/save', [$settingsController, 'gs1Save'], [$authMiddleware]);
|
||||
$router->get('/settings/products', [$settingsController, 'products'], [$authMiddleware]);
|
||||
$router->post('/settings/products/save', [$settingsController, 'productsSave'], [$authMiddleware]);
|
||||
$router->get('/settings/statuses', [$settingsController, 'statuses'], [$authMiddleware]);
|
||||
$router->post('/settings/status-groups', [$settingsController, 'createStatusGroup'], [$authMiddleware]);
|
||||
$router->post('/settings/status-groups/update', [$settingsController, 'updateStatusGroup'], [$authMiddleware]);
|
||||
$router->post('/settings/status-groups/delete', [$settingsController, 'deleteStatusGroup'], [$authMiddleware]);
|
||||
$router->post('/settings/status-groups/reorder', [$settingsController, 'reorderStatusGroups'], [$authMiddleware]);
|
||||
$router->post('/settings/statuses/create', [$settingsController, 'createStatus'], [$authMiddleware]);
|
||||
$router->post('/settings/statuses/update', [$settingsController, 'updateStatus'], [$authMiddleware]);
|
||||
$router->post('/settings/statuses/delete', [$settingsController, 'deleteStatus'], [$authMiddleware]);
|
||||
$router->post('/settings/statuses/reorder', [$settingsController, 'reorderStatuses'], [$authMiddleware]);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user