Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
69.23% covered (warning)
69.23%
27 / 39
70.00% covered (warning)
70.00%
7 / 10
CRAP
0.00% covered (danger)
0.00%
0 / 1
DayOff
69.23% covered (warning)
69.23%
27 / 39
70.00% covered (warning)
70.00%
7 / 10
12.91
0.00% covered (danger)
0.00%
0 / 1
 getEntityMapping
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 addConditionYear
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 addConditionDate
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 addConditionName
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 addConditionCommon
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 addConditionDayOffId
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 addConditionScopeId
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
 addConditionDepartmentId
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 addConditionDayoffDeleteInterval
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
 postProcess
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace BO\Zmsbackend\Dayoff\Repository;
4
5class DayOff extends \BO\Zmsbackend\Query\Base implements \BO\Zmsbackend\Query\MappingInterface
6{
7    /**
8     * @var String TABLE mysql table reference
9     */
10    const string TABLE = 'feiertage';
11
12    /**
13     * No resolving required here
14     */
15    protected $resolveLevel = 0;
16
17    /**
18     * @return string[]
19     *
20     */
21    #[\Override]
22    public function getEntityMapping()
23    {
24        return [
25            'id' => 'dayOff.FeiertagID',
26            'date' => 'dayOff.Datum',
27            'lastChange' => 'dayOff.updateTimestamp',
28            'name' => 'dayOff.Feiertag'
29        ];
30    }
31
32    public function addConditionYear($year): static
33    {
34        $this->query->where(self::expression('YEAR(`dayOff`.`Datum`)'), '=', $year);
35        return $this;
36    }
37
38    public function addConditionDate(string $date): static
39    {
40        $this->query->where('dayOff`.`Datum', '=', $date);
41        return $this;
42    }
43
44    /**
45     * @psalm-api
46     */
47    public function addConditionName($name): static
48    {
49        $this->query->where('dayOff`.`Feiertag', '=', $name);
50        return $this;
51    }
52
53    public function addConditionCommon(): static
54    {
55        $this->query->where('dayOff.BehoerdenID', '=', 0);
56        return $this;
57    }
58
59    public function addConditionDayOffId($itemId): static
60    {
61        $this->query->where('dayOff.FeiertagID', '=', $itemId);
62        return $this;
63    }
64
65    public function addConditionScopeId($scopeId): static
66    {
67        $this->leftJoin(
68            new \BO\Zmsbackend\Query\Alias('standort', 'scope_dayoff'),
69            'scope_dayoff.BehoerdenID',
70            '=',
71            'dayOff.BehoerdenID'
72        );
73        $this->query->where('scope_dayoff.StandortID', '=', $scopeId);
74        return $this;
75    }
76
77    public function addConditionDepartmentId($departmentId): static
78    {
79        $this->query->where('dayOff.BehoerdenID', '=', $departmentId);
80        return $this;
81    }
82
83    public function addConditionDayoffDeleteInterval($deleteInSeconds): static
84    {
85        $this->query->where(
86            self::expression(
87                'UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`dayOff`.`Datum`)'
88            ),
89            '>=',
90            $deleteInSeconds
91        );
92        return $this;
93    }
94
95    #[\Override]
96    public function postProcess($data)
97    {
98        $data[$this->getPrefixed("date")] = (new \DateTime($data[$this->getPrefixed("date")]))->getTimestamp();
99        $data[$this->getPrefixed("lastChange")] =
100            (new \DateTime($data[$this->getPrefixed("lastChange")] . \BO\Zmsbackend\Connection\Select::$connectionTimezone))
101            ->getTimestamp();
102        return $data;
103    }
104}