145 lines
5.4 KiB
PHP
145 lines
5.4 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\Admin\ActivityLog\ActivityLogController;
|
|
use App\Http\Controllers\Api\Admin\EmailLog\EmailLogController;
|
|
use App\Http\Controllers\Api\Admin\EmailTemplate\EmailTemplateController;
|
|
use App\Http\Controllers\Api\Admin\MailCampaign\MailCampaignController;
|
|
use App\Http\Controllers\Api\Admin\Setting\SettingController as AdminSettingController;
|
|
use App\Http\Controllers\Api\Admin\Staff\StaffOnlineController;
|
|
use App\Http\Controllers\Api\Admin\Ticket\TicketController as AdminTicketController;
|
|
use App\Http\Controllers\Api\NotificationController;
|
|
use App\Http\Controllers\Api\QueueMonitorController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// Settings (module: administrator)
|
|
Route::prefix('settings')
|
|
->controller(AdminSettingController::class)
|
|
->middleware('perm:setting.manager')
|
|
->group(function () {
|
|
Route::get('/', 'index');
|
|
Route::put('/', 'update');
|
|
Route::post('test-telegram', 'testTelegram');
|
|
});
|
|
|
|
// VAT settings per service type (module: settings)
|
|
Route::prefix('vat-settings')
|
|
->controller(AdminSettingController::class)
|
|
->middleware('perm:setting.manager')
|
|
->group(function () {
|
|
Route::get('/', 'vatIndex');
|
|
Route::put('/', 'vatUpdate');
|
|
});
|
|
|
|
// Dashboard Stats
|
|
Route::prefix('dashboard')
|
|
->controller(\App\Http\Controllers\Api\Admin\Dashboard\DashboardController::class)
|
|
->middleware('perm:dashboard.view')
|
|
->group(function () {
|
|
Route::get('stats', 'stats');
|
|
Route::get('monthly-stats', 'monthlyStats');
|
|
Route::get('daily-stats', 'dailyStats');
|
|
Route::get('recent-orders', 'recentOrders');
|
|
Route::get('recent-deposits', 'recentDeposits');
|
|
Route::get('top-services', 'topServices');
|
|
Route::get('expiring-services', 'expiringServices');
|
|
Route::get('activities', 'activities');
|
|
Route::get('latest-customers', 'latestCustomers');
|
|
});
|
|
|
|
// Staff Online
|
|
Route::prefix('staff-online')
|
|
->controller(StaffOnlineController::class)
|
|
->group(function () {
|
|
Route::get('/', 'index');
|
|
Route::post('ping', 'ping');
|
|
});
|
|
|
|
// Queue Monitor (Horizon)
|
|
Route::prefix('queue')
|
|
->controller(QueueMonitorController::class)
|
|
->middleware('perm:queue.manager')
|
|
->group(function () {
|
|
Route::get('jobs/recent', 'recent');
|
|
Route::get('jobs/pending', 'pending');
|
|
Route::get('jobs/failed', 'failed');
|
|
Route::post('jobs/failed/{id}/retry', 'retry');
|
|
Route::get('jobs/metrics', 'metrics');
|
|
});
|
|
|
|
// Email Templates (module: settings)
|
|
Route::prefix('email-templates')
|
|
->controller(EmailTemplateController::class)
|
|
->middleware('perm:email-template.manager')
|
|
->group(function () {
|
|
Route::get('/', 'index');
|
|
Route::post('/', 'store');
|
|
Route::get('scenarios', 'scenarios');
|
|
Route::put('scenarios/{key}/label', 'updateScenarioLabel');
|
|
Route::get('email-settings', 'getEmailSettings');
|
|
Route::put('email-settings', 'updateEmailSettings');
|
|
Route::get('{id}', 'show');
|
|
Route::put('{id}', 'update');
|
|
Route::delete('{id}', 'destroy');
|
|
Route::post('{id}/preview', 'preview');
|
|
Route::post('{id}/send-test', 'sendTest');
|
|
});
|
|
|
|
// Tickets (support tickets)
|
|
Route::prefix('tickets')
|
|
->controller(AdminTicketController::class)
|
|
->group(function () {
|
|
Route::get('/', 'index')->middleware('perm:support.view');
|
|
Route::get('{ticket_num}', 'show')->middleware('perm:support.view');
|
|
Route::patch('{ticket_num}/status', 'updateStatus')->middleware('perm:support.edit');
|
|
Route::post('{ticket_num}/reply', 'reply')->middleware('perm:support.edit');
|
|
});
|
|
|
|
Route::prefix('notifications')
|
|
->controller(NotificationController::class)
|
|
->group(function () {
|
|
Route::get('/', fn() => app(NotificationController::class)->index(request(), 'admin'));
|
|
Route::get(
|
|
'{id}',
|
|
fn($id) => app(NotificationController::class)->show(request(), 'admin', (int) $id),
|
|
)->whereNumber('id');
|
|
Route::patch(
|
|
'{id}/read',
|
|
fn($id) => app(NotificationController::class)->markRead(request(), 'admin', (int) $id),
|
|
);
|
|
Route::patch(
|
|
'read-all',
|
|
fn() => app(NotificationController::class)->markAllRead(request(), 'admin'),
|
|
);
|
|
});
|
|
|
|
// Activity Logs
|
|
Route::prefix('activity-logs')
|
|
->controller(ActivityLogController::class)
|
|
->middleware('perm:system-log.manager')
|
|
->group(function () {
|
|
Route::get('/', 'index');
|
|
Route::get('modules', 'modules');
|
|
Route::get('stats', 'stats');
|
|
Route::get('{id}', 'show');
|
|
});
|
|
|
|
// Email Logs
|
|
Route::prefix('email-logs')
|
|
->controller(EmailLogController::class)
|
|
->middleware('perm:system-log.manager')
|
|
->group(function () {
|
|
Route::get('/', 'index');
|
|
Route::get('{id}', 'show')->whereNumber('id');
|
|
});
|
|
|
|
// Mail Campaigns (module: mail-campaign)
|
|
Route::prefix('mail-campaigns')
|
|
->controller(MailCampaignController::class)
|
|
->group(function () {
|
|
Route::get('/', 'index')->middleware('perm:mail-campaign.view');
|
|
Route::post('preview', 'preview')->middleware('perm:mail-campaign.create');
|
|
Route::get('{uuid}/preview', 'previewCampaign')->middleware('perm:mail-campaign.view');
|
|
Route::get('{uuid}', 'show')->middleware('perm:mail-campaign.view');
|
|
Route::post('/', 'store')->middleware('perm:mail-campaign.create');
|
|
});
|