Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 124
0.00% covered (danger)
0.00%
0 / 50
CRAP
0.00% covered (danger)
0.00%
0 / 1
AbstractAufgabeTermin
0.00% covered (danger)
0.00%
0 / 124
0.00% covered (danger)
0.00%
0 / 50
5402
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 addKategorie
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
12
 getAufgabeTerminKategorien
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 addAufgabeTerminKategorie
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 addKunde
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 addLieferant
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 addAdresse
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
12
 addTerminAdresse
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 addMitarbeiter
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBemerkung
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setBemerkung
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
 getBetreff
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setBetreff
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getFreifeld1
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setFreifeld1
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getFreifeld2
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setFreifeld2
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getFreifeld3
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setFreifeld3
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getFuerbenutzer
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setFuerbenutzer
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getKategorien
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getKunden
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
20
 getTerminAufgabeAdressen
0.00% covered (danger)
0.00%
0 / 1
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
 getLieferanten
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
20
 getMitarbeiter
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
20
 getOrt
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setOrt
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getPrioritaet
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setPrioritaet
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getStartzeit
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setStartzeit
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getStatus
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setStatus
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 isErinnerung
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 isNurlesen
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 isPrivat
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 removeKategorie
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
 removeAufgabeTerminKategorie
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 removeKunde
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 removeLieferant
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 removeAdresse
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
12
 removeTerminAdresse
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 removeMitarbeiter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setErinnerung
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 setNurlesen
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 setPrivat
0.00% covered (danger)
0.00%
0 / 2
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 * Termine.
16 */
17#[ORM\Entity]
18#[ORM\InheritanceType('SINGLE_TABLE')]
19#[ORM\DiscriminatorColumn(name: 'ART', type: 'integer')]
20#[ORM\DiscriminatorMap([1 => 'Termin', 2 => 'Aufgabe'])]
21#[ORM\HasLifecycleCallbacks]
22#[ORM\Table(name: 'TERMINE')]
23#[ORM\Index(columns: ['art'], name: 'TERMINE_ART_IDX')]
24#[ORM\Index(columns: ['fuerbenutzerlfdnr', 'startzeit', 'art', 'termintyp', 'ganztags'], name: 'TERMINE_CLC01_IDX')]
25#[ORM\Index(columns: ['fuerbenutzerlfdnr', 'startzeit', 'art', 'status'], name: 'TERMINE_CLC02_IDX')]
26#[ORM\Index(columns: ['termintyp', 'startzeit'], name: 'TERMINE_DATERANGE_IDX')]
27#[ORM\Index(columns: ['prioritaet'], name: 'TERMINE_PRIORITAET_IDX')]
28#[ORM\Index(columns: ['fuerbenutzerlfdnr', 'erinnerung'], name: 'TERMINE_REMINDER_IDX')]
29#[ORM\Index(columns: ['startzeit'], name: 'TERMINE_STARTZEIT_IDX')]
30#[ORM\Index(columns: ['synchid'], name: 'TERMINE_SYNCHID_IDX')]
31#[ORM\Index(columns: ['termintyp'], name: 'TERMINE_TERMINTYP_IDX')]
32#[ORM\Index(columns: ['benutzerlfdnr'], name: 'TERMINE_BENUTZER_FK')]
33#[ORM\Index(columns: ['fuerbenutzerlfdnr'], name: 'TERMINE_FUERBENUTZER_FK')]
34#[ORM\Index(columns: ['vaterlfdnr'], name: 'TERMINE_VATERLFDNR_FK')]
35abstract class AbstractAufgabeTermin extends AbstractAmicronEntity implements \Stringable, BlameableEntityInterface
36{
37    use BlameableEntity;
38
39    final public const HOCH = 1;
40    final public const NIEDRIG = 3;
41    final public const NORMAL = 2;
42
43    #[ORM\Column(name: 'bemerkung', type: Types::TEXT, nullable: true)]
44    protected ?string $bemerkung = null;
45
46    #[ORM\ManyToOne(targetEntity: Benutzer::class)]
47    #[ORM\JoinColumn(name: 'benutzerlfdnr', referencedColumnName: 'lfdnr')]
48    protected ?Benutzer $benutzer = null;
49
50    #[ORM\Column(name: 'betreff', type: Types::STRING, length: 255, nullable: true)]
51    protected ?string $betreff = null;
52
53    #[ORM\Column(name: 'endzeit', type: Types::DATETIME_IMMUTABLE, nullable: true)]
54    protected ?\DateTimeImmutable $endzeit = null;
55
56    #[ORM\Column(name: 'erinnerung', type: Types::BOOLEAN, length: 1, nullable: true)]
57    protected ?bool $erinnerung = null;
58
59    #[ORM\Column(name: 'freifeld1', type: Types::STRING, length: 255, nullable: true)]
60    protected ?string $freifeld1 = null;
61
62    #[ORM\Column(name: 'freifeld2', type: Types::STRING, length: 255, nullable: true)]
63    protected ?string $freifeld2 = null;
64
65    #[ORM\Column(name: 'freifeld3', type: Types::STRING, length: 255, nullable: true)]
66    protected ?string $freifeld3 = null;
67
68    #[ORM\ManyToOne(targetEntity: Benutzer::class)]
69    #[ORM\JoinColumn(name: 'fuerbenutzerlfdnr', referencedColumnName: 'lfdnr')]
70    protected ?Benutzer $fuerbenutzer = null;
71
72    #[ORM\Column(name: 'lfdnr', type: Types::INTEGER, nullable: false)]
73    #[ORM\Id]
74    #[ORM\GeneratedValue(strategy: 'SEQUENCE')]
75    #[ORM\SequenceGenerator(sequenceName: 'GEN_LFDNR', allocationSize: 1, initialValue: 1)]
76    public private(set) ?int $lfdnr = null;
77
78    #[ORM\Column(name: 'nurlesen', type: Types::BOOLEAN, length: 1, nullable: true)]
79    protected ?bool $nurlesen = null;
80
81    #[ORM\Column(name: 'ort', type: Types::STRING, length: 255, nullable: true)]
82    protected ?string $ort = null;
83
84    #[ORM\Column(name: 'prioritaet', type: Types::INTEGER, nullable: true)]
85    protected ?int $prioritaet = self::NORMAL;
86
87    #[ORM\Column(name: 'privat', type: Types::BOOLEAN, length: 1, nullable: true)]
88    protected ?bool $privat = null;
89
90    #[ORM\Column(name: 'startzeit', type: Types::DATETIME_IMMUTABLE, nullable: true)]
91    protected ?\DateTimeImmutable $startzeit = null;
92
93    /**
94     * Status 0 = offen, 1 = in Bearbeitung, 2 = erledigt.
95     */
96    #[ORM\Column(name: 'status', type: Types::INTEGER, nullable: true)]
97    protected ?int $status = 0;
98
99    /**
100     * @var Collection<int, AufgabeTerminKategorie>
101     */
102    #[ORM\OneToMany(mappedBy: 'aufgabeTermin', targetEntity: AufgabeTerminKategorie::class, cascade: ['persist'], fetch: 'EXTRA_LAZY', orphanRemoval: true)]
103    private Collection $aufgabeTerminKategorien;
104
105    /**
106     * @var Collection<int, TerminAufgabeAdresse>
107     */
108    #[ORM\OneToMany(mappedBy: 'termin', targetEntity: TerminAufgabeAdresse::class, cascade: ['persist'], fetch: 'EXTRA_LAZY', orphanRemoval: true)]
109    private Collection $terminAufgabeAdressen;
110
111    public function __construct(
112    ) {
113        $this->terminAufgabeAdressen = new ArrayCollection();
114        $this->aufgabeTerminKategorien = new ArrayCollection();
115    }
116
117    public function addKategorie(Kategorie $kategorie): self
118    {
119        foreach ($this->getAufgabeTerminKategorien() as $terminAufgabeKategorie) {
120            if ($terminAufgabeKategorie->getKategorie() === $kategorie) {
121                return $this;
122            }
123        }
124        $terminAufgabeKategorie = new AufgabeTerminKategorie();
125
126        $terminAufgabeKategorie
127            ->setAufgabeTermin($this)
128            ->setKategorie($kategorie);
129        $this->addAufgabeTerminKategorie($terminAufgabeKategorie);
130
131        return $this;
132    }
133
134    /**
135     * @return Collection<int, AufgabeTerminKategorie>
136     */
137    public function getAufgabeTerminKategorien(): Collection
138    {
139        return $this->aufgabeTerminKategorien;
140    }
141
142    public function addAufgabeTerminKategorie(AufgabeTerminKategorie $aufgabeTerminKategorie): void
143    {
144        if ($this->aufgabeTerminKategorien->contains($aufgabeTerminKategorie)) {
145            return;
146        }
147
148        $this->aufgabeTerminKategorien->add($aufgabeTerminKategorie);
149        // needed to update the owning side of the relationship!
150        $aufgabeTerminKategorie->setAufgabeTermin($this);
151        $aufgabeTerminKategorie->getKategorie()?->addAufgabeTerminKategorie($aufgabeTerminKategorie);
152    }
153
154    public function addKunde(Kunde $kunde): self
155    {
156        return $this->addAdresse($kunde);
157    }
158
159    public function addLieferant(Lieferant $lieferant): self
160    {
161        $this->addAdresse($lieferant);
162
163        return $this;
164    }
165
166    public function addAdresse(Adresse $adresse): self
167    {
168        foreach ($this->getTerminAufgabeAdressen() as $terminAdresse) {
169            if ($terminAdresse->getAdresse() === $adresse) {
170                return $this;
171            }
172        }
173        $terminAdresse = new TerminAufgabeAdresse();
174
175        $terminAdresse
176            ->setTermin($this)
177            ->setAdresse($adresse);
178        $this->addTerminAdresse($terminAdresse);
179
180        return $this;
181    }
182
183    public function addTerminAdresse(TerminAufgabeAdresse $terminAdresse): void
184    {
185        if ($this->terminAufgabeAdressen->contains($terminAdresse)) {
186            return;
187        }
188
189        $this->terminAufgabeAdressen->add($terminAdresse);
190        // needed to update the owning side of the relationship!
191        $terminAdresse->setTermin($this);
192        $terminAdresse->getAdresse()?->addTerminAdresse($terminAdresse);
193    }
194
195    public function addMitarbeiter(Mitarbeiter $mitarbeiter): self
196    {
197        $this->addAdresse($mitarbeiter);
198
199        return $this;
200    }
201
202    public function getBemerkung(): ?string
203    {
204        return $this->bemerkung;
205    }
206
207    public function setBemerkung(?string $bemerkung = null): self
208    {
209        $this->bemerkung = $bemerkung;
210
211        return $this;
212    }
213
214    public function getBenutzer(): ?Benutzer
215    {
216        return $this->benutzer;
217    }
218
219    public function setBenutzer(Benutzer $benutzer): self
220    {
221        $this->benutzer = $benutzer;
222
223        return $this;
224    }
225
226    public function getBetreff(): ?string
227    {
228        return $this->betreff;
229    }
230
231    public function setBetreff(?string $betreff = null): self
232    {
233        $this->betreff = $betreff;
234
235        return $this;
236    }
237
238    public function getFreifeld1(): ?string
239    {
240        return $this->freifeld1;
241    }
242
243    public function setFreifeld1(?string $freifeld1 = null): self
244    {
245        $this->freifeld1 = $freifeld1;
246
247        return $this;
248    }
249
250    public function getFreifeld2(): ?string
251    {
252        return $this->freifeld2;
253    }
254
255    public function setFreifeld2(?string $freifeld2 = null): self
256    {
257        $this->freifeld2 = $freifeld2;
258
259        return $this;
260    }
261
262    public function getFreifeld3(): ?string
263    {
264        return $this->freifeld3;
265    }
266
267    public function setFreifeld3(?string $freifeld3 = null): self
268    {
269        $this->freifeld3 = $freifeld3;
270
271        return $this;
272    }
273
274    public function getFuerbenutzer(): ?Benutzer
275    {
276        return $this->fuerbenutzer;
277    }
278
279    public function setFuerbenutzer(?Benutzer $fuerbenutzer = null): self
280    {
281        $this->fuerbenutzer = $fuerbenutzer;
282
283        return $this;
284    }
285
286    /**
287     * @return Collection<int, Kategorie>
288     */
289    public function getKategorien(): Collection
290    {
291        $kategorien = new ArrayCollection();
292        foreach ($this->getAufgabeTerminKategorien() as $aufgabeTerminKategorie) {
293            $kategorien->add($aufgabeTerminKategorie->getKategorie());
294        }
295
296        return $kategorien;
297    }
298
299    /**
300     * @return Collection<int, Kunde>
301     */
302    public function getKunden(): Collection
303    {
304        $terminKunden = new ArrayCollection();
305        foreach ($this->getTerminAufgabeAdressen() as $terminAdresse) {
306            if ($terminAdresse->getAdresse() && is_a($terminAdresse->getAdresse(), Kunde::class)) {
307                $terminKunden->add($terminAdresse->getAdresse());
308            }
309        }
310
311        return $terminKunden;
312    }
313
314    /**
315     * @return Collection<int, TerminAufgabeAdresse>
316     */
317    public function getTerminAufgabeAdressen(): Collection
318    {
319        return $this->terminAufgabeAdressen;
320    }
321
322    public function getLfdnr(): ?int
323    {
324        return $this->lfdnr;
325    }
326
327    /**
328     * @return Collection<int, Lieferant>
329     */
330    public function getLieferanten(): Collection
331    {
332        $terminLieferanten = new ArrayCollection();
333        foreach ($this->getTerminAufgabeAdressen() as $terminAdresse) {
334            if ($terminAdresse->getAdresse() && is_a($terminAdresse->getAdresse(), Lieferant::class)) {
335                $terminLieferanten->add($terminAdresse->getAdresse());
336            }
337        }
338
339        return $terminLieferanten;
340    }
341
342    /**
343     * @return Collection<int, Mitarbeiter>
344     */
345    public function getMitarbeiter(): Collection
346    {
347        $terminMitarbeiter = new ArrayCollection();
348        foreach ($this->getTerminAufgabeAdressen() as $terminAdresse) {
349            if ($terminAdresse->getAdresse() && is_a($terminAdresse->getAdresse(), Mitarbeiter::class)) {
350                $terminMitarbeiter->add($terminAdresse->getAdresse());
351            }
352        }
353
354        return $terminMitarbeiter;
355    }
356
357    public function getOrt(): ?string
358    {
359        return $this->ort;
360    }
361
362    public function setOrt(?string $ort = null): self
363    {
364        $this->ort = $ort;
365
366        return $this;
367    }
368
369    public function getPrioritaet(): ?int
370    {
371        return $this->prioritaet;
372    }
373
374    public function setPrioritaet(?int $prioritaet = null): self
375    {
376        $this->prioritaet = $prioritaet;
377
378        return $this;
379    }
380
381    public function getStartzeit(): ?\DateTimeImmutable
382    {
383        return $this->startzeit;
384    }
385
386    public function setStartzeit(\DateTimeImmutable|\DateTime|null $startzeit = null): self
387    {
388        $this->startzeit = $startzeit instanceof \DateTime
389            ? \DateTimeImmutable::createFromMutable($startzeit)
390            : $startzeit;
391
392        return $this;
393    }
394
395    public function getStatus(): ?int
396    {
397        return $this->status;
398    }
399
400    public function setStatus(?int $status = null): self
401    {
402        $this->status = $status;
403
404        return $this;
405    }
406
407    public function isErinnerung(): ?bool
408    {
409        return $this->erinnerung;
410    }
411
412    public function isNurlesen(): ?bool
413    {
414        return $this->nurlesen;
415    }
416
417    public function isPrivat(): ?bool
418    {
419        return $this->privat;
420    }
421
422    public function removeKategorie(Kategorie $kategorie): self
423    {
424        foreach ($this->getAufgabeTerminKategorien() as $aufgabeTerminKategorie) {
425            if ($aufgabeTerminKategorie->getKategorie() === $kategorie) {
426                $this->removeAufgabeTerminKategorie($aufgabeTerminKategorie);
427
428                return $this;
429            }
430        }
431
432        return $this;
433    }
434
435    public function removeAufgabeTerminKategorie(AufgabeTerminKategorie $aufgabeTerminKategorie): void
436    {
437        if (!$this->aufgabeTerminKategorien->contains($aufgabeTerminKategorie)) {
438            return;
439        }
440
441        $this->aufgabeTerminKategorien->removeElement($aufgabeTerminKategorie);
442        // needed to update the owning side of the relationship!
443        $aufgabeTerminKategorie->getKategorie()?->removeAufgabeTerminKategorie($aufgabeTerminKategorie);
444        $aufgabeTerminKategorie->setAufgabeTermin(null);
445    }
446
447    public function removeKunde(Kunde $kunde): self
448    {
449        return $this->removeAdresse($kunde);
450    }
451
452    public function removeLieferant(Lieferant $lieferant): self
453    {
454        $this->removeAdresse($lieferant);
455
456        return $this;
457    }
458
459    public function removeAdresse(Adresse $adresse): self
460    {
461        foreach ($this->getTerminAufgabeAdressen() as $terminAdresse) {
462            if ($terminAdresse->getAdresse() === $adresse) {
463                $this->removeTerminAdresse($terminAdresse);
464            }
465        }
466
467        return $this;
468    }
469
470    public function removeTerminAdresse(TerminAufgabeAdresse $terminAdresse): void
471    {
472        if (!$this->terminAufgabeAdressen->contains($terminAdresse)) {
473            return;
474        }
475        $this->terminAufgabeAdressen->removeElement($terminAdresse);
476        // needed to update the owning side of the relationship!
477        $terminAdresse->getAdresse()?->removeTerminAdresse($terminAdresse);
478        $terminAdresse->setTermin(null);
479    }
480
481    public function removeMitarbeiter(Mitarbeiter $mitarbeiter): self
482    {
483        return $this->removeAdresse($mitarbeiter);
484    }
485
486    public function setErinnerung(?bool $erinnerung = null): self
487    {
488        $this->erinnerung = $erinnerung;
489
490        return $this;
491    }
492
493    public function setNurlesen(?bool $nurlesen = null): self
494    {
495        $this->nurlesen = $nurlesen;
496
497        return $this;
498    }
499
500    public function setPrivat(?bool $privat = null): self
501    {
502        $this->privat = $privat;
503
504        return $this;
505    }
506}