feat: integrate Quill editor for internship journal entries, add retroactive field support, and enforce future date restrictions
This commit is contained in:
@@ -203,12 +203,22 @@ class InternApplicationResource extends Resource
|
||||
foreach ($days as $d) {
|
||||
$dayNum = $d['day_number'];
|
||||
$dateF = $d['formatted_date'];
|
||||
$content = isset($saved[$dayNum]) ? $saved[$dayNum]->content : '';
|
||||
$entry = $saved->get($dayNum);
|
||||
$content = $entry ? $entry->content : '';
|
||||
$isRetro = $entry ? $entry->is_retroactive : false;
|
||||
$updatedAt = $entry ? $entry->updated_at->format('d.m.Y H:i') : null;
|
||||
|
||||
$html .= '<div style="margin-bottom: 12px; padding: 12px; border: 1px solid #e2e8f0; border-radius: 8px; background: #f8fafc;">';
|
||||
$html .= ' <div style="display:flex; justify-content:between; font-size:11px; font-weight:700; color:#475569; border-bottom:1px solid #e2e8f0; padding-bottom:6px; margin-bottom:8px;">';
|
||||
$html .= ' <span style="font-weight: 800; color: #2563eb;">' . $dayNum . '. Gün Raporu</span>';
|
||||
$html .= ' <span style="margin-left: auto;">' . $dateF . '</span>';
|
||||
if ($isRetro) {
|
||||
$html .= ' <span style="margin-left: 10px; background: #fee2e2; color: #991b1b; padding: 1px 6px; border-radius: 4px; font-size: 9px; font-weight: 800;">GERİYE DÖNÜK KAYIT</span>';
|
||||
}
|
||||
if ($updatedAt) {
|
||||
$html .= ' <span style="margin-left: auto;">Son Güncelleme: ' . $updatedAt . '</span>';
|
||||
} else {
|
||||
$html .= ' <span style="margin-left: auto;">' . $dateF . '</span>';
|
||||
}
|
||||
$html .= ' </div>';
|
||||
$html .= ' <div style="font-size:12px; color:#1e293b; white-space:pre-wrap; line-height:1.5;">' . ($content ? e($content) : '<em style="color:#94a3b8;">Rapor yazılmamış</em>') . '</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
@@ -472,21 +472,32 @@ class CareerController extends Controller
|
||||
]);
|
||||
|
||||
$dateObj = \Carbon\Carbon::parse($request->date);
|
||||
|
||||
// 1. Prevent future entries
|
||||
if ($dateObj->isFuture()) {
|
||||
return response()->json(['success' => false, 'message' => 'İleriye dönük staj günleri için defter doldurulamaz.'], 422);
|
||||
}
|
||||
|
||||
// 2. Prevent weekend entries
|
||||
if ($dateObj->isWeekend()) {
|
||||
return response()->json(['success' => false, 'message' => 'Hafta sonu günlerine staj günlüğü girilemez.'], 422);
|
||||
}
|
||||
|
||||
// 3. 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,
|
||||
], [
|
||||
'content' => $request->content,
|
||||
'is_retroactive' => $isRetroactive,
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => $request->day_number . '. Gün kaydı başarıyla kaydedildi.',
|
||||
'message' => $request->day_number . '. Gün kaydı başarıyla kaydedildi.' . ($isRetroactive ? ' (Geriye Dönük Kayıt)' : ''),
|
||||
'entry' => $entry
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,11 @@ class InternshipJournalEntry extends Model
|
||||
'day_number',
|
||||
'date',
|
||||
'content',
|
||||
'is_retroactive',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'is_retroactive' => 'boolean',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user