where('status', 'Pending') ->orderBy('created_at', 'asc') ->get(); $startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d')); $endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d')); $staffReports = StaffMember::where('department_id', '!=', 5) ->withCount(['dailyReports' => function ($query) use ($startDate, $endDate) { $query->whereBetween('report_date', [$startDate, $endDate]); }]) ->orderBy('name') ->get(); return view('management.index', compact('pendingLeaves', 'staffReports', 'startDate', 'endDate')); } public function updateLeaveStatus(Request $request, $id) { $request->validate(['status' => 'required|in:Approved,Rejected']); $leave = LeaveRequest::findOrFail($id); if ($request['status'] === 'Approved' && $leave->status !== 'Approved') { if ($leave->leave_type === 'Annual') { $staff = $leave->staff; $staff->annual_leave_balance -= $leave->total_days; $staff->save(); } } if ($request['status'] === 'Rejected' && $leave->status === 'Rejected') { if ($leave->leave_type === 'Annual') { $staff = $leave->staff; $staff->annual_leave_balance += $leave->total_days; $staff->save(); } } $leave->update([ 'status' => strtoupper($request['status']), 'admin_remarks' => 'N/A', 'approved_by' => auth()->id(), ]); // $leave->update(['status' => $request->status]); return response()->json(['success' => true, 'message' => "Leave request {$request->status} successfully."]); } }