390 lines
43 KiB
PHP
390 lines
43 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::middleware(['auth:api', 'timezone', 'api.business', 'business.context'])
|
|
->prefix('connector/api/v2')
|
|
->name('connector.api.v2.')
|
|
->group(function () {
|
|
// Auth
|
|
Route::get('me', [Modules\Connector\Http\Controllers\Api\V2\AuthController::class, 'me']);
|
|
Route::post('logout', [Modules\Connector\Http\Controllers\Api\V2\AuthController::class, 'logout']);
|
|
|
|
// Dashboard
|
|
Route::get('dashboard', [Modules\Connector\Http\Controllers\Api\V2\DashboardController::class, 'index']);
|
|
|
|
// Core resources
|
|
Route::get('products/search-pos', [Modules\Connector\Http\Controllers\Api\V2\ProductController::class, 'searchForPos']);
|
|
Route::apiResource('products', Modules\Connector\Http\Controllers\Api\V2\ProductController::class)->only(['index', 'show']);
|
|
Route::apiResource('contacts', Modules\Connector\Http\Controllers\Api\V2\ContactController::class)->only(['index', 'show', 'store', 'update']);
|
|
Route::post('contacts/payment', [Modules\Connector\Http\Controllers\Api\V2\ContactController::class, 'contactPay']);
|
|
Route::apiResource('sells', Modules\Connector\Http\Controllers\Api\V2\SellController::class)->only(['index', 'show', 'store', 'update', 'destroy']);
|
|
Route::post('sells/return', [Modules\Connector\Http\Controllers\Api\V2\SellController::class, 'addSellReturn']);
|
|
Route::get('sells/returns', [Modules\Connector\Http\Controllers\Api\V2\SellController::class, 'listSellReturn']);
|
|
Route::apiResource('purchases', Modules\Connector\Http\Controllers\Api\V2\PurchaseController::class)->only(['index', 'show']);
|
|
Route::apiResource('expenses', Modules\Connector\Http\Controllers\Api\V2\ExpenseController::class)->only(['index', 'store', 'show', 'update']);
|
|
Route::apiResource('cash-registers', Modules\Connector\Http\Controllers\Api\V2\CashRegisterController::class)->only(['index', 'store', 'show']);
|
|
|
|
// Stock
|
|
Route::get('stock/transfers', [Modules\Connector\Http\Controllers\Api\V2\StockController::class, 'transfers']);
|
|
Route::get('stock/adjustments', [Modules\Connector\Http\Controllers\Api\V2\StockController::class, 'adjustments']);
|
|
Route::get('stock/opening', [Modules\Connector\Http\Controllers\Api\V2\StockController::class, 'openingStock']);
|
|
|
|
// Reports
|
|
Route::get('reports/profit-loss', [Modules\Connector\Http\Controllers\Api\V2\ReportController::class, 'profitLoss']);
|
|
Route::get('reports/product-stock', [Modules\Connector\Http\Controllers\Api\V2\ReportController::class, 'productStock']);
|
|
Route::get('reports/sales', [Modules\Connector\Http\Controllers\Api\V2\ReportController::class, 'sales']);
|
|
Route::get('reports/purchases', [Modules\Connector\Http\Controllers\Api\V2\ReportController::class, 'purchases']);
|
|
|
|
// Reference data (delegate v1)
|
|
Route::get('business-locations', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'businessLocations']);
|
|
Route::get('brands', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'brands']);
|
|
Route::get('categories', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'categories']);
|
|
Route::get('units', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'units']);
|
|
Route::get('taxes', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'taxes']);
|
|
Route::get('payment-methods', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'paymentMethods']);
|
|
Route::get('payment-accounts', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'paymentAccounts']);
|
|
Route::get('business-details', [Modules\Connector\Http\Controllers\Api\V2\ReferenceController::class, 'businessDetails']);
|
|
|
|
// Generic lookup for remaining entities
|
|
Route::get('lookup/{resource}', [Modules\Connector\Http\Controllers\Api\V2\LookupController::class, 'index']);
|
|
|
|
// Users & roles
|
|
Route::get('users', [Modules\Connector\Http\Controllers\Api\V2\UserController::class, 'index']);
|
|
Route::get('users/{id}', [Modules\Connector\Http\Controllers\Api\V2\UserController::class, 'show']);
|
|
Route::get('roles', [Modules\Connector\Http\Controllers\Api\V2\UserController::class, 'roles']);
|
|
|
|
// HRM (Essentials)
|
|
Route::prefix('hrm')->group(function () {
|
|
Route::get('dashboard', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'dashboard']);
|
|
Route::get('reports/sales-targets', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'salesTargetsReport']);
|
|
Route::get('leave-resources', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'leaveResources']);
|
|
Route::get('leaves', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'leaves']);
|
|
Route::post('leaves', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storeLeave']);
|
|
Route::get('leaves/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'showLeave']);
|
|
Route::put('leaves/{id}/status', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'updateLeaveStatus']);
|
|
Route::delete('leaves/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'destroyLeave']);
|
|
Route::get('leave-types', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'leaveTypes']);
|
|
Route::post('leave-types', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storeLeaveType']);
|
|
Route::put('leave-types/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'updateLeaveType']);
|
|
Route::delete('leave-types/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'destroyLeaveType']);
|
|
Route::get('holidays', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'holidays']);
|
|
Route::post('holidays', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storeHoliday']);
|
|
Route::get('holidays/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'showHoliday']);
|
|
Route::put('holidays/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'updateHoliday']);
|
|
Route::delete('holidays/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'destroyHoliday']);
|
|
Route::get('attendances', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'attendances']);
|
|
Route::get('attendance-employees', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'attendanceEmployees']);
|
|
Route::post('attendances', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storeAttendance']);
|
|
Route::post('attendances/import', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'importAttendance']);
|
|
Route::get('payroll-employees', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'payrollEmployees']);
|
|
Route::get('payrolls/preview', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'payrollPreview']);
|
|
Route::post('payroll-groups', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storePayrollGroup']);
|
|
Route::post('payroll-groups/{id}/payments', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'payPayrollGroup']);
|
|
Route::get('shifts', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'shifts']);
|
|
Route::post('shifts', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storeShift']);
|
|
Route::get('shifts/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'showShift']);
|
|
Route::put('shifts/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'updateShift']);
|
|
Route::delete('shifts/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'destroyShift']);
|
|
Route::get('shifts/{id}/users', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'shiftUsers']);
|
|
Route::post('shifts/{id}/users', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'assignShiftUsers']);
|
|
Route::get('payrolls', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'payrolls']);
|
|
Route::get('payrolls/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'showPayroll']);
|
|
Route::get('payroll-groups', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'payrollGroups']);
|
|
Route::get('payroll-groups/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'showPayrollGroup']);
|
|
Route::get('allowance-deductions', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'allowanceDeductions']);
|
|
Route::post('allowance-deductions', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storeAllowanceDeduction']);
|
|
Route::put('allowance-deductions/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'updateAllowanceDeduction']);
|
|
Route::delete('allowance-deductions/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'destroyAllowanceDeduction']);
|
|
Route::get('sales-targets/users', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'salesTargetUsers']);
|
|
Route::get('sales-targets/{userId}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'userSalesTargets']);
|
|
Route::post('sales-targets/{userId}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'saveUserSalesTargets']);
|
|
Route::get('todos', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'todos']);
|
|
Route::post('todos', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'storeTodo']);
|
|
Route::put('todos/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'updateTodo']);
|
|
Route::delete('todos/{id}', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'destroyTodo']);
|
|
Route::get('settings', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'settings']);
|
|
Route::post('settings', [Modules\Connector\Http\Controllers\Api\V2\HrmExtendedController::class, 'updateSettings']);
|
|
});
|
|
Route::get('attendance/{user_id}', [Modules\Connector\Http\Controllers\Api\V2\HrmController::class, 'attendance']);
|
|
Route::post('attendance/clock-in', [Modules\Connector\Http\Controllers\Api\V2\HrmController::class, 'clockIn']);
|
|
Route::post('attendance/clock-out', [Modules\Connector\Http\Controllers\Api\V2\HrmController::class, 'clockOut']);
|
|
Route::get('holidays', [Modules\Connector\Http\Controllers\Api\V2\HrmController::class, 'holidays']);
|
|
|
|
// CRM
|
|
Route::prefix('crm')->group(function () {
|
|
Route::get('dashboard', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'dashboard']);
|
|
Route::apiResource('follow-ups', Modules\Connector\Http\Controllers\Api\V2\CrmController::class)->only(['index', 'store', 'show', 'update']);
|
|
Route::get('leads', [Modules\Connector\Http\Controllers\Api\V2\CrmController::class, 'leads']);
|
|
Route::post('leads', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'storeLead']);
|
|
Route::get('leads/{id}', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'showLead']);
|
|
Route::put('leads/{id}', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'updateLead']);
|
|
Route::get('follow-up-resources', [Modules\Connector\Http\Controllers\Api\V2\CrmController::class, 'followUpResources']);
|
|
Route::post('call-logs', [Modules\Connector\Http\Controllers\Api\V2\CrmController::class, 'callLogs']);
|
|
Route::get('call-logs', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'callLogs']);
|
|
Route::get('follow-up-logs', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'followUpLogs']);
|
|
Route::get('campaigns', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'campaigns']);
|
|
Route::post('campaigns', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'storeCampaign']);
|
|
Route::get('campaigns/{id}', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'showCampaign']);
|
|
Route::put('campaigns/{id}', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'updateCampaign']);
|
|
Route::delete('campaigns/{id}', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'destroyCampaign']);
|
|
Route::get('proposals', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'proposals']);
|
|
Route::get('proposals/{id}', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'showProposal']);
|
|
Route::get('proposal-templates', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'proposalTemplates']);
|
|
Route::get('contact-logins', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'contactLogins']);
|
|
Route::get('commissions', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'commissions']);
|
|
Route::get('taxonomies/{type}', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'taxonomies']);
|
|
Route::get('reports/follow-ups-by-user', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'reportFollowUpsByUser']);
|
|
Route::get('reports/follow-ups-by-contact', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'reportFollowUpsByContact']);
|
|
Route::get('reports/lead-to-customer', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'reportLeadToCustomer']);
|
|
Route::get('settings', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'settings']);
|
|
Route::post('settings', [Modules\Connector\Http\Controllers\Api\V2\CrmExtendedController::class, 'updateSettings']);
|
|
|
|
Route::prefix('telemarketing')->group(function () {
|
|
Route::get('queue/next', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'queueNext']);
|
|
Route::post('queue/{id}/release', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'queueRelease']);
|
|
Route::post('sessions/start', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'sessionStart']);
|
|
Route::post('sessions/{id}/end', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'sessionEnd']);
|
|
Route::get('sessions/active', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'sessionActive']);
|
|
Route::get('workspace/{phone_id}', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'workspaceData']);
|
|
Route::get('companies', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'companies']);
|
|
Route::post('companies', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'companies']);
|
|
Route::get('companies/{id}', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'showCompany']);
|
|
Route::put('companies/{id}', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'updateCompany']);
|
|
Route::get('companies/{id}/completion', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'companyCompletion']);
|
|
Route::post('companies/{id}/contacts', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'storeCompanyContact']);
|
|
Route::get('offers/catalog', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'offerCatalog']);
|
|
Route::get('offers/match/{company_id}', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'matchOffers']);
|
|
Route::post('offers/send', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'sendOffers']);
|
|
Route::get('offers/company/{company_id}', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'companyOffers']);
|
|
Route::get('dashboard/stats', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'dashboardStats']);
|
|
Route::get('reports/agent-performance', [Modules\Connector\Http\Controllers\Api\V2\TelemarketingController::class, 'reportAgentPerformance']);
|
|
});
|
|
});
|
|
|
|
// Restaurant
|
|
Route::get('restaurant/tables', [Modules\Connector\Http\Controllers\Api\V2\RestaurantController::class, 'tables']);
|
|
Route::get('restaurant/bookings', [Modules\Connector\Http\Controllers\Api\V2\RestaurantController::class, 'bookings']);
|
|
|
|
// Manufacturing
|
|
Route::prefix('modules/manufacturing')->group(function () {
|
|
Route::get('dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'manufacturingDashboard']);
|
|
Route::get('resources', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'resources']);
|
|
Route::get('settings', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'settings']);
|
|
Route::post('settings', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'updateSettings']);
|
|
Route::get('recipe-dropdown', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'recipeDropdown']);
|
|
Route::get('recipe-details', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'recipeDetails']);
|
|
Route::get('recipes/check/{variation_id}', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'isRecipeExist']);
|
|
Route::get('recipes/by-variation/{variation_id}', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'recipeByVariation']);
|
|
Route::get('recipes', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'recipes']);
|
|
Route::post('recipes', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'storeRecipe']);
|
|
Route::post('recipes/update-prices', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'updateRecipePrices']);
|
|
Route::get('recipes/{id}', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'showRecipe']);
|
|
Route::delete('recipes/{id}', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'destroyRecipe']);
|
|
Route::get('report', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'manufacturingReport']);
|
|
Route::get('production', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'productions']);
|
|
Route::post('production', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'storeProduction']);
|
|
Route::get('production/{id}/edit', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'editProduction']);
|
|
Route::put('production/{id}', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'updateProduction']);
|
|
Route::get('production/{id}', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'showProduction']);
|
|
Route::delete('production/{id}', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'destroyProduction']);
|
|
});
|
|
|
|
// Industrial Engineering / PLM
|
|
Route::prefix('modules/industrial-engineering')->group(function () {
|
|
Route::get('boms/{id}/tree', [Modules\IndustrialEngineering\Http\Controllers\Api\V1\IndustrialEngineeringApiController::class, 'bomTree']);
|
|
Route::post('cost-scenarios', [Modules\IndustrialEngineering\Http\Controllers\Api\V1\IndustrialEngineeringApiController::class, 'buildCostScenario']);
|
|
Route::post('cost-scenarios/compare', [Modules\IndustrialEngineering\Http\Controllers\Api\V1\IndustrialEngineeringApiController::class, 'compareScenarios']);
|
|
Route::get('lookup', [Modules\IndustrialEngineering\Http\Controllers\Api\V1\IndustrialEngineeringApiController::class, 'lookup']);
|
|
Route::get('stock/search', [Modules\IndustrialEngineering\Http\Controllers\Api\V1\IndustrialEngineeringApiController::class, 'findStock']);
|
|
Route::get('installed-assets/{id}', [Modules\IndustrialEngineering\Http\Controllers\Api\V1\IndustrialEngineeringApiController::class, 'installedAsset']);
|
|
});
|
|
|
|
// Module proxies
|
|
Route::prefix('modules')->group(function () {
|
|
Route::get('manufacturing/recipes', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'recipes']);
|
|
Route::get('manufacturing/production', [Modules\Connector\Http\Controllers\Api\V2\ManufacturingExtendedController::class, 'productions']);
|
|
Route::get('repair/dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'repairDashboard']);
|
|
Route::get('repair/jobs', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'repairJobs']);
|
|
Route::get('project/dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'projectDashboard']);
|
|
Route::prefix('project')->group(function () {
|
|
Route::get('resources', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'resources']);
|
|
Route::get('projects/kanban', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'projectsKanban']);
|
|
Route::post('projects', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'storeProject']);
|
|
Route::get('projects/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'showProject']);
|
|
Route::put('projects/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'updateProject']);
|
|
Route::put('projects/{id}/status', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'updateProjectStatus']);
|
|
Route::get('projects/{projectId}/tasks/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'showTask']);
|
|
Route::post('projects/{projectId}/tasks', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'storeTask']);
|
|
Route::put('projects/{projectId}/tasks/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'updateTask']);
|
|
Route::post('projects/{projectId}/tasks/{taskId}/comments', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'storeTaskComment']);
|
|
Route::delete('projects/{projectId}/tasks/{taskId}/comments/{commentId}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'destroyTaskComment']);
|
|
Route::get('projects/{projectId}/time-logs', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'timeLogs']);
|
|
Route::post('projects/{projectId}/time-logs', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'storeTimeLog']);
|
|
Route::delete('projects/{projectId}/time-logs/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'destroyTimeLog']);
|
|
Route::get('tasks/kanban', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'tasksKanban']);
|
|
Route::put('tasks/{id}/status', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'updateTaskStatus']);
|
|
Route::post('upload-comment-media', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'uploadCommentMedia']);
|
|
Route::get('invoice-resources', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'invoiceResources']);
|
|
Route::get('reports/employee-timelog', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'employeeTimeLogReport']);
|
|
Route::get('reports/project-timelog', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'projectTimeLogReport']);
|
|
Route::get('projects/{projectId}/invoices', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'projectInvoices']);
|
|
Route::post('projects/{projectId}/invoices', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'storeProjectInvoice']);
|
|
Route::put('projects/{projectId}/invoices/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'updateProjectInvoice']);
|
|
Route::post('projects/{projectId}/invoices/{id}/payments', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'storeProjectInvoicePayment']);
|
|
Route::get('projects/{projectId}/invoices/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'showProjectInvoice']);
|
|
Route::delete('projects/{projectId}/invoices/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'destroyProjectInvoice']);
|
|
Route::get('projects/{projectId}/documents', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'projectDocuments']);
|
|
Route::post('projects/{projectId}/documents', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'storeProjectDocument']);
|
|
Route::delete('projects/{projectId}/documents/{id}', [Modules\Connector\Http\Controllers\Api\V2\ProjectExtendedController::class, 'destroyProjectDocument']);
|
|
});
|
|
Route::get('project/projects', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'projects']);
|
|
Route::get('project/tasks', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'tasks']);
|
|
Route::get('accounting/dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'accountingDashboard']);
|
|
Route::get('accounting/accounts', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'accountingAccounts']);
|
|
Route::get('assets/dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'assetsDashboard']);
|
|
Route::get('assets', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'assets']);
|
|
Route::get('inventory/dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'inventoryDashboard']);
|
|
Route::get('inventory/counts', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'inventoryCounts']);
|
|
Route::get('spreadsheets/dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'spreadsheetDashboard']);
|
|
Route::get('spreadsheets', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'spreadsheets']);
|
|
Route::get('woocommerce/settings', [Modules\Connector\Http\Controllers\Api\V2\ModuleController::class, 'woocommerceSettings']);
|
|
});
|
|
|
|
// Maintenance (CMMS)
|
|
Route::prefix('maintenance')->group(function () {
|
|
Route::get('dashboard', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceDashboardController::class, 'index']);
|
|
Route::get('calendar', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceDashboardController::class, 'calendar']);
|
|
|
|
Route::get('equipment-categories', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentCategoryController::class, 'index']);
|
|
Route::post('equipment-categories', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentCategoryController::class, 'store']);
|
|
Route::put('equipment-categories/{category}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentCategoryController::class, 'update']);
|
|
Route::delete('equipment-categories/{category}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentCategoryController::class, 'destroy']);
|
|
|
|
Route::get('equipment', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentController::class, 'index']);
|
|
Route::post('equipment', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentController::class, 'store']);
|
|
Route::get('equipment/scan/{qrCode}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentController::class, 'scan']);
|
|
Route::get('equipment/{equipment}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentController::class, 'show']);
|
|
Route::put('equipment/{equipment}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentController::class, 'update']);
|
|
Route::delete('equipment/{equipment}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentController::class, 'destroy']);
|
|
|
|
Route::get('equipment/{equipment}/parts', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentPartController::class, 'index']);
|
|
Route::post('equipment/{equipment}/parts', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentPartController::class, 'store']);
|
|
Route::put('equipment/{equipment}/parts/{part}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentPartController::class, 'update']);
|
|
Route::delete('equipment/{equipment}/parts/{part}', [Modules\Maintenance\Http\Controllers\Api\V1\EquipmentPartController::class, 'destroy']);
|
|
|
|
Route::get('production-lines', [Modules\Maintenance\Http\Controllers\Api\V1\ProductionLineController::class, 'index']);
|
|
Route::post('production-lines', [Modules\Maintenance\Http\Controllers\Api\V1\ProductionLineController::class, 'store']);
|
|
Route::put('production-lines/{productionLine}', [Modules\Maintenance\Http\Controllers\Api\V1\ProductionLineController::class, 'update']);
|
|
Route::delete('production-lines/{productionLine}', [Modules\Maintenance\Http\Controllers\Api\V1\ProductionLineController::class, 'destroy']);
|
|
|
|
Route::get('part-catalogs', [Modules\Maintenance\Http\Controllers\Api\V1\PartCatalogController::class, 'index']);
|
|
Route::post('part-catalogs', [Modules\Maintenance\Http\Controllers\Api\V1\PartCatalogController::class, 'store']);
|
|
Route::get('part-catalogs/{partCatalog}', [Modules\Maintenance\Http\Controllers\Api\V1\PartCatalogController::class, 'show']);
|
|
Route::put('part-catalogs/{partCatalog}', [Modules\Maintenance\Http\Controllers\Api\V1\PartCatalogController::class, 'update']);
|
|
Route::delete('part-catalogs/{partCatalog}', [Modules\Maintenance\Http\Controllers\Api\V1\PartCatalogController::class, 'destroy']);
|
|
|
|
Route::get('service-providers', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceProviderController::class, 'index']);
|
|
Route::post('service-providers', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceProviderController::class, 'store']);
|
|
Route::put('service-providers/{serviceProvider}', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceProviderController::class, 'update']);
|
|
Route::delete('service-providers/{serviceProvider}', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceProviderController::class, 'destroy']);
|
|
|
|
Route::get('asset-documents', [Modules\Maintenance\Http\Controllers\Api\V1\AssetDocumentController::class, 'index']);
|
|
Route::post('asset-documents', [Modules\Maintenance\Http\Controllers\Api\V1\AssetDocumentController::class, 'store']);
|
|
Route::delete('asset-documents/{assetDocument}', [Modules\Maintenance\Http\Controllers\Api\V1\AssetDocumentController::class, 'destroy']);
|
|
|
|
Route::get('inspection-visits', [Modules\Maintenance\Http\Controllers\Api\V1\InspectionVisitController::class, 'index']);
|
|
Route::post('inspection-visits', [Modules\Maintenance\Http\Controllers\Api\V1\InspectionVisitController::class, 'store']);
|
|
Route::get('inspection-visits/{inspectionVisit}', [Modules\Maintenance\Http\Controllers\Api\V1\InspectionVisitController::class, 'show']);
|
|
Route::delete('inspection-visits/{inspectionVisit}', [Modules\Maintenance\Http\Controllers\Api\V1\InspectionVisitController::class, 'destroy']);
|
|
|
|
Route::get('service-records', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceRecordController::class, 'index']);
|
|
Route::post('service-records', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceRecordController::class, 'store']);
|
|
Route::get('service-records/{serviceRecord}', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceRecordController::class, 'show']);
|
|
Route::delete('service-records/{serviceRecord}', [Modules\Maintenance\Http\Controllers\Api\V1\ServiceRecordController::class, 'destroy']);
|
|
|
|
Route::get('part-replacements', [Modules\Maintenance\Http\Controllers\Api\V1\PartReplacementController::class, 'index']);
|
|
Route::post('part-replacements', [Modules\Maintenance\Http\Controllers\Api\V1\PartReplacementController::class, 'store']);
|
|
Route::delete('part-replacements/{partReplacement}', [Modules\Maintenance\Http\Controllers\Api\V1\PartReplacementController::class, 'destroy']);
|
|
|
|
Route::get('preventive-schedules', [Modules\Maintenance\Http\Controllers\Api\V1\PreventiveScheduleController::class, 'index']);
|
|
Route::post('preventive-schedules', [Modules\Maintenance\Http\Controllers\Api\V1\PreventiveScheduleController::class, 'store']);
|
|
Route::put('preventive-schedules/{schedule}', [Modules\Maintenance\Http\Controllers\Api\V1\PreventiveScheduleController::class, 'update']);
|
|
Route::delete('preventive-schedules/{schedule}', [Modules\Maintenance\Http\Controllers\Api\V1\PreventiveScheduleController::class, 'destroy']);
|
|
|
|
Route::get('overhauls', [Modules\Maintenance\Http\Controllers\Api\V1\OverhaulController::class, 'index']);
|
|
Route::post('overhauls', [Modules\Maintenance\Http\Controllers\Api\V1\OverhaulController::class, 'store']);
|
|
Route::get('overhauls/{overhaul}', [Modules\Maintenance\Http\Controllers\Api\V1\OverhaulController::class, 'show']);
|
|
Route::put('overhauls/{overhaul}', [Modules\Maintenance\Http\Controllers\Api\V1\OverhaulController::class, 'update']);
|
|
Route::delete('overhauls/{overhaul}', [Modules\Maintenance\Http\Controllers\Api\V1\OverhaulController::class, 'destroy']);
|
|
|
|
Route::get('work-orders', [Modules\Maintenance\Http\Controllers\Api\V1\WorkOrderController::class, 'index']);
|
|
Route::post('work-orders', [Modules\Maintenance\Http\Controllers\Api\V1\WorkOrderController::class, 'store']);
|
|
Route::get('work-orders/{workOrder}', [Modules\Maintenance\Http\Controllers\Api\V1\WorkOrderController::class, 'show']);
|
|
Route::put('work-orders/{workOrder}', [Modules\Maintenance\Http\Controllers\Api\V1\WorkOrderController::class, 'update']);
|
|
Route::post('work-orders/{workOrder}/consume-part', [Modules\Maintenance\Http\Controllers\Api\V1\WorkOrderController::class, 'consumePart']);
|
|
Route::delete('work-orders/{workOrder}', [Modules\Maintenance\Http\Controllers\Api\V1\WorkOrderController::class, 'destroy']);
|
|
|
|
Route::get('spare-parts', [Modules\Maintenance\Http\Controllers\Api\V1\SparePartController::class, 'index']);
|
|
Route::post('spare-parts', [Modules\Maintenance\Http\Controllers\Api\V1\SparePartController::class, 'store']);
|
|
Route::put('spare-parts/{sparePart}', [Modules\Maintenance\Http\Controllers\Api\V1\SparePartController::class, 'update']);
|
|
Route::delete('spare-parts/{sparePart}', [Modules\Maintenance\Http\Controllers\Api\V1\SparePartController::class, 'destroy']);
|
|
|
|
Route::get('failure-reports', [Modules\Maintenance\Http\Controllers\Api\V1\FailureReportController::class, 'index']);
|
|
Route::post('failure-reports', [Modules\Maintenance\Http\Controllers\Api\V1\FailureReportController::class, 'store']);
|
|
Route::put('failure-reports/{failureReport}', [Modules\Maintenance\Http\Controllers\Api\V1\FailureReportController::class, 'update']);
|
|
Route::delete('failure-reports/{failureReport}', [Modules\Maintenance\Http\Controllers\Api\V1\FailureReportController::class, 'destroy']);
|
|
|
|
Route::get('checklists', [Modules\Maintenance\Http\Controllers\Api\V1\ChecklistController::class, 'indexTemplates']);
|
|
Route::post('checklists', [Modules\Maintenance\Http\Controllers\Api\V1\ChecklistController::class, 'storeTemplate']);
|
|
Route::get('checklists/{checklist}', [Modules\Maintenance\Http\Controllers\Api\V1\ChecklistController::class, 'showTemplate']);
|
|
Route::put('checklists/{checklist}', [Modules\Maintenance\Http\Controllers\Api\V1\ChecklistController::class, 'updateTemplate']);
|
|
Route::delete('checklists/{checklist}', [Modules\Maintenance\Http\Controllers\Api\V1\ChecklistController::class, 'destroyTemplate']);
|
|
Route::post('checklists/responses', [Modules\Maintenance\Http\Controllers\Api\V1\ChecklistController::class, 'submitResponse']);
|
|
|
|
Route::get('reports/equipment-cost', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceReportController::class, 'equipmentCost']);
|
|
Route::get('reports/downtime', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceReportController::class, 'downtime']);
|
|
Route::get('reports/technician-performance', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceReportController::class, 'technicianPerformance']);
|
|
Route::get('reports/spare-parts-consumption', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceReportController::class, 'sparePartsConsumption']);
|
|
Route::get('reports/monthly', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceReportController::class, 'monthly']);
|
|
Route::get('reports/failure-analysis', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceReportController::class, 'failureAnalysis']);
|
|
Route::get('equipment/{equipmentId}/history', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceReportController::class, 'history']);
|
|
|
|
Route::get('notifications', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceNotificationController::class, 'index']);
|
|
Route::get('notifications/unread', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceNotificationController::class, 'unread']);
|
|
Route::post('notifications/{notification}/read', [Modules\Maintenance\Http\Controllers\Api\V1\MaintenanceNotificationController::class, 'markRead']);
|
|
|
|
Route::get('iot', [Modules\Maintenance\Http\Controllers\Api\V1\IotController::class, 'index']);
|
|
Route::post('iot/ingest', [Modules\Maintenance\Http\Controllers\Api\V1\IotController::class, 'ingest']);
|
|
});
|
|
|
|
// Enterprise modules (QMS, MES, SCM, APS, Integration Hub, CPQ, WMS)
|
|
Route::prefix('enterprise')->group(function () {
|
|
Route::get('quality/dashboard', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'qualityDashboard']);
|
|
Route::get('quality/ncr', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'qualityNcrIndex']);
|
|
Route::post('quality/ncr', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'storeQualityNcr']);
|
|
Route::get('shop-floor/dashboard', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'shopFloorDashboard']);
|
|
Route::get('shop-floor/oee', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'shopFloorOee']);
|
|
Route::post('shop-floor/production-events', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'storeProductionEvent']);
|
|
Route::get('supply-chain/dashboard', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'supplyChainDashboard']);
|
|
Route::get('supply-chain/scorecards', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'supplyChainScorecards']);
|
|
Route::post('supply-chain/rfq/{id}/respond', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'submitRfqResponse']);
|
|
Route::get('advanced-planning/dashboard', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'advancedPlanningDashboard']);
|
|
Route::get('integration-hub/dashboard', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'integrationHubDashboard']);
|
|
Route::get('cpq/configurations', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'cpqIndex']);
|
|
Route::get('wms/dashboard', [Modules\Connector\Http\Controllers\Api\V2\EnterpriseModulesController::class, 'wmsDashboard']);
|
|
});
|
|
|
|
// Superadmin
|
|
Route::prefix('superadmin')->group(function () {
|
|
Route::get('dashboard', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'superadminDashboard']);
|
|
Route::get('stats', [Modules\Connector\Http\Controllers\Api\V2\ModuleExtendedController::class, 'superadminStats']);
|
|
Route::get('subscription', [Modules\Connector\Http\Controllers\Api\V2\SuperadminController::class, 'subscription']);
|
|
Route::get('packages', [Modules\Connector\Http\Controllers\Api\V2\SuperadminController::class, 'packages']);
|
|
Route::get('businesses', [Modules\Connector\Http\Controllers\Api\V2\SuperadminController::class, 'businesses']);
|
|
});
|
|
|
|
// Public catalogue
|
|
Route::get('catalogue/{business_id}/{location_id}', [Modules\Connector\Http\Controllers\Api\V2\CatalogueController::class, 'show']);
|
|
});
|