40 lines
2.3 KiB
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');
|
|
});
|