From f4706e6f38c083eb09861e621421aa269d5df8c9 Mon Sep 17 00:00:00 2001 From: This man has no name Date: Wed, 22 Mar 2023 11:24:16 +0100 Subject: [PATCH 1/5] Removed bugged line --- src/CalendarEvent.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/CalendarEvent.php b/src/CalendarEvent.php index 0e42a96..04a0aed 100644 --- a/src/CalendarEvent.php +++ b/src/CalendarEvent.php @@ -286,9 +286,9 @@ public function getEventsBetween($startDate, $endDate, $numberOfEvents = null): return []; } - if ($startDate > $this->start_date) { - $this->start_date = Carbon::parse($startDate); - } +// if ($startDate > $this->start_date) { +// $this->start_date = Carbon::parse($startDate); +// } if (empty($this->end_date)) { $this->end_date = Carbon::parse($endDate); From 802b8f7f25e14d806af57a1d0401bed89ccc39fb Mon Sep 17 00:00:00 2001 From: This man has no name Date: Mon, 17 Jun 2024 11:25:47 +0200 Subject: [PATCH 2/5] Update CalendarEvent.php Salvo in una variabile la data con la quale inizio a cercare --- src/CalendarEvent.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/CalendarEvent.php b/src/CalendarEvent.php index 04a0aed..f9baa19 100644 --- a/src/CalendarEvent.php +++ b/src/CalendarEvent.php @@ -22,6 +22,10 @@ class CalendarEvent extends BaseDTO /** @var Carbon */ public $start_date; + /** @var Carbon */ + // Added by me + public $start_date_searched; + /** @var Carbon */ public $end_date; @@ -282,6 +286,9 @@ public function getEventsBetween($startDate, $endDate, $numberOfEvents = null): { $orgEvent = clone $this; + $this->start_date_searched = Carbon::parse($startDate); + + if ($this->start_date > $endDate or !empty($this->end_date) and $startDate > $this->end_date) { return []; } From eecab6dedfa851934528b6d40326d1a36fb5fbde Mon Sep 17 00:00:00 2001 From: This man has no name Date: Mon, 17 Jun 2024 11:34:58 +0200 Subject: [PATCH 3/5] Update CalendarEvent.php Uso start_date_searched al posto di start_date per i search delle ricorrenze --- src/CalendarEvent.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/CalendarEvent.php b/src/CalendarEvent.php index f9baa19..b177939 100644 --- a/src/CalendarEvent.php +++ b/src/CalendarEvent.php @@ -137,7 +137,8 @@ private function applyCount(Rule $rule, $numberOfOccurrences = null): Rule */ private function applyStartDate(Rule $rule): Rule { - $startDate = Carbon::parse($this->start_date)->setTimeFromTimeString($this->start_time); + $date= $this->start_date_searched?$this->start_date_searched:$this->start_date; + $startDate = Carbon::parse($date)->setTimeFromTimeString($this->start_time); $rule->setStartDate($startDate); return $rule; From 5bf9ccbe72c0b41e93e9a08f8b1cf35b1b103aa8 Mon Sep 17 00:00:00 2001 From: matteo badaracco Date: Wed, 19 Jun 2024 10:06:04 +0200 Subject: [PATCH 4/5] Tornato al codice originale modificato --- src/CalendarEvent.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/CalendarEvent.php b/src/CalendarEvent.php index b177939..2429e14 100644 --- a/src/CalendarEvent.php +++ b/src/CalendarEvent.php @@ -137,7 +137,8 @@ private function applyCount(Rule $rule, $numberOfOccurrences = null): Rule */ private function applyStartDate(Rule $rule): Rule { - $date= $this->start_date_searched?$this->start_date_searched:$this->start_date; + // $date= $this->start_date_searched?$this->start_date_searched:$this->start_date; + $date = $this->start_date; $startDate = Carbon::parse($date)->setTimeFromTimeString($this->start_time); $rule->setStartDate($startDate); @@ -287,16 +288,16 @@ public function getEventsBetween($startDate, $endDate, $numberOfEvents = null): { $orgEvent = clone $this; - $this->start_date_searched = Carbon::parse($startDate); + // $this->start_date_searched = Carbon::parse($startDate); if ($this->start_date > $endDate or !empty($this->end_date) and $startDate > $this->end_date) { return []; } -// if ($startDate > $this->start_date) { -// $this->start_date = Carbon::parse($startDate); -// } + // if ($startDate > $this->start_date) { + // $this->start_date = Carbon::parse($startDate); + // } if (empty($this->end_date)) { $this->end_date = Carbon::parse($endDate); From 3ae7268491a47a3333bf3c04e33d546a1fdc5651 Mon Sep 17 00:00:00 2001 From: matteo badaracco Date: Wed, 19 Jun 2024 10:28:45 +0200 Subject: [PATCH 5/5] Ritorno solo eventi dentro le due date --- src/CalendarEvent.php | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/CalendarEvent.php b/src/CalendarEvent.php index 2429e14..9393ce9 100644 --- a/src/CalendarEvent.php +++ b/src/CalendarEvent.php @@ -29,6 +29,10 @@ class CalendarEvent extends BaseDTO /** @var Carbon */ public $end_date; + /** @var Carbon */ + // Added by me + public $end_date_searched; + /** @var string */ public $start_time; @@ -266,15 +270,33 @@ public function getNextEvents($numberOfEvents = null): array $events = []; foreach ($nextOccurrences as $nextOccurrence) { - $event = clone $this; - $event->start_date = Carbon::parse($nextOccurrence->getStart())->setTimeFromTimeString($this->start_time); - $event->end_date = Carbon::parse($nextOccurrence->getEnd())->setTimeFromTimeString($this->end_time); - $events[] = $event; + + // Vuol dire che ho usato la funzione getEventsBetween + if ($this->start_date_searched && $this->end_date_searched) { + // Controllo se l'evento รจ compreso tra le date cercate + $event = $this->cloneAndUpdateDatesOfEvent($nextOccurrence); + if ($event->start_date->between($this->start_date_searched, $this->end_date_searched) && $event->end_date->between($this->start_date_searched, $this->end_date_searched)) { + $events[] = $event; + } + } else { + $event = $this->cloneAndUpdateDatesOfEvent($nextOccurrence); + $events[] = $event; + } } return $events; } + + private function cloneAndUpdateDatesOfEvent($occurrence) + { + $event = clone $this; + $event->start_date = Carbon::parse($occurrence->getStart())->setTimeFromTimeString($this->start_time); + $event->end_date = Carbon::parse($occurrence->getEnd())->setTimeFromTimeString($this->end_time); + + return $event; + } + /** * @param Carbon|\DateTime|string $startDate * @param Carbon|\DateTime|string $endDate @@ -288,7 +310,9 @@ public function getEventsBetween($startDate, $endDate, $numberOfEvents = null): { $orgEvent = clone $this; - // $this->start_date_searched = Carbon::parse($startDate); + $this->start_date_searched = Carbon::parse($startDate); + $this->end_date_searched = Carbon::parse($endDate); + if ($this->start_date > $endDate or !empty($this->end_date) and $startDate > $this->end_date) {