feat: implement internship form upload functionality for interns with database migration and UI integration

This commit is contained in:
Ümit Tunç
2026-06-01 07:53:59 +03:00
parent e0941fe931
commit 76081f0e85
6 changed files with 183 additions and 0 deletions
+34
View File
@@ -128,6 +128,40 @@ class CareerController extends Controller
]);
}
public function uploadInternshipForm(Request $request)
{
if (!session()->has('intern_id')) {
return redirect()->route('intern.login')->with('error', 'Lütfen önce giriş yapın.');
}
$request->validate([
'internship_form' => 'required|file|mimes:pdf,docx,jpg,png,jpeg|max:51200',
], [
'internship_form.required' => 'Lütfen bir dosya seçin.',
'internship_form.file' => 'Yüklenen öğe geçerli bir dosya olmalıdır.',
'internship_form.mimes' => 'Yalnızca PDF, DOCX, JPG ve PNG formatındaki dosyalar kabul edilir.',
'internship_form.max' => 'Dosya boyutu en fazla 50MB olabilir.',
]);
$intern = CareerApplication::findOrFail(session('intern_id'));
if ($request->hasFile('internship_form')) {
// Delete old file if exists
if ($intern->to_be_signed_internship_form_path) {
Storage::disk('public')->delete($intern->to_be_signed_internship_form_path);
}
$path = $request->file('internship_form')->store('to_be_signed_interns', 'public');
$intern->update([
'to_be_signed_internship_form_path' => $path
]);
return redirect()->back()->with('success', 'İmzalanacak staj formunuz başarıyla yüklendi.');
}
return redirect()->back()->with('error', 'Dosya yüklenirken bir hata oluştu.');
}
public function internLogout()
{
session()->forget('intern_id');