Feat: Implement fine grained teamer profile data validation
This commit is contained in:
@@ -2,27 +2,29 @@
|
||||
|
||||
namespace App\Entity\Embeddable;
|
||||
|
||||
use App\BusProNet\Model\Address as BpnAddress;
|
||||
use App\Validator\Constraints as AppAssert;
|
||||
use App\BusProNet\Model\ProfileResponse;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
#[ORM\Embeddable]
|
||||
#[AppAssert\Address(message: 'Bitte vervollständige deine Anschrift', groups: ['profile_preflight'])]
|
||||
class Address
|
||||
{
|
||||
#[ORM\Column(type: 'string', nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Straße an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Straße an', groups: ['profile'])]
|
||||
protected ?string $street = null;
|
||||
|
||||
#[ORM\Column(type: 'string', nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Postleitzahl an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Postleitzahl an', groups: ['profile'])]
|
||||
protected ?string $postCode = null;
|
||||
|
||||
#[ORM\Column(type: 'string', nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deinen Ort an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deinen Ort an', groups: ['profile'])]
|
||||
protected ?string $city = null;
|
||||
|
||||
#[ORM\Column(type: 'string', nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deinen Land an', groups: ['profile'])]
|
||||
protected ?string $country = null;
|
||||
|
||||
public function toPayload(): array
|
||||
|
||||
@@ -7,20 +7,24 @@ use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
#[ORM\Embeddable]
|
||||
#[AppAssert\BankAccount]
|
||||
#[AppAssert\BankAccount(message: 'Bitte vervollständige deine Bankverbindung', groups: ['profile_preflight'])]
|
||||
class BankAccount
|
||||
{
|
||||
#[ORM\Column(nullable: true)]
|
||||
#[Assert\Iban(message: 'Die IBAN ist ungültig')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib die IBAN an', groups: ['profile'])]
|
||||
#[Assert\Iban(message: 'Bitte gib eine gültige IBAN an', groups: ['profile'])]
|
||||
private ?string $iban = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib den BIC an', groups: ['profile'])]
|
||||
private ?string $bic = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib den Namen deiner Bank an', groups: ['profile'])]
|
||||
private ?string $bank = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib den Kontoinhaber an', groups: ['profile'])]
|
||||
private ?string $holder = null;
|
||||
|
||||
public function getIban(bool $obfuscated = false): ?string
|
||||
|
||||
@@ -2,23 +2,25 @@
|
||||
|
||||
namespace App\Entity\Embeddable;
|
||||
|
||||
use App\Validator\Constraints as AppAssert;
|
||||
use App\BusProNet\Model\ProfileResponse;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
#[ORM\Embeddable]
|
||||
#[AppAssert\Communication(message: 'Bitte vervollständige deine Kontaktdaten', groups: ['profile_preflight'])]
|
||||
class Communication
|
||||
{
|
||||
#[ORM\Column(type: 'string', nullable: true)]
|
||||
protected ?string $phone = null;
|
||||
|
||||
#[ORM\Column(type: 'string', nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte angeben')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Mobilnummer an', groups: ['profile'])]
|
||||
protected ?string $mobile = null;
|
||||
|
||||
#[ORM\Column(type: 'string', nullable: true)]
|
||||
#[Assert\Email(mode: 'strict', message: 'Diese E-Mail-Adresse ist ungültig')]
|
||||
#[Assert\NotBlank(message: 'Bitte angeben')]
|
||||
#[Assert\Email(mode: 'strict', message: 'Bitte gib eine gültige E-Mail-Adresse an', groups: ['profile'])]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine E-Mail-Adresse an', groups: ['profile'])]
|
||||
protected ?string $email = null;
|
||||
|
||||
public function toPayload(): array
|
||||
|
||||
@@ -32,19 +32,19 @@ class Teamer implements TimestampableEntityInterface
|
||||
private string $uuid;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deinen Vornamen an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deinen Vornamen an', groups: ['profile'])]
|
||||
private ?string $firstName = null;
|
||||
|
||||
#[ORM\Column(length: 255)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deinen Nachnamen an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deinen Nachnamen an', groups: ['profile'])]
|
||||
private ?string $lastName = null;
|
||||
|
||||
#[ORM\Column(length: 1)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib dein Geschlecht an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib dein Geschlecht an', groups: ['profile'])]
|
||||
private ?string $gender = null;
|
||||
|
||||
#[ORM\Column(type: Types::DATE_IMMUTABLE)]
|
||||
#[Assert\NotNull(message: 'Bitte gib dein Geburtsdatum an')]
|
||||
#[Assert\NotNull(message: 'Bitte gib dein Geburtsdatum an', groups: ['profile'])]
|
||||
private ?\DateTimeImmutable $dateOfBirth = null;
|
||||
|
||||
#[ORM\Column(length: 255, nullable: true)]
|
||||
@@ -54,7 +54,7 @@ class Teamer implements TimestampableEntityInterface
|
||||
private ?string $salutation = null;
|
||||
|
||||
#[ORM\Column(length: 255, nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Nationalität an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Nationalität an', groups: ['profile'])]
|
||||
private ?string $nationality = null;
|
||||
|
||||
#[ORM\Embedded(class: Address::class)]
|
||||
@@ -70,11 +70,11 @@ class Teamer implements TimestampableEntityInterface
|
||||
private ?BankAccount $bankAccount = null;
|
||||
|
||||
#[ORM\Column(length: 255, nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine SteuerID an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine SteuerID an', groups: ['profile', 'profile_preflight'])]
|
||||
private ?string $taxId = null;
|
||||
|
||||
#[ORM\Column(length: 255, nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Krankenversicherung an')]
|
||||
#[Assert\NotBlank(message: 'Bitte gib deine Krankenversicherung an', groups: ['profile', 'profile_preflight'])]
|
||||
private ?string $healthInsuranceCompany = null;
|
||||
|
||||
#[ORM\Column(length: 32)]
|
||||
@@ -87,6 +87,7 @@ class Teamer implements TimestampableEntityInterface
|
||||
private Collection $availabilities;
|
||||
|
||||
#[ORM\OneToOne(cascade: ['persist', 'remove'])]
|
||||
#[Assert\NotNull(message: 'Bitte lade ein Foto von dir hoch', groups: ['profile', 'profile_preflight'])]
|
||||
private ?Upload $photo = null;
|
||||
|
||||
#[ORM\OneToMany(mappedBy: 'teamer', targetEntity: Feedback::class)]
|
||||
|
||||
Reference in New Issue
Block a user