Files
GSB-Construction/Modules/BiddingManagement/app/Http/Controllers/BidScoreController.php

44 lines
1.5 KiB
PHP

<?php
namespace Modules\BiddingManagement\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Modules\BiddingManagement\Enums\BidPackageStatus;
use Modules\BiddingManagement\Models\BidScore;
use Modules\BiddingManagement\Models\BidSubmission;
class BidScoreController extends Controller
{
public function store(Request $request, BidSubmission $submission)
{
$package = $submission->invitation->package;
abort_unless($package->status === BidPackageStatus::Evaluating, 403, 'Package is not in evaluation phase.');
$validated = $request->validate([
'scores' => 'required|array',
'scores.*.criteria_id' => 'required|integer|exists:bid_criteria,id',
'scores.*.score' => 'required|numeric|min:0|max:100',
'scores.*.notes' => 'nullable|string|max:500',
]);
foreach ($validated['scores'] as $entry) {
BidScore::updateOrCreate(
[
'bid_submission_id' => $submission->id,
'bid_criteria_id' => $entry['criteria_id'],
],
[
'evaluated_by' => Auth::id(),
'score' => $entry['score'],
'notes' => $entry['notes'] ?? null,
]
);
}
return back()->with('success', 'Scores saved.');
}
}