698 lines
37 KiB
PHP
698 lines
37 KiB
PHP
<?php
|
|
|
|
use App\Enums\Permission;
|
|
use App\Http\Controllers\Admin\Account\AppearanceController;
|
|
use App\Http\Controllers\Admin\Account\PasswordController;
|
|
use App\Http\Controllers\Admin\Account\PermissionsController;
|
|
use App\Http\Controllers\Admin\Account\ProfileController;
|
|
use App\Http\Controllers\Admin\AnalysisController;
|
|
use App\Http\Controllers\Admin\DashboardController;
|
|
use App\Http\Controllers\Admin\Finance\CashController;
|
|
use App\Http\Controllers\Admin\Finance\EmployeeAdvanceController;
|
|
use App\Http\Controllers\Admin\Finance\ExpenseController;
|
|
use App\Http\Controllers\Admin\Finance\PayrollController;
|
|
use App\Http\Controllers\Admin\Hr\AttendanceController;
|
|
use App\Http\Controllers\Admin\Hr\EmployeeController;
|
|
use App\Http\Controllers\Admin\Hr\LeaveRequestController;
|
|
use App\Http\Controllers\Admin\Manage\Cutting\CuttingController;
|
|
use App\Http\Controllers\Admin\Manage\Cutting\CuttingDraftItemController;
|
|
use App\Http\Controllers\Admin\Manage\Order\OrderController;
|
|
use App\Http\Controllers\Admin\Manage\Order\OrderDraftItemController;
|
|
use App\Http\Controllers\Admin\Manage\OwnerVerificationController;
|
|
use App\Http\Controllers\Admin\Manage\Purchase\PurchaseController;
|
|
use App\Http\Controllers\Admin\Manage\Purchase\PurchaseDraftItemController;
|
|
use App\Http\Controllers\Admin\Manage\Stock\RetailStockController;
|
|
use App\Http\Controllers\Admin\Manage\Stock\StockController;
|
|
use App\Http\Controllers\Admin\Manage\StokOpnameController;
|
|
use App\Http\Controllers\Admin\Master\CategoryController;
|
|
use App\Http\Controllers\Admin\Master\CustomerController;
|
|
use App\Http\Controllers\Admin\Master\ProductController;
|
|
use App\Http\Controllers\Admin\Master\RawMaterialController;
|
|
use App\Http\Controllers\Admin\Master\SupplierController;
|
|
use App\Http\Controllers\Admin\Media\PresignedUploadController;
|
|
use App\Http\Controllers\Admin\NotificationController;
|
|
use App\Http\Controllers\Admin\System\ActivityLogController;
|
|
use App\Http\Controllers\Admin\System\RoleController;
|
|
use App\Http\Controllers\Admin\System\SettingController;
|
|
use App\Http\Controllers\Auth\LoginController;
|
|
use App\Http\Controllers\Auth\LogoutController;
|
|
use App\Http\Controllers\HomeController;
|
|
use App\Http\Controllers\PushSubscriptionController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/', [HomeController::class, 'index'])->name('home');
|
|
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('/auth/login', [LoginController::class, 'index'])->name('login');
|
|
Route::post('/auth/login', [LoginController::class, 'store']);
|
|
});
|
|
|
|
Route::get('/admin/manage/cuttings/{cutting}/share', [CuttingController::class, 'share'])
|
|
->name('admin.manage.cuttings.share');
|
|
|
|
Route::middleware(['auth', 'permission:'.Permission::DASHBOARD_VIEW->value])->group(function () {
|
|
Route::post('/auth/logout', [LogoutController::class, 'store'])->name('logout');
|
|
|
|
// Media presigned upload
|
|
Route::post('/admin/media/presign', [PresignedUploadController::class, 'presign'])->name('media.presign');
|
|
Route::put('/admin/media/local-upload', [PresignedUploadController::class, 'localUpload'])->name('media.local-upload');
|
|
|
|
// Push Notifications
|
|
Route::post('/push-subscriptions', [PushSubscriptionController::class, 'store'])->name('push_subscriptions.store');
|
|
Route::delete('/push-subscriptions', [PushSubscriptionController::class, 'destroy'])->name('push_subscriptions.destroy');
|
|
|
|
// Notifications
|
|
Route::get('/notifications', [NotificationController::class, 'index'])->name('notifications.index');
|
|
Route::patch('/notifications/{notification}/read', [NotificationController::class, 'markAsRead'])->name('notifications.read');
|
|
Route::patch('/notifications/read-all', [NotificationController::class, 'markAllAsRead'])->name('notifications.read_all');
|
|
Route::delete('/notifications/{notification}', [NotificationController::class, 'destroy'])->name('notifications.destroy');
|
|
Route::delete('/notifications', [NotificationController::class, 'destroyAll'])->name('notifications.destroy_all');
|
|
|
|
Route::prefix('admin')->name('admin.')->group(function () {
|
|
Route::get('/dashboard', [DashboardController::class, 'index'])
|
|
->name('dashboard');
|
|
|
|
Route::get('/analysis', [AnalysisController::class, 'index'])
|
|
->middleware('permission:'.Permission::ANALYSIS_VIEW->value)
|
|
->name('analysis');
|
|
|
|
Route::prefix('master')->name('master.')->group(function () {
|
|
Route::prefix('categories')->name('categories.')
|
|
->middleware('permission:'.Permission::CATEGORIES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [CategoryController::class, 'index'])->name('index');
|
|
|
|
Route::post('/', [CategoryController::class, 'store'])
|
|
->middleware('permission:'.Permission::CATEGORIES_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::put('{category}', [CategoryController::class, 'update'])
|
|
->middleware('permission:'.Permission::CATEGORIES_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{category}', [CategoryController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::CATEGORIES_DELETE->value)
|
|
->name('destroy');
|
|
});
|
|
|
|
Route::prefix('products')->name('products.')
|
|
->middleware('permission:'.Permission::PRODUCTS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [ProductController::class, 'index'])->name('index');
|
|
|
|
Route::get('create', [ProductController::class, 'create'])
|
|
->middleware('permission:'.Permission::PRODUCTS_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('/', [ProductController::class, 'store'])
|
|
->middleware('permission:'.Permission::PRODUCTS_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::get('{product}/edit', [ProductController::class, 'edit'])
|
|
->middleware([
|
|
'permission:'.Permission::PRODUCTS_UPDATE->value,
|
|
'no_pending_owner_verification:product',
|
|
])
|
|
->name('edit');
|
|
|
|
Route::put('{product}', [ProductController::class, 'update'])
|
|
->middleware([
|
|
'permission:'.Permission::PRODUCTS_UPDATE->value,
|
|
'no_pending_owner_verification:product',
|
|
])
|
|
->name('update');
|
|
|
|
Route::delete('{product}', [ProductController::class, 'destroy'])
|
|
->middleware([
|
|
'permission:'.Permission::PRODUCTS_DELETE->value,
|
|
'no_pending_owner_verification:product',
|
|
])
|
|
->name('destroy');
|
|
|
|
Route::patch('{product}/toggle-status', [ProductController::class, 'toggleStatus'])
|
|
->middleware([
|
|
'permission:'.Permission::PRODUCTS_TOGGLE_STATUS->value,
|
|
'no_pending_owner_verification:product',
|
|
])
|
|
->name('toggle_status');
|
|
});
|
|
|
|
Route::prefix('raw-materials')->name('raw_materials.')
|
|
->middleware('permission:'.Permission::RAW_MATERIALS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('create', [RawMaterialController::class, 'create'])
|
|
->middleware('permission:'.Permission::RAW_MATERIALS_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('/', [RawMaterialController::class, 'store'])
|
|
->middleware('permission:'.Permission::RAW_MATERIALS_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::get('{rawMaterial}/edit', [RawMaterialController::class, 'edit'])
|
|
->middleware([
|
|
'permission:'.Permission::RAW_MATERIALS_UPDATE->value,
|
|
'no_pending_owner_verification:rawMaterial',
|
|
])
|
|
->name('edit');
|
|
|
|
Route::put('{rawMaterial}', [RawMaterialController::class, 'update'])
|
|
->middleware([
|
|
'permission:'.Permission::RAW_MATERIALS_UPDATE->value,
|
|
'no_pending_owner_verification:rawMaterial',
|
|
])
|
|
->name('update');
|
|
|
|
Route::patch('{rawMaterial}/toggle-status', [RawMaterialController::class, 'toggleStatus'])
|
|
->middleware([
|
|
'permission:'.Permission::RAW_MATERIALS_TOGGLE_STATUS->value,
|
|
'no_pending_owner_verification:rawMaterial',
|
|
])
|
|
->name('toggle_status');
|
|
|
|
Route::delete('{rawMaterial}', [RawMaterialController::class, 'destroy'])
|
|
->middleware([
|
|
'permission:'.Permission::RAW_MATERIALS_DELETE->value,
|
|
'no_pending_owner_verification:rawMaterial',
|
|
])
|
|
->name('destroy');
|
|
|
|
Route::get('/', [RawMaterialController::class, 'index'])->name('index');
|
|
});
|
|
|
|
Route::prefix('suppliers')->name('suppliers.')
|
|
->middleware('permission:'.Permission::SUPPLIERS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [SupplierController::class, 'index'])->name('index');
|
|
|
|
Route::post('/', [SupplierController::class, 'store'])
|
|
->middleware('permission:'.Permission::SUPPLIERS_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::put('{supplier}', [SupplierController::class, 'update'])
|
|
->middleware('permission:'.Permission::SUPPLIERS_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{supplier}', [SupplierController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::SUPPLIERS_DELETE->value)
|
|
->name('destroy');
|
|
});
|
|
|
|
Route::prefix('customers')->name('customers.')
|
|
->middleware('permission:'.Permission::CUSTOMERS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [CustomerController::class, 'index'])->name('index');
|
|
|
|
Route::post('/', [CustomerController::class, 'store'])
|
|
->middleware('permission:'.Permission::CUSTOMERS_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::put('{customer}', [CustomerController::class, 'update'])
|
|
->middleware('permission:'.Permission::CUSTOMERS_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{customer}', [CustomerController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::CUSTOMERS_DELETE->value)
|
|
->name('destroy');
|
|
});
|
|
|
|
});
|
|
|
|
Route::prefix('manage')->name('manage.')->group(function () {
|
|
Route::prefix('purchases')->name('purchases.')
|
|
->middleware('permission:'.Permission::PURCHASES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [PurchaseController::class, 'index'])->name('index');
|
|
|
|
Route::get('create', [PurchaseController::class, 'create'])
|
|
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('/', [PurchaseController::class, 'store'])
|
|
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::post('draft-items', [PurchaseDraftItemController::class, 'store'])
|
|
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
|
->name('draft_items.store');
|
|
|
|
Route::get('{purchase}/edit', [PurchaseController::class, 'edit'])
|
|
->middleware([
|
|
'permission:'.Permission::PURCHASES_UPDATE->value,
|
|
'no_pending_owner_verification:purchase',
|
|
])
|
|
->name('edit');
|
|
|
|
Route::put('{purchase}', [PurchaseController::class, 'update'])
|
|
->middleware([
|
|
'permission:'.Permission::PURCHASES_UPDATE->value,
|
|
'no_pending_owner_verification:purchase',
|
|
])
|
|
->name('update');
|
|
|
|
Route::delete('{purchase}', [PurchaseController::class, 'destroy'])
|
|
->middleware([
|
|
'permission:'.Permission::PURCHASES_DELETE->value,
|
|
'no_pending_owner_verification:purchase',
|
|
])
|
|
->name('destroy');
|
|
|
|
Route::post('draft-items/new-variant', [PurchaseDraftItemController::class, 'storeNewVariant'])
|
|
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
|
->name('draft_items.store_new_variant');
|
|
|
|
Route::delete('draft-items/{rawMaterialPrice}', [PurchaseDraftItemController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
|
->name('draft_items.destroy');
|
|
});
|
|
|
|
Route::prefix('orders')->name('orders.')
|
|
->middleware('permission:'.Permission::ORDERS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [OrderController::class, 'index'])->name('index');
|
|
|
|
Route::get('create', [OrderController::class, 'create'])
|
|
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('draft-items', [OrderDraftItemController::class, 'store'])
|
|
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
|
->name('draft_items.store');
|
|
|
|
Route::put('draft-items/resync-prices', [OrderDraftItemController::class, 'resyncPrices'])
|
|
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
|
->name('draft_items.resync_prices');
|
|
|
|
Route::delete('draft-items/{productVariant}', [OrderDraftItemController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
|
->name('draft_items.destroy');
|
|
|
|
Route::post('/', [OrderController::class, 'store'])
|
|
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::get('{order}', [OrderController::class, 'show'])->name('show');
|
|
|
|
Route::get('{order}/edit', [OrderController::class, 'edit'])
|
|
->middleware('permission:'.Permission::ORDERS_UPDATE->value)
|
|
->name('edit');
|
|
|
|
Route::put('{order}', [OrderController::class, 'update'])
|
|
->middleware('permission:'.Permission::ORDERS_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::post('{order}/status', [OrderController::class, 'transitionStatus'])
|
|
->name('transition_status');
|
|
|
|
Route::delete('{order}', [OrderController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::ORDERS_DELETE->value)
|
|
->name('destroy');
|
|
});
|
|
|
|
Route::prefix('cuttings')->name('cuttings.')
|
|
->group(function () {
|
|
Route::get('/', [CuttingController::class, 'index'])
|
|
->middleware('permission:'.Permission::CUTTINGS_VIEW->value)
|
|
->name('index');
|
|
|
|
Route::get('create', [CuttingController::class, 'create'])
|
|
->middleware('permission:'.Permission::CUTTINGS_VIEW->value.'|'.Permission::CUTTINGS_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('/', [CuttingController::class, 'store'])
|
|
->middleware('permission:'.Permission::CUTTINGS_VIEW->value.'|'.Permission::CUTTINGS_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::get('{cutting}/edit', [CuttingController::class, 'edit'])
|
|
->middleware('permission:'.Permission::CUTTINGS_VIEW->value.'|'.Permission::CUTTINGS_UPDATE->value)
|
|
->name('edit');
|
|
|
|
Route::put('{cutting}', [CuttingController::class, 'update'])
|
|
->middleware('permission:'.Permission::CUTTINGS_VIEW->value.'|'.Permission::CUTTINGS_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{cutting}', [CuttingController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::CUTTINGS_VIEW->value.'|'.Permission::CUTTINGS_DELETE->value)
|
|
->name('destroy');
|
|
|
|
Route::post('{cutting}/status', [CuttingController::class, 'transitionStatus'])
|
|
->middleware('permission:'.Permission::CUTTINGS_COMPLETE->value.'|'.Permission::CUTTINGS_VERIFY->value.'|'.Permission::CUTTINGS_REJECT->value)
|
|
->name('transition_status');
|
|
|
|
Route::post('draft-materials', [CuttingDraftItemController::class, 'storeMaterial'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('draft_materials.store');
|
|
|
|
Route::delete('draft-materials/{rawMaterialPrice}', [CuttingDraftItemController::class, 'destroyMaterial'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('draft_materials.destroy');
|
|
|
|
Route::post('draft-results', [CuttingDraftItemController::class, 'storeResult'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('draft_results.store');
|
|
|
|
Route::delete('draft-results/{productVariant}', [CuttingDraftItemController::class, 'destroyResult'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('draft_results.destroy');
|
|
|
|
Route::post('draft-combinations', [CuttingDraftItemController::class, 'storeCombination'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('draft_combinations.store');
|
|
|
|
Route::delete('draft-combinations/{combinationId}', [CuttingDraftItemController::class, 'destroyCombination'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('draft_combinations.destroy');
|
|
|
|
Route::post('quick-create-raw-material', [CuttingDraftItemController::class, 'quickCreateRawMaterial'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('quick_create_raw_material');
|
|
|
|
Route::post('quick-create-product', [CuttingDraftItemController::class, 'quickCreateProduct'])
|
|
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
|
->name('quick_create_product');
|
|
});
|
|
|
|
Route::prefix('stocks')->name('stocks.')
|
|
->middleware('permission:'.Permission::STOCKS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [StockController::class, 'index'])->name('index');
|
|
|
|
Route::post('{cutting}/verify', [StockController::class, 'verify'])
|
|
->middleware('permission:'.Permission::CUTTINGS_VERIFY->value)
|
|
->name('verify');
|
|
});
|
|
|
|
Route::prefix('retail-stock')->name('retail-stock.')
|
|
->middleware('permission:'.Permission::STOCKS_VIEW->value)
|
|
->group(function () {
|
|
Route::post('/transfer', [RetailStockController::class, 'transfer'])->name('transfer');
|
|
});
|
|
|
|
Route::prefix('stok-opnames')->name('stok-opnames.')
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [StokOpnameController::class, 'index'])->name('index');
|
|
|
|
Route::get('create', [StokOpnameController::class, 'create'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('/', [StokOpnameController::class, 'store'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::post('auto-save', [StokOpnameController::class, 'autoSave'])
|
|
->name('auto_save');
|
|
|
|
Route::get('{stokOpname}/edit', [StokOpnameController::class, 'edit'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_UPDATE->value)
|
|
->name('edit');
|
|
|
|
Route::put('{stokOpname}', [StokOpnameController::class, 'update'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{stokOpname}', [StokOpnameController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_DELETE->value)
|
|
->name('destroy');
|
|
|
|
Route::post('{stokOpname}/submit', [StokOpnameController::class, 'submit'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_SUBMIT->value)
|
|
->name('submit');
|
|
|
|
Route::post('{stokOpname}/verify', [StokOpnameController::class, 'verify'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_VERIFY->value)
|
|
->name('verify');
|
|
|
|
Route::post('{stokOpname}/reject', [StokOpnameController::class, 'reject'])
|
|
->middleware('permission:'.Permission::STOK_OPNAMES_VERIFY->value)
|
|
->name('reject');
|
|
});
|
|
|
|
Route::prefix('owner-verifications')->name('owner_verifications.')
|
|
->group(function () {
|
|
Route::get('requests/{ownerVerificationRequest}', [OwnerVerificationController::class, 'show'])
|
|
->name('show');
|
|
|
|
Route::post('cuttings/{cutting}/approve', [OwnerVerificationController::class, 'approveCutting'])
|
|
->middleware('permission:'.Permission::OWNER_VERIFICATIONS_VERIFY->value)
|
|
->name('approve');
|
|
|
|
Route::post('cuttings/{cutting}/reject', [OwnerVerificationController::class, 'rejectCutting'])
|
|
->middleware('permission:'.Permission::OWNER_VERIFICATIONS_REJECT->value)
|
|
->name('reject');
|
|
|
|
Route::post('requests/{ownerVerificationRequest}/approve', [OwnerVerificationController::class, 'approveRequest'])
|
|
->middleware('permission:'.Permission::OWNER_VERIFICATIONS_VERIFY->value)
|
|
->name('approve_request');
|
|
|
|
Route::post('requests/{ownerVerificationRequest}/reject', [OwnerVerificationController::class, 'rejectRequest'])
|
|
->middleware('permission:'.Permission::OWNER_VERIFICATIONS_REJECT->value)
|
|
->name('reject_request');
|
|
});
|
|
});
|
|
|
|
Route::prefix('system')->name('system.')->group(function () {
|
|
Route::prefix('roles')->name('roles.')
|
|
->middleware('permission:'.Permission::ROLES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [RoleController::class, 'index'])->name('index');
|
|
|
|
Route::get('create', [RoleController::class, 'create'])
|
|
->middleware('permission:'.Permission::ROLES_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('/', [RoleController::class, 'store'])
|
|
->middleware('permission:'.Permission::ROLES_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::get('{role}/edit', [RoleController::class, 'edit'])
|
|
->middleware('permission:'.Permission::ROLES_UPDATE->value)
|
|
->name('edit');
|
|
|
|
Route::put('{role}', [RoleController::class, 'update'])
|
|
->middleware('permission:'.Permission::ROLES_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{role}', [RoleController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::ROLES_DELETE->value)
|
|
->name('destroy');
|
|
});
|
|
|
|
Route::prefix('activity-logs')->name('activity_logs.')
|
|
->middleware('permission:'.Permission::ACTIVITY_LOGS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [ActivityLogController::class, 'index'])->name('index');
|
|
});
|
|
|
|
Route::prefix('settings')->name('settings.')
|
|
->middleware('permission:'.Permission::SETTINGS_VIEW_SYSTEM->value.'|'.Permission::SETTINGS_VIEW_SOCIAL_MEDIA->value.'|'.Permission::SETTINGS_VIEW_MARKETPLACE->value.'|'.Permission::SETTINGS_VIEW_HR->value.'|'.Permission::SETTINGS_VIEW_HOMEPAGE->value)
|
|
->group(function () {
|
|
Route::get('/', [SettingController::class, 'index'])->name('index');
|
|
|
|
Route::put('system', [SettingController::class, 'updateSystem'])
|
|
->middleware('permission:'.Permission::SETTINGS_UPDATE_SYSTEM->value)
|
|
->name('system.update');
|
|
|
|
Route::put('social-media', [SettingController::class, 'updateSocialMedia'])
|
|
->middleware('permission:'.Permission::SETTINGS_UPDATE_SOCIAL_MEDIA->value)
|
|
->name('social_media.update');
|
|
|
|
Route::put('marketplace', [SettingController::class, 'updateMarketplace'])
|
|
->middleware('permission:'.Permission::SETTINGS_UPDATE_MARKETPLACE->value)
|
|
->name('marketplace.update');
|
|
|
|
Route::put('hr', [SettingController::class, 'updateHr'])
|
|
->middleware('permission:'.Permission::SETTINGS_UPDATE_HR->value)
|
|
->name('hr.update');
|
|
|
|
Route::put('homepage', [SettingController::class, 'updateHomepage'])
|
|
->middleware('permission:'.Permission::SETTINGS_UPDATE_HOMEPAGE->value)
|
|
->name('homepage.update');
|
|
});
|
|
});
|
|
|
|
Route::prefix('account')->name('account.')->group(function () {
|
|
Route::get('profile', [ProfileController::class, 'edit'])->name('profile');
|
|
Route::put('profile', [ProfileController::class, 'update'])->name('profile.update');
|
|
|
|
Route::get('password', [PasswordController::class, 'edit'])->name('password');
|
|
Route::put('password', [PasswordController::class, 'update'])->name('password.update');
|
|
|
|
Route::get('appearance', [AppearanceController::class, 'edit'])->name('appearance');
|
|
Route::put('appearance', [AppearanceController::class, 'update'])->name('appearance.update');
|
|
|
|
Route::get('permissions', [PermissionsController::class, 'index'])->name('permissions');
|
|
});
|
|
|
|
Route::prefix('finance')->name('finance.')->group(function () {
|
|
Route::prefix('cash')->name('cash.')
|
|
->middleware('permission:'.Permission::CASH_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [CashController::class, 'index'])->name('index');
|
|
|
|
Route::post('deposit', [CashController::class, 'deposit'])
|
|
->middleware('permission:'.Permission::CASH_DEPOSIT->value)
|
|
->name('deposit');
|
|
|
|
Route::post('withdraw', [CashController::class, 'withdraw'])
|
|
->middleware('permission:'.Permission::CASH_WITHDRAW->value)
|
|
->name('withdraw');
|
|
|
|
Route::put('transactions/{cashTransaction}', [CashController::class, 'update'])
|
|
->middleware('permission:'.Permission::CASH_UPDATE->value)
|
|
->name('transactions.update');
|
|
|
|
Route::delete('transactions/{cashTransaction}', [CashController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::CASH_DELETE->value)
|
|
->name('transactions.destroy');
|
|
});
|
|
|
|
Route::prefix('expenses')->name('expenses.')
|
|
->middleware('permission:'.Permission::EXPENSES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [ExpenseController::class, 'index'])->name('index');
|
|
|
|
Route::post('/', [ExpenseController::class, 'store'])
|
|
->middleware('permission:'.Permission::EXPENSES_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::put('{expense}', [ExpenseController::class, 'update'])
|
|
->middleware('permission:'.Permission::EXPENSES_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{expense}', [ExpenseController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::EXPENSES_DELETE->value)
|
|
->name('destroy');
|
|
});
|
|
|
|
Route::prefix('employee-advances')->name('employee_advances.')
|
|
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [EmployeeAdvanceController::class, 'index'])->name('index');
|
|
|
|
Route::post('/', [EmployeeAdvanceController::class, 'store'])
|
|
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::put('{employeeAdvance}', [EmployeeAdvanceController::class, 'update'])
|
|
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{employeeAdvance}', [EmployeeAdvanceController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_DELETE->value)
|
|
->name('destroy');
|
|
|
|
Route::post('{employeeAdvance}/approve', [EmployeeAdvanceController::class, 'approve'])
|
|
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_VERIFY->value)
|
|
->name('approve');
|
|
|
|
Route::post('{employeeAdvance}/reject', [EmployeeAdvanceController::class, 'reject'])
|
|
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_VERIFY->value)
|
|
->name('reject');
|
|
|
|
Route::post('{employeeAdvance}/pay', [EmployeeAdvanceController::class, 'pay'])
|
|
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_PAY->value)
|
|
->name('pay');
|
|
});
|
|
|
|
Route::prefix('payroll')->name('payroll.')
|
|
->middleware('permission:'.Permission::PAYROLL_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [PayrollController::class, 'index'])->name('index');
|
|
|
|
Route::post('{payroll}/adjustments', [PayrollController::class, 'storeAdjustment'])
|
|
->middleware('permission:'.Permission::PAYROLL_ADJUST->value)
|
|
->name('adjustments.store');
|
|
|
|
Route::put('adjustments/{payrollAdjustment}', [PayrollController::class, 'updateAdjustment'])
|
|
->middleware('permission:'.Permission::PAYROLL_ADJUST->value)
|
|
->name('adjustments.update');
|
|
|
|
Route::delete('adjustments/{payrollAdjustment}', [PayrollController::class, 'destroyAdjustment'])
|
|
->middleware('permission:'.Permission::PAYROLL_ADJUST->value)
|
|
->name('adjustments.destroy');
|
|
});
|
|
});
|
|
|
|
Route::prefix('hr')->name('hr.')->group(function () {
|
|
Route::prefix('attendances')->name('attendances.')
|
|
->middleware('permission:'.Permission::ATTENDANCES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [AttendanceController::class, 'index'])->name('index');
|
|
|
|
Route::post('check-in', [AttendanceController::class, 'checkIn'])
|
|
->middleware('permission:'.Permission::ATTENDANCES_CREATE->value)
|
|
->name('check_in');
|
|
|
|
Route::post('check-out', [AttendanceController::class, 'checkOut'])
|
|
->middleware('permission:'.Permission::ATTENDANCES_CREATE->value)
|
|
->name('check_out');
|
|
|
|
Route::delete('{attendance}', [AttendanceController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::ATTENDANCES_DELETE->value)
|
|
->name('destroy');
|
|
});
|
|
|
|
Route::prefix('employees')->name('employees.')
|
|
->middleware('permission:'.Permission::EMPLOYEES_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [EmployeeController::class, 'index'])->name('index');
|
|
|
|
Route::get('create', [EmployeeController::class, 'create'])
|
|
->middleware('permission:'.Permission::EMPLOYEES_CREATE->value)
|
|
->name('create');
|
|
|
|
Route::post('/', [EmployeeController::class, 'store'])
|
|
->middleware('permission:'.Permission::EMPLOYEES_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::get('{user}/edit', [EmployeeController::class, 'edit'])
|
|
->middleware('permission:'.Permission::EMPLOYEES_UPDATE->value)
|
|
->name('edit');
|
|
|
|
Route::put('{user}', [EmployeeController::class, 'update'])
|
|
->middleware('permission:'.Permission::EMPLOYEES_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{user}', [EmployeeController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::EMPLOYEES_DELETE->value)
|
|
->name('destroy');
|
|
|
|
Route::post('{user}/reset-password', [EmployeeController::class, 'resetPassword'])
|
|
->middleware('permission:'.Permission::EMPLOYEES_RESET_PASSWORD->value)
|
|
->name('reset_password');
|
|
|
|
Route::patch('{user}/toggle-status', [EmployeeController::class, 'toggleStatus'])
|
|
->middleware('permission:'.Permission::EMPLOYEES_TOGGLE_STATUS->value)
|
|
->name('toggle_status');
|
|
});
|
|
|
|
Route::prefix('leave-requests')->name('leave_requests.')
|
|
->middleware('permission:'.Permission::LEAVE_REQUESTS_VIEW->value)
|
|
->group(function () {
|
|
Route::get('/', [LeaveRequestController::class, 'index'])->name('index');
|
|
|
|
Route::post('/', [LeaveRequestController::class, 'store'])
|
|
->middleware('permission:'.Permission::LEAVE_REQUESTS_CREATE->value)
|
|
->name('store');
|
|
|
|
Route::put('{leaveRequest}', [LeaveRequestController::class, 'update'])
|
|
->middleware('permission:'.Permission::LEAVE_REQUESTS_UPDATE->value)
|
|
->name('update');
|
|
|
|
Route::delete('{leaveRequest}', [LeaveRequestController::class, 'destroy'])
|
|
->middleware('permission:'.Permission::LEAVE_REQUESTS_DELETE->value)
|
|
->name('destroy');
|
|
|
|
Route::post('{leaveRequest}/approve', [LeaveRequestController::class, 'approve'])
|
|
->middleware('permission:'.Permission::LEAVE_REQUESTS_VERIFY->value)
|
|
->name('approve');
|
|
|
|
Route::post('{leaveRequest}/reject', [LeaveRequestController::class, 'reject'])
|
|
->middleware('permission:'.Permission::LEAVE_REQUESTS_VERIFY->value)
|
|
->name('reject');
|
|
});
|
|
});
|
|
});
|
|
});
|