where('email', auth()->user()->email)->firstOrFail(); return view('profile.index', compact('staff')); } public function update(Request $request) { $staff = StaffMember::where('email', auth()->user()->email)->firstOrFail(); $validated = $request->validate([ 'name' => 'required|string|max:200', 'phone' => 'nullable|string|max:200', 'personal_email' => 'nullable|email|max:191', 'location_country' => 'nullable|string|max:191', 'birth_month' => 'nullable|string|size:2', 'birth_day' => 'nullable|string|size:2', 'photo' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', ]); // Combine month and day if both are provided (e.g., "12-25") if (!empty($request->birth_month) && !empty($request->birth_day)) { $validated['dob'] = $request->birth_month . '-' . $request->birth_day; } else { $validated['dob'] = null; } // Clean up temporary keys unset($validated['birth_month'], $validated['birth_day'], $validated['photo']); if ($request->hasFile('photo')) { if ($staff->profile_pic && Storage::disk('public')->exists($staff->profile_pic)) { Storage::disk('public')->delete($staff->profile_pic); } $validated['profile_pic'] = $request->file('photo')->store('staff_profiles', 'public'); } unset($validated['photo']); $staff->update($validated); return response()->json(['success' => true, 'message' => 'Profile updated successfully!']); } // --- DEPENDENTS / EMERGENCY CONTACTS CRUD --- public function storeDependent(Request $request) { $staff = StaffMember::where('email', auth()->user()->email)->firstOrFail(); $validated = $request->validate([ 'fullname' => 'required|string|max:255', 'relationship' => 'required|string|max:192', 'phone' => 'nullable|string|max:20', 'medical_details' => 'nullable|string', ]); $validated['staff_id'] = $staff->id; StaffDependent::create($validated); return response()->json(['success' => true, 'message' => 'Emergency contact added successfully!']); } public function updateDependent(Request $request, $id) { $staff = StaffMember::where('email', auth()->user()->email)->firstOrFail(); $dependent = StaffDependent::where('staff_id', $staff->id)->findOrFail($id); $validated = $request->validate([ 'fullname' => 'required|string|max:255', 'relationship' => 'required|string|max:192', 'phone' => 'nullable|string|max:20', 'medical_details' => 'nullable|string', ]); $dependent->update($validated); return response()->json(['success' => true, 'message' => 'Emergency contact updated successfully!']); } public function destroyDependent($id) { $staff = StaffMember::where('email', auth()->user()->email)->firstOrFail(); $dependent = StaffDependent::where('staff_id', $staff->id)->findOrFail($id); $dependent->delete(); return redirect()->back()->with('success', 'Emergency contact removed.'); } }