name('home'); Route::middleware('guest')->group(function () { Route::get('/auth/login', [LoginController::class, 'index'])->name('login'); Route::post('/auth/login', [LoginController::class, 'store']); }); Route::middleware(['auth', 'permission:'.Permission::DASHBOARD_VIEW->value])->group(function () { Route::post('/auth/logout', [LogoutController::class, 'store'])->name('logout'); Route::prefix('admin')->name('admin.')->group(function () { Route::get('/dashboard', [DashboardController::class, 'index']) ->name('dashboard'); 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('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) ->name('edit'); Route::put('{product}', [ProductController::class, 'update']) ->middleware('permission:'.Permission::PRODUCTS_UPDATE->value) ->name('update'); Route::patch('{product}/toggle-status', [ProductController::class, 'toggleStatus']) ->middleware('permission:'.Permission::PRODUCTS_TOGGLE_STATUS->value) ->name('toggle-status'); Route::delete('{product}', [ProductController::class, 'destroy']) ->middleware('permission:'.Permission::PRODUCTS_DELETE->value) ->name('destroy'); Route::get('/', [ProductController::class, 'index'])->name('index'); }); 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) ->name('edit'); Route::put('{rawMaterial}', [RawMaterialController::class, 'update']) ->middleware('permission:'.Permission::RAW_MATERIALS_UPDATE->value) ->name('update'); Route::patch('{rawMaterial}/toggle-status', [RawMaterialController::class, 'toggleStatus']) ->middleware('permission:'.Permission::RAW_MATERIALS_TOGGLE_STATUS->value) ->name('toggle-status'); Route::delete('{rawMaterial}', [RawMaterialController::class, 'destroy']) ->middleware('permission:'.Permission::RAW_MATERIALS_DELETE->value) ->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('setting')->name('setting.')->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::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::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('/', [PayrollPeriodController::class, 'index'])->name('index'); Route::post('periods/{payrollPeriod}/close', [PayrollPeriodController::class, 'close']) ->middleware('permission:'.Permission::PAYROLL_CLOSE->value) ->name('periods.close'); Route::post('{payroll}/pay', [PayrollController::class, 'pay']) ->middleware('permission:'.Permission::PAYROLL_PAY->value) ->name('pay'); Route::post('{payroll}/adjustments', [PayrollController::class, 'storeAdjustment']) ->middleware('permission:'.Permission::PAYROLL_ADJUST->value) ->name('adjustments.store'); }); }); 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::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::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::get('/', [EmployeeController::class, 'index'])->name('index'); }); }); }); });