80 lines
3.1 KiB
PHP
80 lines
3.1 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\Api\Setting\SettingController;
|
|
use App\Http\Controllers\Api\Client\ClientController;
|
|
use App\Http\Controllers\Api\Service\OrderController;
|
|
use App\Http\Controllers\Api\Service\ProductCategoryController;
|
|
use App\Http\Controllers\Api\Service\ServiceController;
|
|
use App\Http\Controllers\Api\Transaction\TransactionController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::prefix('v1')->as('api.')->group(function () {
|
|
// Auth
|
|
Route::prefix('client')->as('client.')
|
|
->group(function () {
|
|
Route::controller(ClientController::class)->group(function () {
|
|
Route::post('login', 'login')->name('login');
|
|
Route::post('register', 'register')->name('register');
|
|
|
|
Route::group(['middleware' => ['api.auth']], function () {
|
|
Route::get('me', 'me')->name('me');
|
|
Route::post('logout', 'logout')->name('logout');
|
|
});
|
|
});
|
|
});
|
|
|
|
// Services (Products) - Public & Protected Routes
|
|
Route::prefix('services')->as('services.')->group(function () {
|
|
Route::controller(ServiceController::class)->group(function () {
|
|
Route::get('get-list', 'getService')->name('getList');
|
|
Route::get('{product:slug}', 'getDetailService')->name('detail');
|
|
});
|
|
});
|
|
|
|
Route::middleware(['api.auth'])->prefix('orders')->as('orders.')->group(function () {
|
|
Route::controller(OrderController::class)->group(function () {
|
|
Route::get('/', 'getList')->name('list');
|
|
Route::post('/', 'storeOrder')->name('store');
|
|
Route::post('{id}/pay', 'payOrder')->name('pay');
|
|
});
|
|
});
|
|
|
|
Route::prefix('setting')->as('setting.')->group(function () {
|
|
Route::controller(SettingController::class)->group(function () {
|
|
Route::get('/', 'getSetting')->name('get');
|
|
});
|
|
});
|
|
|
|
// Product Categories - Protected Routes
|
|
Route::middleware(['api.auth'])->prefix('group')->as('product-categories.')->group(function () {
|
|
Route::controller(ProductCategoryController::class)->group(function () {
|
|
Route::get('get-list', 'getCategories')->name('getList');
|
|
Route::get('{product_categories:slug}', 'getDetailCategory')->name('detail');
|
|
Route::get('{parentSlug}/{childSlug}', 'getChildCategoryWithParent')->name('childWithParent');
|
|
});
|
|
});
|
|
|
|
|
|
Route::middleware(['api.auth'])->prefix('transaction')->as('transaction.')->group(function () {
|
|
Route::controller(TransactionController::class)->group(function () {
|
|
Route::get('get-list', 'getTransactions')->name('getList');
|
|
Route::post('pay', 'handle')->name('pay');
|
|
Route::get('verify', 'verifyPayment')->name('verify');
|
|
Route::get('detail-by-code', 'getByPublicCode')->name('detailByCode');
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
Route::get('v1/payment/vnpay/return', [TransactionController::class, 'returnCallback']);
|
|
|
|
|
|
|
|
|
|
|
|
Route::any('{any}', function () {
|
|
return response()->json([
|
|
'error' => true,
|
|
'message' => 'API Route not found'
|
|
], 404);
|
|
})->where('any', '.*'); |