feat: implement quick approval dashboard for intern reports with filtered views and modal navigation
This commit is contained in:
@@ -427,9 +427,18 @@ class CareerController extends Controller
|
||||
];
|
||||
});
|
||||
|
||||
$unapprovedCount = \App\Models\InternshipJournalEntry::where('supervisor_approved', false)
|
||||
->whereNotNull('content')
|
||||
->where('content', '!=', '')
|
||||
->whereHas('careerApplication', function ($q) {
|
||||
$q->where('type', 'internship');
|
||||
})
|
||||
->count();
|
||||
|
||||
return view('front.career.admin_dashboard', [
|
||||
'allInterns' => $allInterns,
|
||||
'ganttInterns' => $ganttInterns,
|
||||
'unapprovedCount' => $unapprovedCount,
|
||||
'meta' => [
|
||||
'title' => 'Staj Yönetici Paneli',
|
||||
'description' => 'Stajyer bilgilerini ve takvimlerini izleyin.',
|
||||
@@ -740,5 +749,53 @@ class CareerController extends Controller
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function getQuickApprovalEntries(Request $request)
|
||||
{
|
||||
if (!auth()->check() || !auth()->user()->hasRole('super_admin')) {
|
||||
return response()->json(['success' => false, 'message' => 'Yetkisiz işlem.'], 403);
|
||||
}
|
||||
|
||||
$type = $request->query('type', 'unapproved'); // 'unapproved' or 'today'
|
||||
$date = $request->query('date');
|
||||
|
||||
$query = \App\Models\InternshipJournalEntry::with('careerApplication')
|
||||
->whereHas('careerApplication', function ($q) {
|
||||
$q->where('type', 'internship');
|
||||
});
|
||||
|
||||
if ($type === 'today') {
|
||||
$targetDate = $date ?: \Carbon\Carbon::today()->format('Y-m-d');
|
||||
$query->whereDate('date', $targetDate);
|
||||
} elseif ($type === 'unapproved') {
|
||||
$query->where('supervisor_approved', false);
|
||||
}
|
||||
|
||||
// Only return entries that have content
|
||||
$query->whereNotNull('content')->where('content', '!=', '');
|
||||
|
||||
$entries = $query->orderBy('date', 'desc')->get()->map(function ($entry) {
|
||||
return [
|
||||
'id' => $entry->id,
|
||||
'day_number' => $entry->day_number,
|
||||
'date' => $entry->date,
|
||||
'formatted_date' => \Carbon\Carbon::parse($entry->date)->format('d.m.Y'),
|
||||
'content' => $entry->content,
|
||||
'is_retroactive' => (bool)$entry->is_retroactive,
|
||||
'supervisor_approved' => (bool)$entry->supervisor_approved,
|
||||
'supervisor_name' => $entry->supervisor_name,
|
||||
'intern' => [
|
||||
'id' => $entry->careerApplication->id,
|
||||
'name' => $entry->careerApplication->name,
|
||||
'email' => $entry->careerApplication->email,
|
||||
]
|
||||
];
|
||||
});
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'entries' => $entries
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user