Files
GSB-Construction/Modules/ContractorManagement/routes/web.php

40 lines
2.3 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use Modules\ContractorManagement\Http\Controllers\ContractorController;
use Modules\ContractorManagement\Http\Controllers\ContractorOnboardingController;
// Guest onboarding routes
Route::middleware(['web', 'guest', 'permission:contractors.access'])->group(function () {
Route::get('register/contractor', [ContractorOnboardingController::class, 'showRegistrationForm'])
->name('contractors.register');
Route::post('register/contractor', [ContractorOnboardingController::class, 'register'])
->name('contractors.register.store');
});
Route::middleware(['web', 'auth'])->group(function () {
// Admin onboarding approval routes
Route::get('contractors/pending', [ContractorOnboardingController::class, 'pending'])
->name('contractors.pending');
Route::post('contractors/{contractor}/approve', [ContractorOnboardingController::class, 'approve'])
->name('contractors.approve');
Route::post('contractors/{contractor}/reject', [ContractorOnboardingController::class, 'reject'])
->name('contractors.reject');
// Contractor CRUD
Route::resource('contractors', ContractorController::class);
// Nested actions
Route::post('contractors/{contractor}/equipment', [ContractorController::class, 'storeEquipment'])->name('contractors.equipment.store');
Route::post('contractors/{contractor}/certifications', [ContractorController::class, 'storeCertification'])->name('contractors.certifications.store');
Route::post('contractors/{contractor}/projects', [ContractorController::class, 'assignProject'])->name('contractors.projects.assign');
Route::delete('contractors/{contractor}/projects/{project}', [ContractorController::class, 'removeProject'])->name('contractors.projects.remove');
// Invoice lifecycle
Route::post('contractors/{contractor}/invoices', [ContractorController::class, 'storeInvoice'])->name('contractors.invoices.store');
Route::patch('invoices/{invoice}/submit', [ContractorController::class, 'submitInvoice'])->name('invoices.submit');
Route::patch('invoices/{invoice}/approve', [ContractorController::class, 'approveInvoice'])->name('invoices.approve');
Route::post('invoices/{invoice}/pay', [ContractorController::class, 'payInvoice'])->name('invoices.pay');
});