delete(); Menu::query()->delete(); Role::query()->delete(); }); Route::get('create_menus', function () { $menus = [ [ 'name' => 'Admin Area', 'link' => 'adminarea', 'created_at'=> now() ], [ 'name' => 'Mekanik Area', 'link' => 'mechanicarea', 'created_at'=> now() ], [ 'name' => 'Dashboard', 'link' => 'dashboard', 'created_at'=> now() ], [ 'name' => 'Dealer', 'link' => 'dealer.index', 'created_at'=> now() ], [ 'name' => 'Kategori', 'link' => 'category.index', 'created_at'=> now() ], [ 'name' => 'Pekerjaan', 'link' => 'work.index', 'created_at'=> now() ], [ 'name' => 'User', 'link' => 'user.index', 'created_at'=> now() ], [ 'name' => 'Role & Privileges', 'link' => 'roleprivileges.index', 'created_at'=> now() ], [ 'name' => 'Laporan Pekerjaan', 'link' => 'report.transaction', 'created_at'=> now() ], [ 'name' => 'Laporan Performa SA', 'link' => 'report.transaction_sa', 'created_at'=> now() ], [ 'name' => 'Laporan Performa Dealer', 'link' => 'report.transaction_dealer', 'created_at'=> now() ], ]; Menu::insert($menus); }); Route::get('create_role_privileges', function() { $role = Role::create([ 'name' => 'admin' ]); $menus = Menu::all(); foreach($menus as $menu) { Privilege::create([ 'role_id' => $role->id, 'menu_id' => $menu->id, 'create' => 1, 'update' => 1, 'delete' => 1, 'view' => 1 ]); } }); Route::get('assign_role_to_user', function() { $users = User::all(); foreach($users as $user) { if($user->role == 'mechanic') { User::find($user->id)->update([ 'role_id' => 3 ]); } if($user->role == 'admin') { User::find($user->id)->update([ 'role_id' => 2 ]); } if($user->role == null) { User::find($user->id)->update([ 'role_id' => 2 ]); } if($user->role == 'sa') { User::find($user->id)->update([ 'role_id' => 4 ]); } } }); Route::group(['middleware' => 'auth'], function() { Route::group(['middleware' => 'mechanicRole'], function() { Route::get('/', [TransactionController::class, 'index'])->name('transaction'); Route::get('/transaction/lists', [TransactionController::class, 'lists'])->name('transaction.lists'); Route::get('/transaction/recap', [TransactionController::class, 'recap'])->name('transaction.recap'); Route::post('/transaction/store', [TransactionController::class, 'store'])->name('transaction.store'); Route::get('/transaction/category/{id}', [TransactionController::class, 'workcategory'])->name('transaction.workcategory'); Route::delete('/transaction/destory/{id}', [TransactionController::class, 'destroy'])->name('transaction.destroy'); Route::get('/transaction/edit/{id}', [TransactionController::class, 'edit'])->name('transaction.edit'); Route::put('/transaction/update/{id}', [TransactionController::class, 'update'])->name('transaction.update'); // Stock Management Routes Route::post('/transaction/check-stock', [TransactionController::class, 'checkStockAvailability'])->name('transaction.check-stock'); Route::get('/transaction/stock-prediction', [TransactionController::class, 'getStockPrediction'])->name('transaction.stock-prediction'); // Claim Transactions Route Route::get('/transaction/get-claim-transactions', [TransactionController::class, 'getClaimTransactions'])->name('transaction.get-claim-transactions'); Route::post('/transaction/claim/{id}', [TransactionController::class, 'claim'])->name('transaction.claim'); // Prechecks Routes Route::get('/transaction/prechecks/{transaction}', [PrechecksController::class, 'index'])->name('prechecks.index'); Route::post('/transaction/prechecks/{transaction}', [PrechecksController::class, 'store'])->name('prechecks.store'); // Postchecks Routes Route::get('/transaction/postchecks/{transaction}', [PostchecksController::class, 'index'])->name('postchecks.index'); Route::post('/transaction/postchecks/{transaction}', [PostchecksController::class, 'store'])->name('postchecks.store'); }); // KPI Data Route - accessible to all authenticated users Route::get('/transaction/get-kpi-data', [TransactionController::class, 'getKpiData'])->name('transaction.get-kpi-data'); Route::group(['prefix' => 'admin', 'middleware' => 'adminRole'], function() { Route::get('/dashboard2', [AdminController::class, 'dashboard2'])->name('dashboard2'); Route::post('/dealer_work_trx', [AdminController::class, 'dealer_work_trx'])->name('dealer_work_trx'); Route::get('/work_dealer_trx', [AdminController::class, 'work_dealer_trx'])->name('work_dealer_trx'); Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard'); Route::get('/dashboard_data', [AdminController::class, 'dashboard_data'])->name('dashboard_data'); Route::get('/dashboard2', [AdminController::class, 'dashboard2'])->name('dashboard2'); Route::post('/get_dealer_has_transactions', [AdminController::class, 'get_dealer_has_transactions'])->name('get_dealer_has_transactions'); Route::get('/dealer/recap/{id}', [AdminController::class, 'dealer_recap'])->name('dealer_recap'); Route::post('dealer/pic/store/{id}', [DealerController::class, 'pic_store'])->name('dealer.picstore'); Route::resource('dealer', DealerController::class); Route::resource('category', CategoryController::class); Route::resource('work', WorkController::class); // Work Dealer Prices Routes Route::prefix('work/{work}/prices')->name('work.prices.')->controller(WorkDealerPriceController::class)->group(function () { Route::get('/', 'index')->name('index'); Route::post('/', 'store')->name('store'); Route::get('{price}/edit', 'edit')->name('edit'); Route::put('{price}', 'update')->name('update'); Route::delete('{price}', 'destroy')->name('destroy'); Route::post('bulk', 'bulkCreate')->name('bulk-create'); Route::post('toggle-status', 'toggleStatus')->name('toggle-status'); }); // Route untuk halaman set harga (menggunakan WorkController) Route::get('work/{work}/set-prices', [WorkController::class, 'showPrices'])->name('work.set-prices'); // API route untuk mendapatkan harga Route::get('work/get-price', [WorkDealerPriceController::class, 'getPrice'])->name('work.get-price'); // Work Products Management Routes Route::prefix('work/{work}/products')->name('work.products.')->controller(App\Http\Controllers\WorkProductController::class)->group(function () { Route::get('/', 'index')->name('index'); Route::post('/', 'store')->name('store'); Route::get('{workProduct}', 'show')->name('show'); Route::put('{workProduct}', 'update')->name('update'); Route::delete('{workProduct}', 'destroy')->name('destroy'); }); Route::get('work/{work}/stock-prediction', [App\Http\Controllers\WorkProductController::class, 'stockPrediction'])->name('work.products.stock-prediction'); Route::post('work/check-stock', [App\Http\Controllers\WorkProductController::class, 'checkStock'])->name('work.products.check-stock'); Route::get('/user', [UserController::class, 'index'])->name('user.index'); Route::post('/user', [UserController::class, 'store'])->name('user.store'); Route::delete('/user/{id}', [UserController::class, 'destroy'])->name('user.destroy'); Route::get('/user/{id}/edit', [UserController::class, 'edit'])->name('user.edit'); Route::put('/user/{id}/update', [UserController::class, 'update'])->name('user.update'); Route::get('/roleprivileges', [RolePrivilegeController::class, 'index'])->name('roleprivileges.index'); Route::post('/roleprivileges/store', [RolePrivilegeController::class, 'store'])->name('roleprivileges.store'); Route::get('/roleprivileges/{id}/edit', [RolePrivilegeController::class, 'edit'])->name('roleprivileges.edit'); Route::put('/roleprivileges/{id}/update', [RolePrivilegeController::class, 'update'])->name('roleprivileges.update'); Route::delete('/roleprivileges/{id}/delete', [RolePrivilegeController::class, 'delete'])->name('roleprivileges.delete'); Route::post('/roleprivileges/{id}/assign-dealer', [RolePrivilegeController::class, 'assignDealer'])->name('roleprivileges.assignDealer'); Route::get('/roleprivileges/{id}/assigned-dealers', [RolePrivilegeController::class, 'getAssignedDealers'])->name('roleprivileges.getAssignedDealers'); Route::get('/report/transaction', [ReportController::class, 'transaction'])->name('report.transaction'); Route::post('/report/transaction/data', [ReportController::class, 'transaction_data'])->name('report.transaction_data'); Route::delete('/report/transaction/destory/{id}', [ReportController::class, 'destroy_transaction'])->name('report.transaction.destroy'); Route::put('/report/transaction/close/{id}', [ReportController::class, 'close_transaction'])->name('report.transaction.close'); Route::post('/report/transaction/close', [ReportController::class, 'bulk_close_transaction'])->name('report.transaction.bulkclose'); Route::get('/report/transaction/export', [ReportController::class, 'export'])->name('report.transaction.export'); Route::get('/report/transaction/edit/{id}', [ReportController::class, 'edit'])->name('report.transaction.edit'); Route::put('/report/transaction/update/{id}', [ReportController::class, 'update'])->name('report.transaction.update'); Route::get('/report/transaction_sa', [ReportController::class, 'transaction_sa'])->name('report.transaction_sa'); Route::get('/report/transaction_sa_data', [ReportController::class, 'transaction_sa_data'])->name('report.transaction_sa_data'); Route::post('/report/sa_work_trx', [ReportController::class, 'sa_work_trx'])->name('report.sa_work_trx'); Route::post('/report/get_sa_has_transactions', [ReportController::class, 'get_sa_has_transactions'])->name('report.get_sa_has_transactions'); Route::get('/report/transaction_dealer/export', [ReportController::class, 'dealer_export'])->name('report.transaction_dealer.export'); Route::get('/report/transaction_sa/export', [ReportController::class, 'sa_export'])->name('report.transaction_sa.export'); Route::get('/report/transaction_dealer', [ReportController::class, 'transaction_dealer'])->name('report.transaction_dealer'); }); Route::prefix('warehouse')->group(function () { // ProductsController routes Route::prefix('products')->controller(ProductsController::class)->group(function () { Route::get('/', 'index')->name('products.index'); Route::get('create', 'create')->name('products.create'); Route::post('/', 'store')->name('products.store'); Route::get('all','all_products')->name('products.all'); Route::get('dealers-stock', 'dealers_stock')->name('products.dealers_stock'); Route::get('export/dealers-stock', 'exportDealersStock')->name('products.export.dealers_stock'); Route::get('{product}', 'show')->name('products.show'); Route::get('{product}/edit', 'edit')->name('products.edit'); Route::put('{product}', 'update')->name('products.update'); Route::delete('{product}', 'destroy')->name('products.destroy'); Route::post('{product}/toggle-active', 'toggleActive')->name('products.toggleActive'); }); // ProductCategoriesController routes Route::prefix('product_categories')->controller(ProductCategoriesController::class)->group(function () { Route::get('/', 'index')->name('product_categories.index'); Route::get('create', 'create')->name('product_categories.create'); Route::post('/', 'store')->name('product_categories.store'); Route::get('parents','product_category_parents')->name('product_categories.parents'); Route::get('{product_category}', 'show')->name('product_categories.show'); Route::get('{product_category}/edit', 'edit')->name('product_categories.edit'); Route::put('{product_category}', 'update')->name('product_categories.update'); Route::delete('{product_category}', 'destroy')->name('product_categories.destroy'); }); Route::prefix('opnames')->controller(OpnamesController::class)->group(function (){ Route::get('/','index')->name('opnames.index'); Route::get('create','create')->name('opnames.create'); Route::post('/','store')->name('opnames.store'); Route::get('{opnames}','show')->name('opnames.show'); Route::get('{opnames}/print','print')->name('opnames.print'); Route::post('get-stock-data', 'getStockData')->name('opnames.get-stock-data'); }); Route::prefix('mutations')->name('mutations.')->controller(MutationsController::class)->group(function () { Route::get('/', 'index')->name('index'); Route::get('create', 'create')->name('create'); Route::post('/', 'store')->name('store'); Route::get('get-product-stock', 'getProductStock')->name('get-product-stock'); Route::get('get-pending-mutations', 'getPendingMutations')->name('get-pending-mutations'); Route::get('{mutation}/get-detail', 'getDetail')->name('get-detail'); Route::get('{mutation}', 'show')->name('show'); Route::get('{mutation}/edit', 'edit')->name('edit'); Route::get('{mutation}/details', 'getDetails')->name('details'); Route::get('{mutation}/print', 'print')->name('print'); Route::post('{mutation}/receive', 'receive')->name('receive'); Route::post('{mutation}/approve', 'approve')->name('approve'); Route::post('{mutation}/reject', 'reject')->name('reject'); Route::post('{mutation}/complete', 'complete')->name('complete'); Route::post('{mutation}/cancel', 'cancel')->name('cancel'); }); Route::prefix('stock-audit')->name('stock-audit.')->controller(StockAuditController::class)->group(function () { Route::get('/', 'index')->name('index'); Route::get('{stockLog}/detail', 'getDetail')->name('detail'); }); }); // KPI Routes for Admins Route::prefix('kpi')->middleware(['adminRole'])->group(function () { // Target Management Route::resource('targets', TargetsController::class, ['as' => 'kpi']); Route::post('/targets/{target}/toggle-status', [TargetsController::class, 'toggleStatus'])->name('kpi.targets.toggle-status'); Route::get('/targets/user/{user}', [TargetsController::class, 'getUserTargets'])->name('kpi.targets.user'); }); Route::prefix('reports')->group(function () { Route::get('stock-products', [ReportStockProductsController::class, 'index'])->name('reports.stock-product.index'); Route::get('stock-products/data', [ReportStockProductsController::class, 'getData'])->name('reports.stock-product.data'); Route::get('stock-products/dealers', [ReportStockProductsController::class, 'getDealers'])->name('reports.stock-product.dealers'); Route::get('stock-products/export', [ReportStockProductsController::class, 'export'])->name('reports.stock-product.export'); Route::get('technician', [ReportTechniciansController::class, 'index'])->name('reports.technician.index'); Route::get('technician/data', [ReportTechniciansController::class, 'getData'])->name('reports.technician.data'); Route::get('technician/datatable', [ReportTechniciansController::class, 'getDataTable'])->name('reports.technician.datatable'); Route::get('technician/dealers', [ReportTechniciansController::class, 'getDealers'])->name('reports.technician.dealers'); Route::get('technician/export', [ReportTechniciansController::class, 'export'])->name('reports.technician.export'); }); }); Auth::routes(); // Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');