74 lines
2.6 KiB
PHP
74 lines
2.6 KiB
PHP
<?php
|
||
|
||
require __DIR__ . '/../vendor/autoload.php';
|
||
$app = require_once __DIR__ . '/../bootstrap/app.php';
|
||
$app->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";
|