366 lines
20 KiB
PHP
Executable File
366 lines
20 KiB
PHP
Executable File
<?php
|
|
|
|
use App\Http\Controllers\AdminController;
|
|
use App\Http\Controllers\CategoryController;
|
|
use App\Http\Controllers\DealerController;
|
|
use App\Http\Controllers\ReportController;
|
|
use App\Http\Controllers\RolePrivilegeController;
|
|
use App\Http\Controllers\TransactionController;
|
|
use App\Http\Controllers\UserController;
|
|
use App\Http\Controllers\WarehouseManagement\OpnamesController;
|
|
use App\Http\Controllers\WarehouseManagement\ProductCategoriesController;
|
|
use App\Http\Controllers\WarehouseManagement\ProductsController;
|
|
use App\Http\Controllers\WorkController;
|
|
use App\Http\Controllers\WorkDealerPriceController;
|
|
use App\Http\Controllers\WarehouseManagement\MutationsController;
|
|
use App\Http\Controllers\WarehouseManagement\StockAuditController;
|
|
use App\Http\Controllers\KPI\TargetsController;
|
|
use App\Http\Controllers\Reports\ReportStockProductsController;
|
|
use App\Http\Controllers\Reports\ReportTechniciansController;
|
|
use App\Models\Menu;
|
|
use App\Models\Privilege;
|
|
use App\Models\Role;
|
|
use App\Models\User;
|
|
use App\Http\Controllers\Transactions\PrechecksController;
|
|
use App\Http\Controllers\Transactions\PostchecksController;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Web Routes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Here is where you can register web routes for your application. These
|
|
| routes are loaded by the RouteServiceProvider within a group which
|
|
| contains the "web" middleware group. Now create something great!
|
|
|
|
|
*/
|
|
|
|
Route::get('/clear', function() {
|
|
Artisan::call('cache:clear');
|
|
});
|
|
|
|
Route::get('delete_role_privileges', function() {
|
|
Privilege::query()->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');
|
|
});
|
|
|
|
// KPI Data Route - accessible to all authenticated users
|
|
Route::get('/transaction/get-kpi-data', [TransactionController::class, 'getKpiData'])->name('transaction.get-kpi-data');
|
|
|
|
// 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');
|
|
|
|
Route::prefix('transaction/{transaction}')->group(function () {
|
|
// Prechecks
|
|
Route::prefix('prechecks')->name('prechecks.')->group(function () {
|
|
Route::get('create', [PrechecksController::class, 'create'])->name('create');
|
|
Route::post('store', [PrechecksController::class, 'store'])->name('store');
|
|
Route::get('{precheck}/edit', [PrechecksController::class, 'edit'])->name('edit');
|
|
Route::put('{precheck}', [PrechecksController::class, 'update'])->name('update');
|
|
Route::get('print', [PrechecksController::class, 'print'])->name('print');
|
|
});
|
|
|
|
// Postchecks
|
|
Route::prefix('postchecks')->name('postchecks.')->group(function () {
|
|
Route::get('create', [PostchecksController::class, 'create'])->name('create');
|
|
Route::post('store', [PostchecksController::class, 'store'])->name('store');
|
|
Route::get('{postcheck}/edit', [PostchecksController::class, 'edit'])->name('edit');
|
|
Route::put('{postcheck}', [PostchecksController::class, 'update'])->name('update');
|
|
Route::get('print', [PostchecksController::class, 'print'])->name('print');
|
|
});
|
|
});
|
|
|
|
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::get('report/transaction/precheck/{transaction_id}/print', [PrechecksController::class, 'print'])->name('report.transaction.precheck.print');
|
|
Route::get('report/transaction/postcheck/{transaction_id}/print', [PostchecksController::class, 'print'])->name('report.transaction.postcheck.print');
|
|
});
|
|
|
|
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');
|