feat: Reimplement order and invoice management with new service and repository layers, introduce compression middleware, and update database schema.
This commit is contained in:
+48
-42
@@ -17,6 +17,7 @@ use App\Http\Controllers\Api\Admin\DnsManager\ServerController as DnsServerContr
|
||||
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\Controllers\Api\System\CompressionTestController;
|
||||
use App\Http\Services\Media;
|
||||
use App\Http\Services\vCenter as ServiceVCenter;
|
||||
use App\Models\ModuleVmware;
|
||||
@@ -39,12 +40,12 @@ Route::prefix('v1')
|
||||
/* Api for Admin */
|
||||
->group(function () {
|
||||
Route::prefix('administrator')->group(function () {
|
||||
Route::post('login', [AuthController::class, 'login']);
|
||||
Route::post('login', [AuthController::class, 'login']);
|
||||
|
||||
Route::middleware('api.auth:admin')->group(function () {
|
||||
Route::post('logout', [AuthController::class, 'logout']);
|
||||
Route::post('logout', [AuthController::class, 'logout']);
|
||||
Route::post('refresh', [AuthController::class, 'refresh']);
|
||||
Route::get('me', [AuthController::class, 'me']);
|
||||
Route::get('me', [AuthController::class, 'me']);
|
||||
|
||||
// Role Permissions
|
||||
Route::prefix('role-permissions')->group(function () {
|
||||
@@ -91,14 +92,14 @@ Route::prefix('v1')
|
||||
// Products (module: product-service)
|
||||
Route::prefix('products')->group(function () {
|
||||
Route::get('export', [ProductController::class, 'export'])->middleware('perm:product-service.manager');
|
||||
Route::get('/', [ProductController::class, 'index'])->middleware('perm:product-service.view');
|
||||
Route::post('/', [ProductController::class, 'store'])->middleware('perm:product-service.create');
|
||||
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');
|
||||
|
||||
// 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');
|
||||
@@ -111,24 +112,23 @@ Route::prefix('v1')
|
||||
->controller(ProductCategoryController::class)
|
||||
->as('product-categories.')
|
||||
->group(function () {
|
||||
Route::get('/', 'index')->middleware('perm:product-service.view')->name('index');
|
||||
Route::post('/', 'store')->middleware('perm:product-service.create')->name('store');
|
||||
Route::get('{id}', 'show')->middleware('perm:product-service.view')->name('show');
|
||||
Route::put('{id}', 'update')->middleware('perm:product-service.edit')->name('update');
|
||||
Route::delete('{id}', 'destroy')->middleware('perm:product-service.destroy')->name('destroy');
|
||||
});
|
||||
Route::get('/', 'index')->middleware('perm:product-service.view')->name('index');
|
||||
Route::post('/', 'store')->middleware('perm:product-service.create')->name('store');
|
||||
Route::get('{id}', 'show')->middleware('perm:product-service.view')->name('show');
|
||||
Route::put('{id}', 'update')->middleware('perm:product-service.edit')->name('update');
|
||||
Route::delete('{id}', 'destroy')->middleware('perm:product-service.destroy')->name('destroy');
|
||||
});
|
||||
|
||||
// Orders (module: order)
|
||||
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');
|
||||
Route::delete('{id}', [OrderController::class, 'destroy'])->middleware('perm:order.destroy');
|
||||
Route::post('{id}/accept', [OrderController::class, 'accept'])->middleware('perm:order.edit');
|
||||
Route::post('{id}/cancel', [OrderController::class, 'cancel'])->middleware('perm:order.edit');
|
||||
// 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)
|
||||
@@ -164,12 +164,12 @@ Route::prefix('v1')
|
||||
->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::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)
|
||||
@@ -203,22 +203,22 @@ Route::prefix('v1')
|
||||
|
||||
// DNS Manager — Domains (module: domain.manager)
|
||||
Route::prefix('domains')->group(function () {
|
||||
Route::get('/', [DnsDomainController::class, 'index'])->middleware('perm:domain.manager');
|
||||
Route::post('/', [DnsDomainController::class, 'store'])->middleware('perm:domain.manager');
|
||||
Route::get('/', [DnsDomainController::class, 'index'])->middleware('perm:domain.manager');
|
||||
Route::post('/', [DnsDomainController::class, 'store'])->middleware('perm:domain.manager');
|
||||
Route::get('{id}', [DnsDomainController::class, 'show'])->middleware('perm:domain.manager');
|
||||
Route::put('{id}', [DnsDomainController::class, 'update'])->middleware('perm:domain.manager');
|
||||
Route::delete('{id}', [DnsDomainController::class, 'destroy'])->middleware('perm:domain.manager');
|
||||
// DNS Records
|
||||
Route::get('{id}/dns', [DnsDomainController::class, 'dnsIndex'])->middleware('perm:domain.manager');
|
||||
Route::post('{id}/dns', [DnsDomainController::class, 'dnsStore'])->middleware('perm:domain.manager');
|
||||
// DNS Records
|
||||
Route::get('{id}/dns', [DnsDomainController::class, 'dnsIndex'])->middleware('perm:domain.manager');
|
||||
Route::post('{id}/dns', [DnsDomainController::class, 'dnsStore'])->middleware('perm:domain.manager');
|
||||
Route::put('{id}/dns/{recordId}', [DnsDomainController::class, 'dnsUpdate'])->middleware('perm:domain.manager');
|
||||
Route::delete('{id}/dns/{recordId}', [DnsDomainController::class, 'dnsDestroy'])->middleware('perm:domain.manager');
|
||||
});
|
||||
|
||||
// DNS Manager — Servers (module: domain.manager)
|
||||
Route::prefix('dns-servers')->group(function () {
|
||||
Route::get('/', [DnsServerController::class, 'index'])->middleware('perm:domain.manager');
|
||||
Route::post('/', [DnsServerController::class, 'store'])->middleware('perm:domain.manager');
|
||||
Route::get('/', [DnsServerController::class, 'index'])->middleware('perm:domain.manager');
|
||||
Route::post('/', [DnsServerController::class, 'store'])->middleware('perm:domain.manager');
|
||||
Route::get('{id}', [DnsServerController::class, 'show'])->middleware('perm:domain.manager');
|
||||
Route::put('{id}', [DnsServerController::class, 'update'])->middleware('perm:domain.manager');
|
||||
Route::delete('{id}', [DnsServerController::class, 'destroy'])->middleware('perm:domain.manager');
|
||||
@@ -232,9 +232,9 @@ Route::prefix('v1')
|
||||
|
||||
// Queue Monitor (Horizon)
|
||||
Route::prefix('queue')->group(function () {
|
||||
Route::get('jobs/recent', [QueueMonitorController::class, 'recent']);
|
||||
Route::get('jobs/recent', [QueueMonitorController::class, 'recent']);
|
||||
Route::get('jobs/pending', [QueueMonitorController::class, 'pending']);
|
||||
Route::get('jobs/failed', [QueueMonitorController::class, 'failed']);
|
||||
Route::get('jobs/failed', [QueueMonitorController::class, 'failed']);
|
||||
Route::get('jobs/metrics', [QueueMonitorController::class, 'metrics']);
|
||||
});
|
||||
|
||||
@@ -321,6 +321,12 @@ Route::prefix('v1')
|
||||
});
|
||||
});
|
||||
|
||||
// Compression Testing Routes (Development/Testing only)
|
||||
Route::prefix('v1/system/compression')->middleware(['api'])->group(function () {
|
||||
Route::get('test', [CompressionTestController::class, 'test'])->name('api.compression.test');
|
||||
Route::get('stats', [CompressionTestController::class, 'stats'])->name('api.compression.stats');
|
||||
});
|
||||
|
||||
Route::any('{any}', function () {
|
||||
return response()->json([
|
||||
'error' => true,
|
||||
|
||||
Reference in New Issue
Block a user