В настоящее время я использую RRULES rlanvin для обработки преобразования строки в данные формата RRULE. Я успешно преобразовал, но у меня есть несколько проблем.
В моем календаре я устанавливаю событие ежедневно каждые 10 дней, начиная с 1 декабря, и через 6 раз оно заканчивается. Поэтому в моем представлении календаря дни, которые я заблокировал, составляют:
- 1st December
- 11th December
- 21st December
- 31st December
И у меня есть вход
- Когда я ввожу листья_темп_даты 1 декабря, а даты_переходов 4 декабря, моя заявка на отпуск отклоняется (это правда, потому что день заблокирован)
- Когда я ввожу уйду date_from_date 8 декабря, а date_to_date 12 декабря, мой запрос на отпуск принят (он содержит 11 декабря день блокировки - неверная логика)
Это мой код ниже, чтобы проверить и обработать событие Recurring в RRULES
$recurring_pattern = Events::where('event_type_id', 2 )
->where('is_recurring', 1)
->get();
foreach ($recurring_pattern as $key) {
$attributes = json_decode($key->recurring_pattern, true);
// dd($recurring_patterns);
//Process the delimiter inside pattern and components
$patterns = explode(';', trim($attributes['pattern'], ';'));
$rules = [
'DTSTART' => $attributes['from_date'],
'FREQ' => $attributes['freq'] + 1,
'INTERVAL' => $attributes['interval'],
];
foreach ($patterns as $pattern) {
list($key, $value) = explode('=', $pattern);
$rules[$key] = $value;
}
//RRULE to get the data in json_decode
$rrule = new RRule($rules);
foreach ($rrule as $key) {
$key->format('Y M d');
if($key <= $from_date_ends && $key >= $from_date_stats ||
$key <= $to_date_ends && $key >= $to_date_stats ||
$key <= $from_date_ends && $key >= $to_date_stats||
$key <= $to_date_ends && $key >= $from_date_stats){
dd('here');
return false;
}
}
}
Когда я использую dump ($ rrule), он возвращает этот результат
#cache: array:6 [
0 => DateTime @1543622400 {#273
date: 2018-12-01 00:00:00.0 UTC (+00:00)
}
1 => DateTime @1544486400 {#272
date: 2018-12-11 00:00:00.0 UTC (+00:00)
}
2 => DateTime @1545350400 {#274
date: 2018-12-21 00:00:00.0 UTC (+00:00)
}
3 => DateTime @1546214400 {#275
date: 2018-12-31 00:00:00.0 UTC (+00:00)
}
4 => DateTime @1547078400 {#276
date: 2019-01-10 00:00:00.0 UTC (+00:00)
}
5 => DateTime @1547942400 {#277
date: 2019-01-20 00:00:00.0 UTC (+00:00)
}
]
Это результат, который я хочу получить, независимо от того, введут ли они from_date и to_date, которые содержат эти дни (которые называются заблокированными), или нет. Что мне нужно, чтобы улучшить и уловить логику событий дня блока (11 декабря, 21 декабря и 31 декабря). Огромное спасибо.