WIP: Adjust model, remove manager branch in navigation

This commit is contained in:
Björn Fromme
2023-10-07 17:34:40 +02:00
parent 25a90b04aa
commit 8740041e7a
30 changed files with 302 additions and 152 deletions
+4 -6
View File
@@ -12,6 +12,7 @@ use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
#[ORM\Entity(repositoryClass: AssignmentRepository::class)]
class Assignment implements BlameableEntityInterface, TimestampableEntityInterface
@@ -39,17 +40,14 @@ class Assignment implements BlameableEntityInterface, TimestampableEntityInterfa
#[Assert\Range(min: 1, minMessage: 'Die Mindestanzahl ist 1')]
private ?int $available = 1;
#[ORM\Column(type: Types::DATE_IMMUTABLE)]
#[Assert\NotNull(message: 'Bitte gib das Beginndatum an')]
#[ORM\Column(type: Types::DATE_IMMUTABLE, nullable: true)]
private ?\DateTimeImmutable $dateFrom = null;
#[ORM\Column(type: Types::DATE_IMMUTABLE)]
#[Assert\NotNull(message: 'Bitte gib das Enddatum an')]
#[ORM\Column(type: Types::DATE_IMMUTABLE, nullable: true)]
#[Assert\GreaterThan(propertyPath: 'dateFrom', message: 'Das Enddatum muss nach dem Beginndatum liegen')]
private ?\DateTimeImmutable $dateTo = null;
#[ORM\Column(type: Types::DATE_IMMUTABLE)]
#[Assert\GreaterThanOrEqual(propertyPath: 'dateFrom', message: 'Die Busabfahrt muss am oder nach dem Beginndatum liegen')]
#[ORM\Column(type: Types::DATE_IMMUTABLE, nullable: true)]
private ?\DateTimeImmutable $pickupDate = null;
#[ORM\Column(nullable: true)]
+10
View File
@@ -49,6 +49,16 @@ class BpnDate
$this->bus = false;
}
public function __toString(): string
{
return sprintf('%s - %s: %s, %s',
$this->getDateFrom()->format('d.m.y'),
$this->getDateTo()->format('d.m.y'),
$this->getProduct(),
$this->getHotel()
);
}
public function getId(): ?int
{
return $this->id;
+30 -15
View File
@@ -5,6 +5,8 @@ namespace App\Entity;
use App\Entity\Traits\BlameableEntity;
use App\Entity\Traits\TimestampableEntity;
use App\Repository\JobProfileRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Uid\Uuid;
@@ -28,15 +30,16 @@ class JobProfile implements BlameableEntityInterface, TimestampableEntityInterfa
#[Assert\NotBlank(message: 'Bitte gib die Bezeichnung an')]
private ?string $name = null;
#[ORM\ManyToOne]
private ?Training $requiredTraining = null;
#[ORM\Column(type: Types::JSON)]
private array $requiredLicenses = [];
#[ORM\ManyToMany(targetEntity: Training::class)]
private Collection $requiredTrainings;
public function __construct()
{
$this->uuid = Uuid::v4();
$this->requiredTrainings = new ArrayCollection();
}
public function getId(): ?int
@@ -61,18 +64,6 @@ class JobProfile implements BlameableEntityInterface, TimestampableEntityInterfa
return $this;
}
public function getRequiredTraining(): ?Training
{
return $this->requiredTraining;
}
public function setRequiredTraining(?Training $requiredTraining): static
{
$this->requiredTraining = $requiredTraining;
return $this;
}
public function getRequiredLicenses(): array
{
return $this->requiredLicenses;
@@ -84,4 +75,28 @@ class JobProfile implements BlameableEntityInterface, TimestampableEntityInterfa
return $this;
}
/**
* @return Collection<int, Training>
*/
public function getRequiredTrainings(): Collection
{
return $this->requiredTrainings;
}
public function addRequiredTraining(Training $requiredTraining): static
{
if (!$this->requiredTrainings->contains($requiredTraining)) {
$this->requiredTrainings->add($requiredTraining);
}
return $this;
}
public function removeRequiredTraining(Training $requiredTraining): static
{
$this->requiredTrainings->removeElement($requiredTraining);
return $this;
}
}