Skip to content

Commit b432ba2

Browse files
committed
Možnost užití filtru s datumy
Zjednodušení práce s datumy ve filtru
1 parent 46a6b84 commit b432ba2

2 files changed

Lines changed: 54 additions & 2 deletions

File tree

README.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,17 @@ $dataSource = $this->queryObjectDataSourceFactory->create($qo, "id")
3838
}
3939
})
4040
->setFilterCallback(function ($queryObject, array $filter) {
41-
foreach ($filter as $field => $value) {
42-
$queryObject->{'by' . $field}($value);
41+
foreach ($filter as $field => $value) {
42+
switch ($column) {
43+
case 'dateRange':
44+
$queryObject->byDateRange(QueryObjectDataSource::parseFilterDateRange($fieldSet));
45+
break;
46+
case 'date':
47+
$queryObject->byDate(QueryObjectDataSource::parseFilterDate($fieldSet));
48+
break;
49+
default:
50+
$queryObject->{'by' . $field}($value);
51+
}
4352
}
4453
});
4554

src/QueryObjectDataSource.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,47 @@ public function sort(\Ublaboo\DataGrid\Utils\Sorting $sorting) {
148148
return $this;
149149
}
150150

151+
/**
152+
* @param FilterDateRange $filter
153+
* @return array
154+
*/
155+
public static function parseFilterDateRange(FilterDateRange $filter) {
156+
157+
$conditions = $filter->getCondition();
158+
159+
$value_from = $conditions[$filter->getColumn()]['from'];
160+
$value_to = $conditions[$filter->getColumn()]['to'];
161+
162+
if ($value_from) {
163+
$date_from = DateTimeHelper::tryConvertToDate($value_from, [$filter->getPhpFormat()]);
164+
$date_from->setTime(0, 0, 0);
165+
} else {
166+
$date_from = NULL;
167+
}
168+
169+
if ($value_to) {
170+
$date_to = DateTimeHelper::tryConvertToDate($value_to, [$filter->getPhpFormat()]);
171+
$date_to->setTime(23, 59, 59);
172+
} else {
173+
$date_to = NULL;
174+
}
175+
176+
return [
177+
'from' => $date_from,
178+
'to' => $date_to,
179+
];
180+
}
181+
182+
/**
183+
* @param FilterDate $filter
184+
* @return \DateTime|null
185+
*/
186+
public static function parseFilterDate(FilterDate $filter) {
187+
foreach ($filter->getCondition() as $column => $value) {
188+
$date = DateTimeHelper::tryConvertToDateTime($value, [$filter->getPhpFormat()]);
189+
$date->setTime(0, 0, 0);
190+
return $date;
191+
}
192+
}
193+
151194
}

0 commit comments

Comments
 (0)