added leave request, profile and staff members controllers
This commit is contained in:
101
app/Http/Controllers/ProfileController.php
Normal file
101
app/Http/Controllers/ProfileController.php
Normal file
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\StaffMember;
|
||||
use App\Models\StaffDependent;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class ProfileController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$staff = StaffMember::with('dependents')->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.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user