route('admin.login'); }); // ========================================== // BROADCASTING AUTH (FOR ADMIN SESSION) // ========================================== Broadcast::routes(['middleware' => ['web']]); Route::post('/broadcasting/auth', function (\Illuminate\Http\Request $request) { \Log::info('ЁЯОп Broadcasting Auth Request', [ 'channel' => $request->input('channel_name'), 'admin_check' => auth('admin')->check(), 'web_check' => auth('web')->check(), ]); if (auth('admin')->check()) { \Log::info('тЬЕ Admin authenticated', ['id' => auth('admin')->id()]); return Broadcast::auth($request); } if (auth('web')->check()) { \Log::info('тЬЕ Web user authenticated', ['id' => auth('web')->id()]); return Broadcast::auth($request); } \Log::warning('тЭМ No authentication found'); return response()->json(['message' => 'Unauthenticated'], 403); })->middleware('web'); // --------------------------- // ADMIN LOGIN ROUTES // --------------------------- Route::prefix('admin')->group(function () { Route::get('/login', [AdminAuthController::class, 'showLoginForm'])->name('admin.login'); Route::post('/login', [AdminAuthController::class, 'login'])->name('admin.login.submit'); Route::post('/logout', [AdminAuthController::class, 'logout'])->name('admin.logout'); }); Broadcast::routes(['middleware' => ['web']]); // ========================================== // PROTECTED ADMIN ROUTES (session protected) // ========================================== Route::prefix('admin') ->middleware('auth:admin') ->group(function () { // Dashboard Route::get('/dashboard', [AdminOrderController::class, 'dashboard']) ->name('admin.dashboard'); Route::get('/reports', [AdminReportController::class, 'index'])->name('admin.reports'); Route::get('/chat-support', fn() => view('admin.chat_support')) ->name('admin.chat_support'); Route::get('/staff', fn() => view('admin.staff')) ->name('admin.staff'); Route::get('/account', fn() => view('admin.account')) ->name('admin.account'); Route::get('/profile', [AdminAuthController::class, 'profile'])->name('admin.profile'); Route::post( 'admin/orders/upload-excel-preview', [\App\Http\Controllers\Admin\AdminOrderController::class, 'uploadExcelPreview'] )->name('admin.orders.upload.excel.preview'); //--------------------------- // CONTAINER ROUTES //--------------------------- Route::get('/containers', [ContainerController::class, 'index']) ->name('containers.index'); Route::get('/containers/create', [ContainerController::class, 'create']) ->name('containers.create'); Route::post('/containers', [ContainerController::class, 'store']) ->name('containers.store'); Route::get('/containers/{container}', [ContainerController::class, 'show']) ->name('containers.show'); Route::post('/containers/{container}/update-rows', [ContainerController::class, 'updateRows']) ->name('containers.rows.update'); Route::post('containers/{container}/status', [ContainerController::class, 'updateStatus']) ->name('containers.update-status'); Route::delete('/containers/{container}', [ContainerController::class, 'destroy']) ->name('containers.destroy'); Route::get('containers/{container}/download-pdf', [ContainerController::class, 'downloadPdf']) ->name('containers.download.pdf'); Route::get('/admin/containers/{container}/download-excel', [ContainerController::class, 'downloadExcel']) ->name('containers.download.excel'); // --------------------------- // USER REQUESTS // --------------------------- Route::get('/requests', [UserRequestController::class, 'index']) ->name('admin.requests'); Route::get('/requests/approve/{id}', [UserRequestController::class, 'approve']) ->name('admin.requests.approve'); Route::get('/requests/reject/{id}', [UserRequestController::class, 'reject']) ->name('admin.requests.reject'); // PROFILE UPDATE REQUESTS Route::get('/profile-update-requests', [UserRequestController::class, 'profileUpdateRequests'] )->name('admin.profile.requests'); Route::get('/profile-update/approve/{id}', [UserRequestController::class, 'approveProfileUpdate'] )->name('admin.profile.approve'); Route::get('/profile-update/reject/{id}', [UserRequestController::class, 'rejectProfileUpdate'] )->name('admin.profile.reject'); // --------------------------- // MARK LIST // --------------------------- Route::get('/mark-list', [AdminMarkListController::class, 'index']) ->name('admin.marklist.index'); Route::get('/mark-list/status/{id}', [AdminMarkListController::class, 'toggleStatus']) ->name('admin.marklist.toggle'); // --------------------------- // ORDERS (UPDATED) // --------------------------- Route::get('/orders', [AdminOrderController::class, 'index']) ->name('admin.orders'); Route::get('/orders/list', [AdminOrderController::class, 'index']) ->name('admin.orders.index'); Route::get('/orders/{id}', [AdminOrderController::class, 'show']) ->name('admin.orders.show'); Route::post('/orders/temp/add', [AdminOrderController::class, 'addTempItem']) ->name('admin.orders.temp.add'); Route::post('/orders/temp/delete', [AdminOrderController::class, 'deleteTempItem']) ->name('admin.orders.temp.delete'); Route::post('/orders/temp/reset', [AdminOrderController::class, 'resetTemp']) ->name('admin.orders.temp.reset'); Route::post('/orders/finish', [AdminOrderController::class, 'finishOrder']) ->name('admin.orders.finish'); Route::get('/orders/view/{id}', [AdminOrderController::class, 'popup']) ->name('admin.orders.popup'); Route::get('/orders/{id}/see', [AdminOrderController::class, 'see']) ->name('orders.see'); // --------------------------- // ORDERS (FIXED ROUTES) // --------------------------- Route::post('/orders/{order}/item', [AdminOrderController::class, 'addItem']) ->name('admin.orders.addItem'); Route::delete('/orders/item/{id}', [AdminOrderController::class, 'deleteItem']) ->name('admin.orders.deleteItem'); Route::post('/orders/item/{id}/restore', [AdminOrderController::class, 'restoreItem']) ->name('admin.orders.restoreItem'); Route::put('/orders/item/update/{id}', [AdminOrderController::class, 'updateItem']) ->name('admin.orders.updateItem'); Route::delete('/orders/{id}/delete', [AdminOrderController::class, 'destroy']) ->name('admin.orders.destroy'); // --------------------------- // SHIPMENTS (FIXED ROUTES) // --------------------------- Route::get('/shipments', [ShipmentController::class, 'index']) ->name('admin.shipments'); Route::post('/shipments', [ShipmentController::class, 'store']) ->name('admin.shipments.store'); Route::post('/shipments/update-status', [ShipmentController::class, 'updateStatus']) ->name('admin.shipments.updateStatus'); Route::get('/shipments/{id}/orders', [ShipmentController::class, 'getShipmentOrders']) ->name('admin.shipments.orders'); Route::get('/shipments/{id}', [ShipmentController::class, 'show']) ->name('admin.shipments.show'); Route::put('/shipments/{id}', [ShipmentController::class, 'update']) ->name('admin.shipments.update'); Route::delete('/shipments/{id}', [ShipmentController::class, 'destroy']) ->name('admin.shipments.destroy'); Route::get('/shipment/dummy/{id}', [ShipmentController::class, 'dummy']) ->name('admin.shipments.dummy'); // --------------------------- // INVOICES // --------------------------- Route::get('/invoices', [AdminInvoiceController::class, 'index']) ->name('admin.invoices.index'); Route::get('/invoices/{id}/popup', [AdminInvoiceController::class, 'popup']) ->name('admin.invoices.popup'); Route::get('/invoices/{id}/edit', [AdminInvoiceController::class, 'edit']) ->name('admin.invoices.edit'); Route::post('/invoices/{id}/update', [AdminInvoiceController::class, 'update']) ->name('admin.invoices.update'); Route::post('/invoices/{invoice}/installments', [AdminInvoiceController::class, 'storeInstallment']) ->name('admin.invoice.installment.store'); Route::post('/invoices/{id}/installment', [AdminInvoiceController::class, 'storeInstallment']) ->name('admin.invoice.installment.store'); Route::delete('/installment/{id}', [AdminInvoiceController::class, 'deleteInstallment']) ->name('admin.invoice.installment.delete'); Route::put('admin/invoices/{invoice}/items', [AdminInvoiceController::class, 'updateItems']) ->name('admin.invoices.items.update'); Route::post('/admin/invoices/{invoice}/charge-group', [AdminInvoiceController::class, 'storeChargeGroup']) ->name('admin.invoices.charge-group.store'); // рдЬрд░ create page рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓ рддрд░ AdminInvoiceController рдордзреНрдпреЗ create() рдЕрд╕рд╛рд╡рд╛. // рдирд╕реЗрд▓ рддрд░ рд╣рд╛ route comment / delete рдХрд░. // Route::get('/admin/invoices/create', [AdminInvoiceController::class, 'create']) // ->name('admin.invoices.create'); // --------------------------- // CUSTOMERS // --------------------------- Route::get('/customers', [AdminCustomerController::class, 'index']) ->name('admin.customers.index'); Route::get('/customers/add', [AdminCustomerController::class, 'create']) ->name('admin.customers.add'); Route::post('/customers/store', [AdminCustomerController::class, 'store']) ->name('admin.customers.store'); Route::get('/customers/{id}/view', [AdminCustomerController::class, 'view']) ->name('admin.customers.view'); Route::post('/customers/{id}/status', [AdminCustomerController::class, 'toggleStatus']) ->name('admin.customers.status'); // CHAT Route::get('/chat-support', [AdminChatController::class, 'index']) ->name('admin.chat_support'); Route::get('/chat-support/{ticketId}', [AdminChatController::class, 'openChat']) ->name('admin.chat.open'); Route::post('/chat-support/{ticketId}/send', [AdminChatController::class, 'sendMessage']) ->name('admin.chat.send'); }); // ========================================== // ADMIN ACCOUNT (AJAX) ROUTES // ========================================== Route::prefix('admin/account') ->middleware('auth:admin') ->name('admin.account.') ->group(function () { Route::get('/dashboard', [AdminAccountController::class, 'getDashboardData']) ->name('dashboard'); Route::get('/available-orders', [AdminAccountController::class, 'getAvailableOrders']) ->name('orders.available'); Route::post('/create-order', [AdminAccountController::class, 'accountCreateOrder']) ->name('create'); Route::post('/toggle-payment', [AdminAccountController::class, 'togglePayment']) ->name('toggle'); Route::post('/installment/create', [AdminAccountController::class, 'addInstallment']) ->name('installment.create'); Route::post('/installment/update-status', [AdminAccountController::class, 'updateInstallmentStatus']) ->name('installment.update'); Route::get('/entry/{entry_no}', [AdminAccountController::class, 'getEntryDetails']) ->name('entry.details'); Route::post('/update-entry', [AdminAccountController::class, 'updateEntry']) ->name('update.entry'); Route::post('/delete-entry', [AdminAccountController::class, 'deleteEntry']) ->name('delete.entry'); Route::post('/add-orders-to-entry', [AdminAccountController::class, 'addOrdersToEntry']) ->name('add.orders.to.entry'); Route::get('/entry-orders/{entry_no}', [AdminAccountController::class, 'getEntryOrders']) ->name('entry.orders'); Route::post('/remove-order-from-entry', [AdminAccountController::class, 'removeOrderFromEntry']) ->name('remove.order.from.entry'); }); // --------------------------- // REPORTS DOWNLOAD ROUTES // --------------------------- Route::get('/admin/orders/download/pdf', [AdminOrderController::class, 'downloadPdf']) ->name('admin.orders.download.pdf'); Route::get('/admin/orders/download/excel', [AdminOrderController::class, 'downloadExcel']) ->name('admin.orders.download.excel'); Route::prefix('admin/account')->middleware('auth:admin')->name('admin.account.')->group(function () { Route::post('/toggle-payment', [AdminAccountController::class, 'togglePayment'])->name('toggle'); }); // STAFF RESOURCE Route::middleware(['auth:admin']) ->prefix('admin') ->name('admin.') ->group(function () { Route::resource('staff', AdminStaffController::class); }); // Extra admin prefix group Route::prefix('admin')->middleware('auth:admin')->group(function () { // ... your routes }); Route::post('/admin/broadcasting/auth', function () { return Broadcast::auth(request()); })->middleware('auth:admin'); // INVOICE DOWNLOAD (AdminInvoiceController рд╡рд╛рдкрд░реВрди) Route::get('/admin/invoices/{invoice}/download', [AdminInvoiceController::class, 'download']) ->name('admin.invoices.download'); // CONTAINER POPUP VIEW // In admin group Route::get('/admin/containers/{container}/popup', [\App\Http\Controllers\ContainerController::class, 'popupPopup']) ->name('containers.popup');