controller(OrderController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:order.view'); Route::post('/upload-proof', 'uploadProof')->middleware('perm:order.create'); Route::post('/', 'store')->middleware('perm:order.create'); Route::get('{id}', 'show')->middleware('perm:order.view'); Route::put('{id}', 'update')->middleware('perm:order.edit'); Route::delete('{id}', 'destroy')->middleware('perm:order.destroy'); Route::post('{id}/accept', 'accept')->middleware('perm:order.edit'); Route::post('{id}/cancel', 'cancel')->middleware('perm:order.edit'); }); // Invoices (module: invoice) Route::prefix('invoices') ->controller(InvoiceController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:invoice.view'); Route::post('/', 'store')->middleware('perm:invoice.create'); Route::get('{id}', 'show')->middleware('perm:invoice.view'); Route::put('{id}', 'update')->middleware('perm:invoice.edit'); Route::delete('{id}', 'destroy')->middleware('perm:invoice.destroy'); Route::post('{id}/paid', 'markAsPaid')->middleware('perm:invoice.edit'); Route::post('{id}/cancel', 'cancel')->middleware('perm:invoice.edit'); Route::post('{id}/remind', 'remind')->middleware('perm:invoice.edit'); Route::post('{id}/refund', 'refund')->middleware('perm:invoice.edit'); // Attachments Route::get('{id}/attachments', 'listAttachments')->middleware('perm:invoice.view'); Route::post('{id}/attachments', 'uploadAttachment')->middleware('perm:invoice.edit'); Route::delete('{id}/attachments/{attachmentId}', 'deleteAttachment')->middleware( 'perm:invoice.edit', ); // Send mail notification Route::post('{id}/send-mail', 'sendMail')->middleware('perm:invoice.edit'); }); // Reports / Data exports Route::prefix('reports/export') ->controller(ExportController::class) ->middleware('perm:report.view') ->group(function () { Route::get('history', 'history'); Route::post('preview', 'preview'); Route::post('/', 'store'); Route::get('{uuid}', 'show'); Route::get('{uuid}/download', 'download'); }); // Payments (module: payment) Route::prefix('payments') ->controller(PaymentController::class) ->group(function () { Route::get('for-select', 'forSelect'); Route::get('/', 'index')->middleware('perm:payment.view'); Route::post('/', 'store')->middleware('perm:payment.create'); Route::get('{id}', 'show')->middleware('perm:payment.view'); Route::put('{id}', 'update')->middleware('perm:payment.edit'); Route::delete('{id}', 'destroy')->middleware('perm:payment.destroy'); }); // Banks — deposit bank accounts (module: settings) Route::prefix('banks') ->controller(BankController::class) ->middleware('perm:setting.manager') ->group(function () { Route::get('/', 'index'); Route::post('/', 'store'); Route::put('{id}', 'update'); Route::delete('{id}', 'destroy'); Route::post('{id}/restore', 'restore'); }); // Transactions — manual deposit review (module: transaction) Route::prefix('transactions') ->controller(AdminTransactionController::class) ->group(function () { Route::get('/', 'index')->middleware('perm:customer.view'); Route::get('pending-count', 'pendingCount')->middleware('perm:customer.view'); Route::post('{uuid}/approve', 'approve')->middleware('perm:customer.edit'); Route::post('{uuid}/reject', 'reject')->middleware('perm:customer.edit'); });