feat: add utility scripts to automate internship journal review, approval, and summary generation processes
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
<?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";
|
||||
Reference in New Issue
Block a user