feat: validate alignment between internship date and day number before saving journal entries

This commit is contained in:
Ümit Tunç
2026-07-20 21:27:30 +03:00
parent 7d72ebc7ad
commit 7c04433f6d
+17 -2
View File
@@ -506,14 +506,29 @@ class CareerController extends Controller
return response()->json(['success' => false, 'message' => 'Hafta sonu günlerine ve resmi tatillere staj günlüğü girilemez.'], 422); return response()->json(['success' => false, 'message' => 'Hafta sonu günlerine ve resmi tatillere staj günlüğü girilemez.'], 422);
} }
// 3. Determine if retroactive // 3. Verify alignment of day_number and date based on internship calendar
$dates = self::getInternshipDates($intern->internship_start_date, $intern->internship_total_days);
$dateToDayMap = [];
foreach ($dates as $d) {
$dateToDayMap[$d['date']] = $d['day_number'];
}
$expectedDay = $dateToDayMap[$request->date] ?? null;
if ($expectedDay === null || $expectedDay != $request->day_number) {
return response()->json([
'success' => false,
'message' => 'Seçilen tarih ve gün sırası uyuşmuyor. Lütfen sayfayı yenileyip tekrar deneyin.'
], 422);
}
// 4. Determine if retroactive
$isRetroactive = $dateObj->lt(\Carbon\Carbon::today()); $isRetroactive = $dateObj->lt(\Carbon\Carbon::today());
$entry = \App\Models\InternshipJournalEntry::updateOrCreate([ $entry = \App\Models\InternshipJournalEntry::updateOrCreate([
'career_application_id' => $intern->id, 'career_application_id' => $intern->id,
'day_number' => $request->day_number, 'day_number' => $request->day_number,
'date' => $request->date,
], [ ], [
'date' => $request->date,
'content' => $request->content, 'content' => $request->content,
'is_retroactive' => $isRetroactive, 'is_retroactive' => $isRetroactive,
'supervisor_approved' => false, 'supervisor_approved' => false,