Files
portal-api/routes/api/admin/billing.php
T
2026-09-28 08:26:29 +07:00

93 lines
4.1 KiB
PHP

<?php
use App\Http\Controllers\Api\Admin\Bank\BankController;
use App\Http\Controllers\Api\Admin\Invoice\InvoiceController;
use App\Http\Controllers\Api\Admin\Order\OrderController;
use App\Http\Controllers\Api\Admin\Payment\PaymentController;
use App\Http\Controllers\Api\Admin\Report\ExportController;
use App\Http\Controllers\Api\Admin\Transaction\AdminTransactionController;
use Illuminate\Support\Facades\Route;
// Orders (module: order)
Route::prefix('orders')
->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');
});