Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 69
0.00% covered (danger)
0.00%
0 / 27
CRAP
0.00% covered (danger)
0.00%
0 / 1
Kalender
0.00% covered (danger)
0.00%
0 / 69
0.00% covered (danger)
0.00%
0 / 27
1332
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 __toString
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 addKalenderTermin
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 addTermin
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
12
 getArbeitsbeginn
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setArbeitsbeginn
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getArbeitsende
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setArbeitsende
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getArbeitstage
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setArbeitstage
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBenutzer
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setBenutzer
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBezeichnung
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getFarbwert
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setFarbwert
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getIconindex
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setIconindex
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getLfdnr
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getTermine
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 removeKalenderTermin
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 removeTermin
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
 setArbeitsbeginnMinute
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 setArbeitsbeginnStunde
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 setArbeitsendeMinute
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 setArbeitsendeStunde
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 setBezeichnung
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getKalenderTermine
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Satag\AmicronEntityBundle\Entity;
6
7use Doctrine\Common\Collections\ArrayCollection;
8use Doctrine\Common\Collections\Collection;
9use Doctrine\DBAL\Types\Types;
10use Doctrine\ORM\Mapping as ORM;
11use Satag\AmicronEntityBundle\Traits\BlameableEntity;
12use Satag\AmicronEntityBundle\Traits\BlameableEntityInterface;
13
14/**
15 * @see \Satag\AmicronEntityBundle\Tests\Entity\KalenderTest
16 */
17#[ORM\Entity]
18#[ORM\HasLifecycleCallbacks]
19#[ORM\Table(name: 'KALENDER')]
20#[ORM\Index(columns: ['benutzerlfdnr'], name: 'KALENDER_BENUTZERLFDNR_FK')]
21class Kalender implements BlameableEntityInterface, \Stringable
22{
23    use BlameableEntity;
24
25    final public const string DATE_TIME_INIT = '1970-01-01 00:00:00';
26
27    #[ORM\Column(name: 'arbeitsbeginn', type: Types::TIME_IMMUTABLE, nullable: true)]
28    private ?\DateTimeImmutable $arbeitsbeginn = null;
29
30    #[ORM\Column(name: 'arbeitsende', type: Types::TIME_IMMUTABLE, nullable: true)]
31    private ?\DateTimeImmutable $arbeitsende = null;
32
33    #[ORM\Column(name: 'arbeitstage', type: Types::INTEGER, nullable: true)]
34    private ?int $arbeitstage = null;
35
36    #[ORM\ManyToOne(targetEntity: Benutzer::class)]
37    #[ORM\JoinColumn(name: 'benutzerlfdnr', referencedColumnName: 'lfdnr')]
38    private ?Benutzer $benutzer = null;
39
40    #[ORM\Column(name: 'farbwert', type: Types::INTEGER, nullable: true)]
41    private ?int $farbwert = null;
42
43    #[ORM\Column(name: 'iconindex', type: Types::INTEGER, nullable: true)]
44    private ?int $iconindex = null;
45
46    /**
47     * @var Collection<int, KalenderTermin>
48     */
49    #[ORM\OneToMany(mappedBy: 'kalender', targetEntity: KalenderTermin::class, cascade: ['persist'], fetch: 'EXTRA_LAZY', orphanRemoval: true)]
50    private Collection $kalenderTermine;
51
52    #[ORM\Column(name: 'lfdnr', type: Types::INTEGER, nullable: false)]
53    #[ORM\Id]
54    #[ORM\GeneratedValue(strategy: 'SEQUENCE')]
55    #[ORM\SequenceGenerator(sequenceName: 'GEN_LFDNR', allocationSize: 1, initialValue: 1)]
56    public private(set) ?int $lfdnr = null;
57
58    public function __construct(
59        #[ORM\Column(name: 'bezeichnung', type: Types::STRING, length: 80, nullable: false)]
60        private string $bezeichnung
61    ) {
62        $this->kalenderTermine = new ArrayCollection();
63    }
64
65    public function __toString(): string
66    {
67        return $this->getBezeichnung();
68    }
69
70    public function addKalenderTermin(KalenderTermin $kalenderTermin): void
71    {
72        if ($this->kalenderTermine->contains($kalenderTermin)) {
73            return;
74        }
75
76        $this->kalenderTermine->add($kalenderTermin);
77        // needed to update the owning side of the relationship!
78        $kalenderTermin->setKalender($this);
79        $kalenderTermin->getTermin()?->addKalenderTermin($kalenderTermin);
80    }
81
82    public function addTermin(Termin $termin): self
83    {
84        foreach ($this->getKalenderTermine() as $kalenderTermin) {
85            if ($kalenderTermin->getTermin() === $termin) {
86                return $this;
87            }
88        }
89        $kalenderTermin = new KalenderTermin();
90        $kalenderTermin
91            ->setKalender($this)
92            ->setTermin($termin);
93        $this->addKalenderTermin($kalenderTermin);
94
95        return $this;
96    }
97
98    public function getArbeitsbeginn(): ?\DateTimeImmutable
99    {
100        return $this->arbeitsbeginn;
101    }
102
103    public function setArbeitsbeginn(\DateTimeImmutable|\DateTime|null $arbeitsbeginn): self
104    {
105        $this->arbeitsbeginn = $arbeitsbeginn instanceof \DateTime
106            ? \DateTimeImmutable::createFromMutable($arbeitsbeginn)
107            : $arbeitsbeginn;
108
109        return $this;
110    }
111
112    public function getArbeitsende(): ?\DateTimeImmutable
113    {
114        return $this->arbeitsende;
115    }
116
117    public function setArbeitsende(\DateTimeImmutable|\DateTime|null $arbeitsende): self
118    {
119        $this->arbeitsende = $arbeitsende instanceof \DateTime
120            ? \DateTimeImmutable::createFromMutable($arbeitsende)
121            : $arbeitsende;
122
123        return $this;
124    }
125
126    public function getArbeitstage(): ?int
127    {
128        return $this->arbeitstage;
129    }
130
131    public function setArbeitstage(?int $arbeitstage): self
132    {
133        $this->arbeitstage = $arbeitstage;
134
135        return $this;
136    }
137
138    public function getBenutzer(): ?Benutzer
139    {
140        return $this->benutzer;
141    }
142
143    public function setBenutzer(?Benutzer $benutzer): self
144    {
145        $this->benutzer = $benutzer;
146
147        return $this;
148    }
149
150    public function getBezeichnung(): string
151    {
152        return $this->bezeichnung;
153    }
154
155    public function getFarbwert(): ?int
156    {
157        return $this->farbwert;
158    }
159
160    public function setFarbwert(?int $farbwert): self
161    {
162        $this->farbwert = $farbwert;
163
164        return $this;
165    }
166
167    public function getIconindex(): ?int
168    {
169        return $this->iconindex;
170    }
171
172    public function setIconindex(?int $iconindex): self
173    {
174        $this->iconindex = $iconindex;
175
176        return $this;
177    }
178
179    public function getLfdnr(): ?int
180    {
181        return $this->lfdnr;
182    }
183
184    /**
185     * @return ArrayCollection<int, Termin>
186     */
187    public function getTermine(): ArrayCollection
188    {
189        $termine = new ArrayCollection();
190        foreach ($this->getKalenderTermine() as $kalenderTermin) {
191            $termine->add($kalenderTermin->getTermin());
192        }
193
194        return $termine;
195    }
196
197    public function removeKalenderTermin(KalenderTermin $kalenderTermin): void
198    {
199        if (!$this->kalenderTermine->contains($kalenderTermin)) {
200            return;
201        }
202        $this->kalenderTermine->removeElement($kalenderTermin);
203        // needed to update the owning side of the relationship!
204        $kalenderTermin->getTermin()?->removeKalenderTermin($kalenderTermin);
205        $kalenderTermin->setKalender(null);
206    }
207
208    public function removeTermin(Termin $termin): self
209    {
210        foreach ($this->getKalenderTermine() as $kalenderTermin) {
211            if ($kalenderTermin->getTermin() === $termin) {
212                $this->removeKalenderTermin($kalenderTermin);
213
214                return $this;
215            }
216        }
217
218        return $this;
219    }
220
221    public function setArbeitsbeginnMinute(int $minute): self
222    {
223        $arbeitsbeginn = $this->arbeitsbeginn ?? new \DateTimeImmutable(self::DATE_TIME_INIT);
224        $arbeitsbeginn = $arbeitsbeginn->setTime((int) $arbeitsbeginn->format('H'), $minute, (int) $arbeitsbeginn->format('s'));
225
226        return $this->setArbeitsbeginn($arbeitsbeginn);
227    }
228
229    public function setArbeitsbeginnStunde(int $stunde): self
230    {
231        $arbeitsbeginn = $this->arbeitsbeginn ?? new \DateTimeImmutable(self::DATE_TIME_INIT);
232        $arbeitsbeginn = $arbeitsbeginn->setTime($stunde, (int) $arbeitsbeginn->format('i'), (int) $arbeitsbeginn->format('s'));
233
234        return $this->setArbeitsbeginn($arbeitsbeginn);
235    }
236
237    public function setArbeitsendeMinute(int $minute): self
238    {
239        $arbeitsende = $this->arbeitsende ?? new \DateTimeImmutable(self::DATE_TIME_INIT);
240        $arbeitsende = $arbeitsende->setTime((int) $arbeitsende->format('H'), $minute, (int) $arbeitsende->format('s'));
241
242        return $this->setArbeitsende($arbeitsende);
243    }
244
245    public function setArbeitsendeStunde(int $stunde): self
246    {
247        $arbeitsende = $this->arbeitsende ?? new \DateTimeImmutable(self::DATE_TIME_INIT);
248        $arbeitsende = $arbeitsende->setTime($stunde, (int) $arbeitsende->format('i'), (int) $arbeitsende->format('s'));
249
250        return $this->setArbeitsende($arbeitsende);
251    }
252
253    public function setBezeichnung(string $bezeichnung): self
254    {
255        $this->bezeichnung = $bezeichnung;
256
257        return $this;
258    }
259
260    /**
261     * @return Collection<int, KalenderTermin>
262     */
263    private function getKalenderTermine(): Collection
264    {
265        return $this->kalenderTermine;
266    }
267}