when($filters, function ($query) use ($filters) { if (isset($filters["employee_id"])) { $query->whereHas('employee', function (Builder $query) use ($filters) { $query->where('id', '=', $filters["employee_id"]); }); } if (isset($filters["status"])) { $query->where("status", $filters["status"]); } if (!empty($filters['date'])) { $dateFilter = explode("to", $filters['date']); $startDate = trim($dateFilter[0]); $endDate = trim($dateFilter[1]); if ($startDate === $endDate) { $query->where("created_at", '=', $startDate); } else { $query->where("created_at", '>=', $startDate); $query->where("created_at", '<=', $endDate); } } // if (isset($filters["date"])) { // $explodeDate = explode("to", $filters['date']); // dd($explodeDate); // $query->whereBetween("start_date", [$explodeDate[0], preg_replace('/\s+/', '', $explodeDate[1])]); // } })->latest() ->get(); } public function getLeaveById($leaveId) { return Leave::findOrFail($leaveId); } public function where(array $filter) { return Leave::where($filter); } public function delete($leaveId) { Leave::destroy($leaveId); } public function create(array $leaveDetails) { return Leave::create($leaveDetails); } public function update($leaveId, array $newDetails) { return Leave::where('leave_id', $leaveId)->update($newDetails); } public function getLeaveByEmployeeId(int $id) { return Leave::where([ ['employee_id', $id], ]) ->latest() ->get(); } }