group(function () { Route::get('portal/manifest/{type}', [PwaController::class, 'manifest'])->where('type', 'customer|supplier|marketer'); Route::get('contact/contact-dashboard', function () { return redirect('/customer/dashboard'); }); Route::prefix('customer')->name('customer.')->middleware(['SetPortalLocale', 'CheckCustomerPortal', 'SharePortalNavigation:customer', 'CustomerSidebarMenu'])->group(function () { Route::get('dashboard', [Customer\DashboardController::class, 'index'])->name('dashboard'); Route::get('profile', [Customer\ProfileController::class, 'getProfile'])->name('profile'); Route::post('profile-update', [Customer\ProfileController::class, 'updateProfile'])->name('profile.update'); Route::post('password-update', [Customer\ProfileController::class, 'updatePassword'])->name('password.update'); Route::get('sells', [Customer\SellController::class, 'getSellList'])->name('sells'); Route::get('ledger', [Customer\LedgerController::class, 'index'])->name('ledger'); Route::get('get-ledger', [Customer\LedgerController::class, 'getLedger'])->name('ledger.data'); Route::get('projects', [Customer\ProjectController::class, 'index'])->name('projects.index'); Route::get('projects/{id}', [Customer\ProjectController::class, 'show'])->name('projects.show'); Route::get('maintenance', [Customer\MaintenanceHubController::class, 'index'])->name('maintenance'); Route::get('production-lines', [Customer\ProductionLineController::class, 'index'])->name('production_lines.index'); Route::get('production-lines/{id}', [Customer\ProductionLineController::class, 'show'])->name('production_lines.show'); Route::get('equipment', [Customer\EquipmentController::class, 'index'])->name('equipment.index'); Route::get('equipment/{id}', [Customer\EquipmentController::class, 'show'])->name('equipment.show'); Route::get('periodic-services', [Customer\PreventiveScheduleController::class, 'index'])->name('periodic_services.index'); Route::get('periodic-services/{id}', [Customer\PreventiveScheduleController::class, 'show'])->name('periodic_services.show'); Route::get('work-orders', [Customer\WorkOrderController::class, 'index'])->name('work_orders.index'); Route::get('work-orders/{id}', [Customer\WorkOrderController::class, 'show'])->name('work_orders.show'); Route::get('service-requests', [Customer\ServiceRequestController::class, 'index'])->name('service_requests.index'); Route::get('service-requests/create', [Customer\ServiceRequestController::class, 'create'])->name('service_requests.create'); Route::post('service-requests', [Customer\ServiceRequestController::class, 'store'])->name('service_requests.store'); Route::get('field-missions', [Customer\FieldMissionController::class, 'index'])->name('field_missions.index'); Route::get('field-missions/{id}', [Customer\FieldMissionController::class, 'show'])->name('field_missions.show'); Route::get('shipments', [Customer\ShipmentController::class, 'index'])->name('shipments.index'); Route::get('shipments/{id}', [Customer\ShipmentController::class, 'show'])->name('shipments.show'); Route::get('repairs', [Customer\RepairController::class, 'index'])->name('repairs.index'); Route::get('repairs/{id}', [Customer\RepairController::class, 'show'])->name('repairs.show'); Route::get('proposals', [Customer\ProposalController::class, 'index'])->name('proposals.index'); Route::get('proposals/{id}', [Customer\ProposalController::class, 'show'])->name('proposals.show'); Route::get('communications', [Customer\CommunicationController::class, 'index'])->name('communications.index'); Route::get('communications/presence', [Customer\CommunicationController::class, 'presence'])->name('communications.presence'); Route::get('communications/specialists/{specialist_id}/presence', [Customer\CommunicationController::class, 'specialistPresence'])->name('communications.specialist_presence'); Route::post('communications/heartbeat', [Customer\CommunicationController::class, 'heartbeat'])->name('communications.heartbeat'); Route::get('communications/chat/{specialist_id}', [Customer\CommunicationController::class, 'chat'])->name('communications.chat'); Route::get('communications/rooms/{room_id}/messages', [Customer\CommunicationController::class, 'messages'])->name('communications.messages'); Route::post('communications/rooms/{room_id}/messages', [Customer\CommunicationController::class, 'sendMessage'])->name('communications.send'); Route::post('communications/rooms/{room_id}/read', [Customer\CommunicationController::class, 'markRead'])->name('communications.read'); Route::resource('order-request', Customer\OrderRequestController::class)->except(['edit', 'update', 'destroy']); Route::resource('bookings', Customer\BookingController::class)->except(['edit', 'update', 'destroy']); Route::get('products/list', [\App\Http\Controllers\ProductController::class, 'getProducts']); Route::get('order-request/get_product_row/{variation_id}/{location_id}', [Customer\OrderRequestController::class, 'getProductRow']); }); Route::prefix('supplier')->name('supplier.')->middleware(['SetPortalLocale', 'CheckSupplierPortal', 'SharePortalNavigation:supplier', 'SupplierSidebarMenu'])->group(function () { Route::get('dashboard', [Supplier\DashboardController::class, 'index'])->name('dashboard'); Route::get('profile', [Supplier\ProfileController::class, 'getProfile'])->name('profile'); Route::post('profile-update', [Supplier\ProfileController::class, 'updateProfile'])->name('profile.update'); Route::post('password-update', [Supplier\ProfileController::class, 'updatePassword'])->name('password.update'); Route::get('purchases', [Supplier\PurchaseController::class, 'getPurchaseList'])->name('purchases'); Route::get('purchase-orders', [Supplier\PurchaseOrderController::class, 'index'])->name('purchase_orders.index'); Route::get('purchase-orders/{id}', [Supplier\PurchaseOrderController::class, 'show'])->name('purchase_orders.show'); Route::post('purchase-orders/{id}/acknowledge', [Supplier\PurchaseOrderController::class, 'acknowledge'])->name('purchase_orders.acknowledge'); Route::get('payments', [Supplier\PaymentController::class, 'index'])->name('payments'); Route::get('purchase-returns', [Supplier\PurchaseReturnController::class, 'index'])->name('purchase_returns'); Route::get('documents', [Supplier\DocumentController::class, 'index'])->name('documents'); Route::get('ledger', [Supplier\LedgerController::class, 'index'])->name('ledger'); Route::get('get-ledger', [Supplier\LedgerController::class, 'getLedger'])->name('ledger.data'); }); Route::prefix('marketer')->name('marketer.')->middleware(['SetPortalLocale', 'CheckMarketerPortal', 'SharePortalNavigation:marketer', 'MarketerSidebarMenu'])->group(function () { Route::get('dashboard', [Marketer\DashboardController::class, 'index'])->name('dashboard'); Route::get('sells', [Marketer\SellController::class, 'index'])->name('sells'); Route::get('commission', [Marketer\CommissionController::class, 'index'])->name('commission'); Route::get('leads', [Marketer\LeadController::class, 'index'])->name('leads'); Route::get('follow-ups', [Marketer\FollowUpController::class, 'index'])->name('follow_ups'); Route::get('expenses', [Marketer\ExpenseController::class, 'index'])->name('expenses'); Route::get('profile', [Marketer\ProfileController::class, 'getProfile'])->name('profile'); Route::post('profile-update', [Marketer\ProfileController::class, 'updateProfile'])->name('profile.update'); Route::post('password-update', [Marketer\ProfileController::class, 'updatePassword'])->name('password.update'); }); Route::prefix('portal')->group(function () { Route::get('install', [InstallController::class, 'index']); Route::post('install', [InstallController::class, 'install']); Route::get('install/uninstall', [InstallController::class, 'uninstall']); Route::get('install/update', [InstallController::class, 'update']); }); Route::middleware('AdminSidebarMenu', 'CheckUserLogin')->prefix('portal/admin')->name('portal.admin.')->group(function () { Route::get('settings', [\Modules\Portal\Http\Controllers\SettingsController::class, 'index'])->name('settings'); Route::post('settings', [\Modules\Portal\Http\Controllers\SettingsController::class, 'update'])->name('settings.update'); }); });