feat: Implement payment proof upload for orders, add payment method selection API, and seed bank transfer payment options.

This commit is contained in:
pbao9
2026-03-11 16:57:26 +07:00
parent 74cbe2fe1a
commit 7f6264c87f
19 changed files with 706 additions and 49 deletions
+30
View File
@@ -15,6 +15,8 @@ use App\Http\Controllers\Api\Admin\VPS\VPSController;
use App\Http\Controllers\Api\Admin\VCenter\VCenterController;
use App\Http\Controllers\Api\Admin\DnsManager\ServerController as DnsServerController;
use App\Http\Controllers\Api\Admin\DnsManager\DomainController as DnsDomainController;
use App\Http\Controllers\Api\Admin\OsManager\OsGroupController;
use App\Http\Controllers\Api\Admin\OsManager\OsController;
use App\Http\Services\Media;
use App\Http\Services\vCenter as ServiceVCenter;
use App\Models\ModuleVmware;
@@ -92,8 +94,13 @@ Route::prefix('v1')
Route::get('/', [ProductController::class, 'index'])->middleware('perm:product-service.view');
Route::post('/', [ProductController::class, 'store'])->middleware('perm:product-service.create');
Route::post('import', [ProductController::class, 'import'])->middleware('perm:product-service.create');
// OS list for product configuration - must be before {id} routes
Route::get('os', [ProductController::class, 'getOsList'])->middleware('perm:product-service.view');
Route::get('{id}', [ProductController::class, 'show'])->middleware('perm:product-service.view');
Route::get('{id}/os', [ProductController::class, 'getOs'])->middleware('perm:product-service.view');
Route::get('{id}/operating-systems', [ProductController::class, 'getOperatingSystems'])->middleware('perm:product-service.view');
Route::put('{id}', [ProductController::class, 'update'])->middleware('perm:product-service.edit');
Route::delete('{id}', [ProductController::class, 'destroy'])->middleware('perm:product-service.destroy');
Route::post('{id}/duplicate', [ProductController::class, 'duplicate'])->middleware('perm:product-service.create');
@@ -115,6 +122,7 @@ Route::prefix('v1')
Route::prefix('orders')->group(function () {
Route::get('/', [OrderController::class, 'index'])->middleware('perm:order.view');
Route::get('/datatable', [OrderController::class, 'datatable'])->middleware('perm:order.view');
Route::post('/upload-proof', [OrderController::class, 'uploadProof'])->middleware('perm:order.create');
Route::post('/', [OrderController::class, 'store'])->middleware('perm:order.create');
Route::get('{id}', [OrderController::class, 'show'])->middleware('perm:order.view');
Route::put('{id}', [OrderController::class, 'update'])->middleware('perm:order.edit');
@@ -143,6 +151,7 @@ Route::prefix('v1')
// Payments (module: payment)
Route::prefix('payments')->group(function () {
Route::get('for-select', [PaymentController::class, 'forSelect']);
Route::get('/', [PaymentController::class, 'index'])->middleware('perm:payment.view');
Route::post('/', [PaymentController::class, 'store'])->middleware('perm:payment.create');
Route::get('{id}', [PaymentController::class, 'show'])->middleware('perm:payment.view');
@@ -150,6 +159,27 @@ Route::prefix('v1')
Route::delete('{id}', [PaymentController::class, 'destroy'])->middleware('perm:payment.destroy');
});
// OS Groups & OS Entries (module: module-vcenter)
Route::prefix('os-groups')
->controller(OsGroupController::class)
->as('os-groups.')
->group(function () {
Route::get('/', 'index')->middleware('perm:module-vcenter.manager')->name('index');
Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store');
Route::get('{id}', 'show')->middleware('perm:module-vcenter.manager')->name('show');
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update');
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy');
});
Route::prefix('os')
->controller(OsController::class)
->as('os.')
->group(function () {
Route::post('/', 'store')->middleware('perm:module-vcenter.manager')->name('store');
Route::put('{id}', 'update')->middleware('perm:module-vcenter.manager')->name('update');
Route::delete('{id}', 'destroy')->middleware('perm:module-vcenter.manager')->name('destroy');
});
// VPS (module: module-vcenter)
Route::prefix('vps')->group(function () {
Route::get('/', [VPSController::class, 'index'])->middleware('perm:module-vcenter.view');