/** * @throws \Exception * * @return array Mutates the filter values so that it is readily prepared for processing. */ public function getMutatedValues() { $operator = head($this->values); $dates = explode(' - ', last($this->values)); switch ($operator) { case 'before': $values = [DateRange::before(Carbon::createFromFormat(Filterable::$date_format, head($dates), 'GB')->startOfDay())]; break; case 'not_in': $values = [new DateRange(Carbon::createFromFormat(Filterable::$date_format, last($dates), 'GB')->addDay()->startOfDay(), Carbon::createFromFormat(Filterable::$date_format, head($dates), 'GB')->subDay()->endOfDay())]; break; case 'after': $values = [DateRange::after(Carbon::createFromFormat(Filterable::$date_format, last($dates), 'GB')->endOfDay())]; break; case 'in': default: $values = [new DateRange(Carbon::createFromFormat(Filterable::$date_format, head($dates), 'GB')->subDay()->endOfDay(), Carbon::createFromFormat(Filterable::$date_format, last($dates), 'GB')->addDay()->startOfDay())]; } return $values; }