/
DateTimeFilterTransformer.php
49 lines (38 loc) · 1.16 KB
/
DateTimeFilterTransformer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
declare(strict_types=1);
namespace Sylius\Bundle\GridBundle\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface;
use Webmozart\Assert\Assert;
final class DateTimeFilterTransformer implements DataTransformerInterface
{
private static $defaultTime = [
'from' => ['hour' => '00', 'minute' => '00'],
'to' => ['hour' => '23', 'minute' => '59'],
];
/** @var string */
private $type;
public function __construct(string $type)
{
Assert::oneOf($type, array_keys(static::$defaultTime));
$this->type = $type;
}
/**
* {@inheritdoc}
*/
public function transform($value): array
{
return $value;
}
/**
* {@inheritdoc}
*/
public function reverseTransform($value): array
{
if (!$value['date']['year']) {
return $value;
}
$value['time']['hour'] = $value['time']['hour'] === '' ? static::$defaultTime[$this->type]['hour'] : $value['time']['hour'];
$value['time']['minute'] = $value['time']['minute'] === '' ? static::$defaultTime[$this->type]['minute'] : $value['time']['minute'];
return $value;
}
}