@php $isModal = $isModal ?? false; $formAction = $event->exists ? route('calendar.event.update', [$calendar, $event]) : route('calendar.event.store', $calendar); $rruleValue = trim((string) ($rrule ?? '')); $rruleParts = []; foreach (array_filter(explode(';', $rruleValue)) as $chunk) { if (!str_contains($chunk, '=')) continue; [$key, $value] = explode('=', $chunk, 2); $rruleParts[strtoupper($key)] = $value; } $freq = strtolower($rruleParts['FREQ'] ?? ''); $interval = (int) ($rruleParts['INTERVAL'] ?? 1); if ($interval < 1) $interval = 1; $byday = array_filter(explode(',', $rruleParts['BYDAY'] ?? '')); $bymonthday = array_filter(explode(',', $rruleParts['BYMONTHDAY'] ?? '')); $bysetpos = $rruleParts['BYSETPOS'] ?? null; $startDefault = old('start_at', $start ?? null); $startDate = $startDefault ? \Carbon\Carbon::parse($startDefault) : \Carbon\Carbon::now(); $weekdayMap = [ 'Sun' => 'SU', 'Mon' => 'MO', 'Tue' => 'TU', 'Wed' => 'WE', 'Thu' => 'TH', 'Fri' => 'FR', 'Sat' => 'SA', ]; $defaultWeekday = $weekdayMap[$startDate->format('D')] ?? 'MO'; $defaultMonthDay = (int) $startDate->format('j'); $weekMap = [1 => 'first', 2 => 'second', 3 => 'third', 4 => 'fourth']; $startWeek = $startDate->copy(); $isLastWeek = $startWeek->copy()->addWeek()->month !== $startWeek->month; $defaultMonthWeek = $isLastWeek ? 'last' : ($weekMap[$startDate->weekOfMonth] ?? 'first'); $monthMode = 'days'; if (!empty($bymonthday)) { $monthMode = 'days'; } elseif (!empty($byday) && $bysetpos) { $monthMode = 'weekday'; } $repeatFrequency = old('repeat_frequency', $freq ?: ''); $repeatInterval = old('repeat_interval', $interval); $repeatWeekdays = old('repeat_weekdays', $byday ?: [$defaultWeekday]); $repeatMonthDays = old('repeat_month_days', $bymonthday ?: [$defaultMonthDay]); $repeatMonthMode = old('repeat_monthly_mode', $monthMode); $setposMap = ['1' => 'first', '2' => 'second', '3' => 'third', '4' => 'fourth', '-1' => 'last']; $repeatMonthWeek = old('repeat_month_week', $setposMap[(string) $bysetpos] ?? $defaultMonthWeek); $repeatMonthWeekday = old('repeat_month_weekday', $byday[0] ?? $defaultWeekday); $rruleOptions = [ 'daily' => __('calendar.event.recurrence.daily'), 'weekly' => __('calendar.event.recurrence.weekly'), 'monthly' => __('calendar.event.recurrence.monthly'), 'yearly' => __('calendar.event.recurrence.yearly'), ]; $weekdayOptions = [ 'SU' => __('calendar.event.recurrence.weekdays.sun_short'), 'MO' => __('calendar.event.recurrence.weekdays.mon_short'), 'TU' => __('calendar.event.recurrence.weekdays.tue_short'), 'WE' => __('calendar.event.recurrence.weekdays.wed_short'), 'TH' => __('calendar.event.recurrence.weekdays.thu_short'), 'FR' => __('calendar.event.recurrence.weekdays.fri_short'), 'SA' => __('calendar.event.recurrence.weekdays.sat_short'), ]; $weekdayLong = [ 'SU' => __('calendar.event.recurrence.weekdays.sun'), 'MO' => __('calendar.event.recurrence.weekdays.mon'), 'TU' => __('calendar.event.recurrence.weekdays.tue'), 'WE' => __('calendar.event.recurrence.weekdays.wed'), 'TH' => __('calendar.event.recurrence.weekdays.thu'), 'FR' => __('calendar.event.recurrence.weekdays.fri'), 'SA' => __('calendar.event.recurrence.weekdays.sat'), ]; @endphp