make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); $interns = App\Models\CareerApplication::where(function($q) { $q->where('type', 'internship')->orWhereHas('journalEntries'); })->with(['journalEntries' => function($q) { $q->orderBy('day_number', 'asc'); }])->get(); $approvedCount = 0; $report = []; foreach ($interns as $intern) { $totalEntries = $intern->journalEntries->count(); $filledEntries = 0; $onTimeEntries = []; $retroactiveEntries = []; $newlyApproved = 0; $alreadyApproved = 0; foreach ($intern->journalEntries as $entry) { $hasContent = !empty(trim($entry->content ?? '')); if ($hasContent) { $filledEntries++; if (!$entry->supervisor_approved) { $entry->supervisor_approved = true; if (empty($entry->supervisor_name)) { $entry->supervisor_name = 'Yönetici Onayı'; } $entry->save(); $newlyApproved++; $approvedCount++; } else { $alreadyApproved++; } if ($entry->is_retroactive) { $retroactiveEntries[] = [ 'day' => $entry->day_number, 'date' => $entry->date, 'content_snippet' => mb_substr(trim(preg_replace('/\s+/', ' ', strip_tags($entry->content))), 0, 60) ]; } else { $onTimeEntries[] = [ 'day' => $entry->day_number, 'date' => $entry->date, ]; } } } $report[] = [ 'id' => $intern->id, 'name' => $intern->name, 'email' => $intern->email, 'github' => $intern->github_repo, 'total_entries' => $totalEntries, 'filled_entries' => $filledEntries, 'already_approved' => $alreadyApproved, 'newly_approved' => $newlyApproved, 'on_time_count' => count($onTimeEntries), 'retroactive_count' => count($retroactiveEntries), 'on_time_days' => array_column($onTimeEntries, 'day'), 'retroactive_days' => array_column($retroactiveEntries, 'day'), 'retroactive_details' => $retroactiveEntries, ]; } file_put_contents(__DIR__ . '/approval_report.json', json_encode(['approved_total' => $approvedCount, 'interns' => $report], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); echo "Processed " . count($interns) . " interns. Newly approved entries: " . $approvedCount . "\n";