Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
34 / 34
100.00% covered (success)
100.00%
12 / 12
CRAP
100.00% covered (success)
100.00%
1 / 1
Benutzergruppe
100.00% covered (success)
100.00%
34 / 34
100.00% covered (success)
100.00%
12 / 12
19
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 __toString
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getBeschreibung
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBeschreibung
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getLfdnr
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setName
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getBenutzer
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 addBenutzer
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 removeBenutzer
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
 removeBenutzerBenutzergruppe
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
 addBenutzerBenutzergruppe
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 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#[ORM\Entity]
15#[ORM\Table(name: 'BENUTZERGRUPPEN')]
16#[ORM\UniqueConstraint(name: 'BENUTZERGRUPPEN_UK', columns: ['name'])]
17class Benutzergruppe extends AbstractAmicronEntity implements BlameableEntityInterface, \Stringable
18{
19    use BlameableEntity;
20
21    #[ORM\Column(name: 'beschreibung', type: Types::TEXT, nullable: true)]
22    private ?string $beschreibung = null;
23
24    #[ORM\Column(name: 'lfdnr', type: Types::INTEGER, nullable: false)]
25    #[ORM\Id]
26    #[ORM\GeneratedValue(strategy: 'SEQUENCE')]
27    #[ORM\SequenceGenerator(sequenceName: 'GEN_LFDNR', allocationSize: 1, initialValue: 1)]
28    public private(set) ?int $lfdnr = null;
29
30    #[ORM\Column(name: 'name', type: Types::STRING, length: 20, nullable: true)]
31    private ?string $name = null;
32
33    /**
34     * @var Collection<int, BenutzerBenutzergruppen>
35     */
36    #[ORM\OneToMany(mappedBy: 'benutzergruppe', targetEntity: BenutzerBenutzergruppen::class, cascade: ['persist'], orphanRemoval: true)]
37    private Collection $benutzerBenutzergruppen;
38
39    public function __construct()
40    {
41        $this->benutzerBenutzergruppen = new ArrayCollection();
42    }
43
44    #[\Override]
45    public function __toString(): string
46    {
47        return \sprintf('%s (%s)', $this->getName(), $this->lfdnr);
48    }
49
50    public function getBeschreibung(): ?string
51    {
52        return $this->beschreibung;
53    }
54
55    public function setBeschreibung(?string $beschreibung): self
56    {
57        $this->beschreibung = $beschreibung;
58
59        return $this;
60    }
61
62    public function getLfdnr(): ?int
63    {
64        return $this->lfdnr;
65    }
66
67    public function getName(): ?string
68    {
69        return $this->name;
70    }
71
72    public function setName(?string $name): self
73    {
74        $this->name = $name;
75
76        return $this;
77    }
78
79    /**
80     * @return Collection<int, Benutzer>
81     */
82    public function getBenutzer(): Collection
83    {
84        $benutzer = new ArrayCollection();
85        foreach ($this->benutzerBenutzergruppen as $benutzerBenutzergruppen) {
86            $benutzer->add($benutzerBenutzergruppen->getBenutzer());
87        }
88
89        return $benutzer;
90    }
91
92    public function addBenutzer(Benutzer $benutzer): void
93    {
94        foreach ($this->benutzerBenutzergruppen as $benutzerBenutzergruppen) {
95            if ($benutzerBenutzergruppen->getBenutzer() === $benutzer) {
96                return;
97            }
98        }
99
100        $benutzerBenutzergruppen = new BenutzerBenutzergruppen($benutzer, $this);
101        $this->benutzerBenutzergruppen->add($benutzerBenutzergruppen);
102        $this->addBenutzerBenutzergruppe($benutzerBenutzergruppen);
103    }
104
105    public function removeBenutzer(Benutzer $benutzer): void
106    {
107        foreach ($this->benutzerBenutzergruppen as $benutzerBenutzergruppe) {
108            if ($benutzerBenutzergruppe->getBenutzer() === $benutzer) {
109                $this->removeBenutzerBenutzergruppe($benutzerBenutzergruppe);
110
111                return;
112            }
113        }
114    }
115
116    public function removeBenutzerBenutzergruppe(BenutzerBenutzergruppen $benutzerBenutzergruppen): void
117    {
118        if (!$this->benutzerBenutzergruppen->contains($benutzerBenutzergruppen)) {
119            return;
120        }
121
122        $this->benutzerBenutzergruppen->removeElement($benutzerBenutzergruppen);
123
124        // update the owning side(s)
125        $benutzerBenutzergruppen->getBenutzer()?->removeBenutzerBenutzergruppe(
126            $benutzerBenutzergruppen
127        );
128        $benutzerBenutzergruppen->setBenutzergruppe(null);
129    }
130
131    public function addBenutzerBenutzergruppe(BenutzerBenutzergruppen $benutzerBenutzergruppen): void
132    {
133        if ($this->benutzerBenutzergruppen->contains($benutzerBenutzergruppen)) {
134            return;
135        }
136
137        $this->benutzerBenutzergruppen->add($benutzerBenutzergruppen);
138        $benutzerBenutzergruppen->getBenutzer()?->addBenutzerBenutzergruppe($benutzerBenutzergruppen);
139    }
140}