wip: first working version

This commit is contained in:
Björn Fromme
2024-11-21 18:38:41 +01:00
parent d4c4e69d09
commit bd13ae6537
24 changed files with 590 additions and 319 deletions
+16
View File
@@ -0,0 +1,16 @@
<?php
namespace App\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
#[\Attribute]
class Booking extends Constraint
{
public string $message = 'WTF?';
public function getTargets(): array|string
{
return static::CLASS_CONSTRAINT;
}
}
@@ -0,0 +1,39 @@
<?php
namespace App\Validator\Constraints;
use App\BusProNet\ApiClient;
use App\BusProNet\Model\BookingUpdate;
use App\BusProNet\Model\Notification;
use App\Form\Model\BookingData;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class BookingValidator extends ConstraintValidator
{
public function __construct(private readonly ApiClient $apiClient)
{
}
public function validate(mixed $value, Constraint $constraint): void
{
/** @var BookingData $booking */
$bookingData = $value;
$result = $this->apiClient->updateBooking($bookingData);
if ($result instanceof Notification) {
$this->context
->buildViolation($result->message)
->addViolation()
;
}
if ($result instanceof BookingUpdate && false === $result->valid) {
$this->context
->buildViolation($constraint->message)
->addViolation()
;
}
}
}