From 7c04433f6d3ace55f895916fd7490a7776c99750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Tun=C3=A7?= Date: Mon, 20 Jul 2026 21:27:30 +0300 Subject: [PATCH] feat: validate alignment between internship date and day number before saving journal entries --- app/Http/Controllers/CareerController.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/CareerController.php b/app/Http/Controllers/CareerController.php index 5c739af..ddc8fa3 100644 --- a/app/Http/Controllers/CareerController.php +++ b/app/Http/Controllers/CareerController.php @@ -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); } - // 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()); $entry = \App\Models\InternshipJournalEntry::updateOrCreate([ 'career_application_id' => $intern->id, 'day_number' => $request->day_number, - 'date' => $request->date, ], [ + 'date' => $request->date, 'content' => $request->content, 'is_retroactive' => $isRetroactive, 'supervisor_approved' => false,