- Added AllegroOrderSyncStateRepository for managing sync state with Allegro orders. - Introduced AllegroOrdersSyncService to handle the synchronization of orders from Allegro. - Created AllegroStatusDiscoveryService to discover and store order statuses from Allegro. - Developed AllegroStatusMappingRepository for managing status mappings between Allegro and OrderPro. - Implemented AllegroStatusSyncService to facilitate status synchronization. - Added CronSettingsController for managing cron job settings related to Allegro integration.
122 lines
6.8 KiB
PHP
122 lines
6.8 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
use App\Core\Application;
|
|
use App\Core\Http\Request;
|
|
use App\Core\Http\Response;
|
|
use App\Modules\Auth\AuthController;
|
|
use App\Modules\Auth\AuthMiddleware;
|
|
use App\Modules\Cron\CronRepository;
|
|
use App\Modules\Orders\OrdersController;
|
|
use App\Modules\Orders\OrderImportRepository;
|
|
use App\Modules\Settings\AllegroApiClient;
|
|
use App\Modules\Settings\AllegroIntegrationController;
|
|
use App\Modules\Settings\AllegroIntegrationRepository;
|
|
use App\Modules\Settings\AllegroOAuthClient;
|
|
use App\Modules\Settings\AllegroOrderImportService;
|
|
use App\Modules\Settings\AllegroStatusDiscoveryService;
|
|
use App\Modules\Settings\AllegroStatusMappingRepository;
|
|
use App\Modules\Settings\CronSettingsController;
|
|
use App\Modules\Settings\SettingsController;
|
|
use App\Modules\Users\UsersController;
|
|
|
|
return static function (Application $app): void {
|
|
$router = $app->router();
|
|
$template = $app->template();
|
|
$auth = $app->auth();
|
|
$translator = $app->translator();
|
|
|
|
$authController = new AuthController($template, $auth, $translator);
|
|
$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());
|
|
$allegroIntegrationRepository = new AllegroIntegrationRepository(
|
|
$app->db(),
|
|
(string) $app->config('app.integrations.secret', '')
|
|
);
|
|
$allegroStatusMappingRepository = new AllegroStatusMappingRepository($app->db());
|
|
$allegroOAuthClient = new AllegroOAuthClient();
|
|
$cronRepository = new CronRepository($app->db());
|
|
$allegroIntegrationController = new AllegroIntegrationController(
|
|
$template,
|
|
$translator,
|
|
$auth,
|
|
$allegroIntegrationRepository,
|
|
$allegroStatusMappingRepository,
|
|
$app->orderStatuses(),
|
|
$cronRepository,
|
|
$allegroOAuthClient,
|
|
new AllegroOrderImportService(
|
|
$allegroIntegrationRepository,
|
|
$allegroOAuthClient,
|
|
new AllegroApiClient(),
|
|
new OrderImportRepository($app->db()),
|
|
$allegroStatusMappingRepository
|
|
),
|
|
new AllegroStatusDiscoveryService(
|
|
$allegroIntegrationRepository,
|
|
$allegroOAuthClient,
|
|
new AllegroApiClient(),
|
|
$allegroStatusMappingRepository
|
|
),
|
|
(string) $app->config('app.url', '')
|
|
);
|
|
$cronSettingsController = new CronSettingsController(
|
|
$template,
|
|
$translator,
|
|
$auth,
|
|
$cronRepository,
|
|
(bool) $app->config('app.cron.run_on_web_default', false),
|
|
(int) $app->config('app.cron.web_limit_default', 5)
|
|
);
|
|
$authMiddleware = new AuthMiddleware($auth);
|
|
|
|
$router->get('/health', static fn (Request $request): Response => Response::json([
|
|
'status' => 'ok',
|
|
'app' => (string) $app->config('app.name', 'orderPRO'),
|
|
'timestamp' => date(DATE_ATOM),
|
|
]));
|
|
|
|
$router->get('/', static function (Request $request) use ($auth): Response {
|
|
return $auth->check()
|
|
? Response::redirect('/settings/users')
|
|
: Response::redirect('/login');
|
|
});
|
|
|
|
$router->get('/login', [$authController, 'showLogin']);
|
|
$router->post('/login', [$authController, 'login']);
|
|
$router->post('/logout', [$authController, 'logout'], [$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('/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/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]);
|
|
$router->get('/settings/cron', [$cronSettingsController, 'index'], [$authMiddleware]);
|
|
$router->post('/settings/cron', [$cronSettingsController, 'save'], [$authMiddleware]);
|
|
$router->get('/settings/integrations/allegro', [$allegroIntegrationController, 'index'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/save', [$allegroIntegrationController, 'save'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/settings/save', [$allegroIntegrationController, 'saveImportSettings'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/oauth/start', [$allegroIntegrationController, 'startOAuth'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/import-single', [$allegroIntegrationController, 'importSingleOrder'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/statuses/save', [$allegroIntegrationController, 'saveStatusMapping'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/statuses/save-bulk', [$allegroIntegrationController, 'saveStatusMappingsBulk'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/statuses/delete', [$allegroIntegrationController, 'deleteStatusMapping'], [$authMiddleware]);
|
|
$router->post('/settings/integrations/allegro/statuses/sync', [$allegroIntegrationController, 'syncStatusesFromAllegro'], [$authMiddleware]);
|
|
$router->get('/settings/integrations/allegro/oauth/callback', [$allegroIntegrationController, 'oauthCallback']);
|
|
};
|