bug fixes, leave managment refactoring, report points
This commit is contained in:
@@ -16,7 +16,7 @@ class LeaveRequestController extends Controller
|
||||
{
|
||||
$query = LeaveRequest::with('staff');
|
||||
|
||||
// Search by Staff Name
|
||||
|
||||
if ($request->filled('search')) {
|
||||
$search = $request->search;
|
||||
$query->whereHas('staff', function($q) use ($search) {
|
||||
@@ -24,18 +24,17 @@ class LeaveRequestController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
// Filter by Status
|
||||
if ($request->filled('status')) {
|
||||
$query->where('status', $request->status);
|
||||
} else {
|
||||
// Default to showing pending requests first if no filter is applied
|
||||
}
|
||||
else {
|
||||
|
||||
$query->orderByRaw("FIELD(status, 'PENDING', 'APPROVED', 'REJECTED')");
|
||||
}
|
||||
|
||||
$leaveRequests = $query->orderBy('created_at', 'desc')->paginate(15);
|
||||
$leaveRequests->appends($request->query());
|
||||
|
||||
// KPIs for HR
|
||||
$pendingCount = LeaveRequest::where('status', 'PENDING')->count();
|
||||
$approvedThisMonth = LeaveRequest::where('status', 'APPROVED')
|
||||
->whereMonth('start_date', Carbon::now()->month)
|
||||
@@ -52,11 +51,8 @@ class LeaveRequestController extends Controller
|
||||
}
|
||||
public function myLeave()
|
||||
{
|
||||
// Find the staff profile of the currently logged-in user
|
||||
// Adjust this logic if you link Users to StaffMembers differently (e.g., via a staff_id foreign key)
|
||||
$staff = StaffMember::where('email', auth()->user()->email)->firstOrFail();
|
||||
|
||||
// Fetch their leave history, latest first
|
||||
$staff = StaffMember::where('email', auth()->user()->email)->firstOrFail();
|
||||
$leaveRequests = LeaveRequest::where('staff_member_id', $staff->id)
|
||||
->orderBy('created_at', 'desc')
|
||||
->paginate(10);
|
||||
@@ -82,7 +78,6 @@ class LeaveRequestController extends Controller
|
||||
$start = Carbon::parse($validated['start_date']);
|
||||
$end = Carbon::parse($validated['end_date']);
|
||||
|
||||
// Calculate total days excluding weekends
|
||||
$totalDays = $start->diffInDaysFiltered(function (Carbon $date) {
|
||||
return !$date->isWeekend();
|
||||
}, $end) + 1; // +1 to include both the start and end day
|
||||
@@ -107,7 +102,7 @@ class LeaveRequestController extends Controller
|
||||
}
|
||||
|
||||
|
||||
public function updateStatus(Request $request, $id)
|
||||
public function updateStatusOld(Request $request, $id)
|
||||
{
|
||||
$leaveRequest = LeaveRequest::findOrFail($id);
|
||||
|
||||
@@ -140,4 +135,42 @@ class LeaveRequestController extends Controller
|
||||
|
||||
return response()->json(['success' => true, 'message' => 'Leave status updated successfully!']);
|
||||
}
|
||||
}
|
||||
public function updateStatus(Request $request, $id)
|
||||
{
|
||||
$leaveRequest = LeaveRequest::findOrFail($id);
|
||||
|
||||
$incomingStatus = strtoupper($request->status);
|
||||
$request->merge(['status' => $incomingStatus]);
|
||||
|
||||
$validated = $request->validate([
|
||||
'status' => 'required|in:APPROVED,REJECTED',
|
||||
'admin_remarks' => 'nullable|string',
|
||||
]);
|
||||
|
||||
$currentStatus = strtoupper($leaveRequest->status);
|
||||
$newStatus = $validated['status'];
|
||||
|
||||
$staff = $leaveRequest->staff;
|
||||
|
||||
if ($staff && strtolower($leaveRequest->leave_type) === 'annual') { // only annual leave affects leave balance
|
||||
|
||||
if ($newStatus === 'APPROVED' && $currentStatus !== 'APPROVED') {
|
||||
$staff->annual_leave_balance -= $leaveRequest->total_days;
|
||||
$staff->save();
|
||||
}
|
||||
|
||||
if ($newStatus === 'REJECTED' && $currentStatus === 'APPROVED') {
|
||||
$staff->annual_leave_balance += $leaveRequest->total_days;
|
||||
$staff->save();
|
||||
}
|
||||
}
|
||||
|
||||
$leaveRequest->update([
|
||||
'status' => $newStatus,
|
||||
'admin_remarks' => $validated['admin_remarks'] ?? null,
|
||||
'approved_by' => auth()->id(),
|
||||
]);
|
||||
|
||||
return response()->json(['success' => true, 'message' => 'Leave status updated successfully!']);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user