startOfDay(); $endDate = Carbon::parse($endDate)->endOfDay(); $workingDay = 0; $now = $startDate->copy(); while ($now <= $endDate) { if (!$now->isWeekend() && !in_array($now->format('Y-m-d'), holidays())) { $workingDay++; } $now->addDay(); } return $workingDay; } } /** * Get a list of all holiday dates from the holiday calendar. * * This function retrieves all holiday dates from the HolidayCalendar model * and formats them as Y-m-d strings for easy comparison in date calculations. * * @return array An array of holiday dates in Y-m-d format */ if (!function_exists('holidays')) { function holidays() { return HolidayCalendar::pluck('date')->map( function ($item) { return Carbon::parse($item)->format('Y-m-d'); }, )->toArray(); } }