From ae5faf377a983217a102302b7c55c08a4a149d92 Mon Sep 17 00:00:00 2001 From: Djonathan Date: Fri, 8 Jul 2022 16:11:11 -0300 Subject: [PATCH] Bring date only from current year + previous year in the filter. --- app/Support/FilterBuilder/Entity/FilterItem.php | 17 +++++++++++++++++ app/Support/FilterBuilder/FilterType.php | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/app/Support/FilterBuilder/Entity/FilterItem.php b/app/Support/FilterBuilder/Entity/FilterItem.php index a1c7864..93f6969 100644 --- a/app/Support/FilterBuilder/Entity/FilterItem.php +++ b/app/Support/FilterBuilder/Entity/FilterItem.php @@ -30,6 +30,12 @@ class FilterItem extends EntityJson */ protected bool $row = false; + + /** + * @var string + */ + protected string $interval; + /** * @return bool */ @@ -75,4 +81,15 @@ class FilterItem extends EntityJson { $this->value = $value; } + + public function getInterval(): string + { + return $this->interval; + } + + public function setInterval(string $interval): void + { + $this->interval = $interval; + } + } \ No newline at end of file diff --git a/app/Support/FilterBuilder/FilterType.php b/app/Support/FilterBuilder/FilterType.php index 15c3716..8198530 100644 --- a/app/Support/FilterBuilder/FilterType.php +++ b/app/Support/FilterBuilder/FilterType.php @@ -36,6 +36,7 @@ class FilterType "not_null" ]; + public static function filter(Builder $builder, FilterItem $filter): Builder { @@ -61,7 +62,19 @@ class FilterType if ($fType === 'not_like') { $fType = 'not like'; } + + if ($filter->getInterval()) + { + $filter->setField("TO_DATE({$filter->getField()}, 'YYMM')"); + $filter->setValue(DB::raw("TO_DATE(TO_CHAR(current_date , 'YYYY-01-01'), 'YYYY-MM-DD') - INTERVAL + '{$filter->getValue()}' {$filter->getInterval()}")); + $filter->setRow(true); + + } + $field = ($filter->getRow()) ? DB::raw($filter->getField()) : $filter->getField(); + + return $builder->where($field, $fType, $filter->getValue()); }