File: /home/durgeshpandey215/public_html/subsidycrm/routes/api.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\BookingController;
use App\Http\Controllers\CustomerController;
use App\Http\Controllers\EnumStoreController;
use App\Http\Controllers\NotificationController;
use App\Http\Controllers\PaymentController;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\StandardUacController;
use App\Http\Controllers\UserController;
use App\Http\Middleware\CheckUACPermission;
Route::group(['middleware' => 'api', 'prefix' => 'v1/auth'], function () {
Route::post('/register', [AuthController::class, 'register'])->name('register');
Route::post('/login', [AuthController::class, 'login'])->name('login');
Route::post('/logout', [AuthController::class, 'logout'])->middleware('auth:api')->name('logout');
Route::post('/refresh', [AuthController::class, 'refresh'])->middleware('auth:api')->name('refresh');
Route::post('/me', [AuthController::class, 'me'])->middleware('auth:api')->name('me');
Route::post('/reset-password', [AuthController::class, 'resetPassword'])->name('reset-password');
Route::post('/change-password/{remember_token}', [AuthController::class, 'changePassword'])->name('change-password');
});
Route::group(['middleware' => ['auth:api', CheckUACPermission::class], 'prefix' => 'v1'], function () {
//Role API routes
Route::get('role', [RoleController::class, 'index'])->name('role-index');
//Standard UAC routes
Route::get('standard-uac/{role_id}', [StandardUacController::class, 'standardUac'])->name('standard-uac');
Route::get('standard-uac-model-action-group/{role_id}/{model}/{action_group}', [StandardUacController::class, 'standardUacModelActionGroup'])->name('standard-uac-model-action-group');
//Users API routes
Route::get('user', [UserController::class, 'index'])->name('user-index');
Route::get('user/{id}', [UserController::class, 'show'])->name('user-show');
Route::post('user', [UserController::class, 'store'])->name('user-store');
Route::put('user/{id}', [UserController::class, 'update'])->name('user-update');
Route::delete('user/{id}', [UserController::class, 'destroy'])->name('user-destroy');
// Customer API routes
Route::get('customer', [CustomerController::class, 'index'])->name('customer-index');
Route::get('customer/{id}', [CustomerController::class, 'show'])->name('customer-show');
Route::post('customer', [CustomerController::class, 'store'])->name('customer-store');
Route::put('customer/{id}', [CustomerController::class, 'update'])->name('customer-update');
Route::delete('customer/{id}', [CustomerController::class, 'destroy'])->name('customer-destroy');
Route::post('assign-customer', [CustomerController::class, 'assignCustomer'])->name('assign-customer');
Route::get('customer/{id}/booking', [CustomerController::class, 'customerBooking'])->name('customer-booking');
//Enum API routes
Route::get('enum-store-type/{type}', [EnumStoreController::class, 'enumStoreType'])->name('enum-store-type');
Route::get('enum-store-by-value/{type}/{id}', [EnumStoreController::class, 'enumStoreByValue'])->name('enum-store-by-value');
Route::get('enum-store-by-name/{type}/{name}', [EnumStoreController::class, 'enumStoreByName'])->name('enum-store-by-name');
// Route::get('enum-get-message/{subject}/{booking_id}', [EnumStoreController::class, 'enumGetMessage'])->name('enum-get-message');
//Booking API routes
Route::get('booking', [BookingController::class, 'index'])->name('booking-index');
Route::get('booking/{id}', [BookingController::class, 'show'])->name('booking-show');
Route::post('booking', [BookingController::class, 'store'])->name('booking-store');
Route::post('booking/{id}', [BookingController::class, 'update'])->name('booking-update');
Route::delete('booking/{id}', [BookingController::class, 'destroy'])->name('booking-destroy');
Route::post('booking/{id}/update-status',[BookingController::class, 'updateStatus'])->name('booking-update-status');
Route::get('booking/invoice/{id}/{payment_id}', [BookingController::class, 'bookingInvoice'])->name('booking-invoice');
//Payment API routes
Route::get('payment/next-invoice-no',[PaymentController::class,'nextInvoiceNo'])->name('next-invoice-no');
Route::post('payment/new/{booking_id}',[PaymentController::class,'newPayment'])->name('new-payment');
Route::delete('payment/delete/{payment_id}',[PaymentController::class,'deletePayment'])->name('delete-payment');
//Notifications API routes
Route::get('notification/get-count',[NotificationController::class,'getCount'])->name('notification-get-count');
Route::put('notification/update-view-status/{id}',[NotificationController::class,'updateViewStatus'])->name('notification-update-view-status');
Route::put('notification/update-all-view-status',[NotificationController::class,'updateAllViewStatus'])->name('notification-update-all-view-status');
Route::put('notification/update-view-none-status',[NotificationController::class,'updateViewNoneStatus'])->name('notification-update-view-none-status');
//Reports
Route::get('booking-report', [BookingController::class, 'bookingReport'])->name('booking-report');
});