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

43 lines
2.6 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use Modules\BiddingManagement\Http\Controllers\BidAwardController;
use Modules\BiddingManagement\Http\Controllers\BidInvitationController;
use Modules\BiddingManagement\Http\Controllers\BidPackageController;
use Modules\BiddingManagement\Http\Controllers\BidScoreController;
use Modules\BiddingManagement\Http\Controllers\BidSubmissionController;
Route::middleware(['web', 'auth', 'permission:bidding.access'])->group(function () {
// --- Bid Packages (PM) ---
Route::resource('bids', BidPackageController::class)->parameters(['bids' => 'bid']);
Route::post('bids/{bid}/publish', [BidPackageController::class, 'publish'])->name('bids.publish');
Route::post('bids/{bid}/evaluate', [BidPackageController::class, 'startEvaluation'])->name('bids.evaluate');
Route::post('bids/{bid}/cancel', [BidPackageController::class, 'cancel'])->name('bids.cancel');
// --- Invitations (PM manages) ---
Route::post('bids/{bid}/invitations', [BidInvitationController::class, 'store'])->name('bid-invitations.store');
Route::delete('bid-invitations/{invitation}', [BidInvitationController::class, 'destroy'])->name('bid-invitations.destroy');
// --- Invitation responses (Contractor) ---
Route::post('bid-invitations/{invitation}/accept', [BidInvitationController::class, 'accept'])->name('bid-invitations.accept');
Route::post('bid-invitations/{invitation}/decline', [BidInvitationController::class, 'decline'])->name('bid-invitations.decline');
// --- Submissions (Contractor submits, PM reviews) ---
Route::get('bid-invitations/{invitation}/submit', [BidSubmissionController::class, 'create'])->name('bid-submissions.create');
Route::post('bid-invitations/{invitation}/submit', [BidSubmissionController::class, 'store'])->name('bid-submissions.store');
Route::get('bid-submissions/{submission}', [BidSubmissionController::class, 'show'])->name('bid-submissions.show');
Route::post('bid-submissions/{submission}/shortlist', [BidSubmissionController::class, 'shortlist'])->name('bid-submissions.shortlist');
Route::post('bid-submissions/{submission}/reject', [BidSubmissionController::class, 'reject'])->name('bid-submissions.reject');
// --- Scoring (Evaluator) ---
Route::post('bid-submissions/{submission}/scores', [BidScoreController::class, 'store'])->name('bid-scores.store');
// --- Award (PM) ---
Route::post('bids/{bid}/award', [BidAwardController::class, 'store'])->name('bids.award');
// --- Contractor: My Bids dashboard ---
Route::get('my-bids', [BidSubmissionController::class, 'myBids'])->name('bids.my');
});