diff --git a/migrations/Version20260321220000.php b/migrations/Version20260321220000.php new file mode 100644 index 0000000..9b751f2 --- /dev/null +++ b/migrations/Version20260321220000.php @@ -0,0 +1,26 @@ +addSql('ALTER TABLE billet_order ADD COLUMN IF NOT EXISTS is_invitation BOOLEAN DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE billet_order DROP COLUMN IF EXISTS is_invitation'); + } +} diff --git a/src/Entity/BilletOrder.php b/src/Entity/BilletOrder.php index 7988d24..f28151a 100644 --- a/src/Entity/BilletOrder.php +++ b/src/Entity/BilletOrder.php @@ -37,6 +37,9 @@ class BilletOrder #[ORM\Column(length: 20)] private string $state = self::STATE_VALID; + #[ORM\Column(nullable: true)] + private ?bool $isInvitation = null; + #[ORM\Column(nullable: true)] private ?\DateTimeImmutable $firstScannedAt = null; @@ -129,6 +132,18 @@ class BilletOrder return self::STATE_VALID === $this->state; } + public function isInvitation(): ?bool + { + return $this->isInvitation; + } + + public function setIsInvitation(?bool $isInvitation): static + { + $this->isInvitation = $isInvitation; + + return $this; + } + public function getFirstScannedAt(): ?\DateTimeImmutable { return $this->firstScannedAt; diff --git a/templates/pdf/billet.html.twig b/templates/pdf/billet.html.twig index ae33ba5..c9ab9f5 100644 --- a/templates/pdf/billet.html.twig +++ b/templates/pdf/billet.html.twig @@ -298,9 +298,9 @@ {% if ticket.billet.definedExit %} Sortie definitive {% else %} - Sortie libre + Sortie - Entree illimitee {% endif %} - {% if design %} + {% if ticket.invitation %} {{ inv_title }} {% endif %} @@ -341,9 +341,15 @@ {% endif %} + {% if organizer.siret %} + + {% endif %} {% if organizer.address %} {% endif %} + {% if organizer.email or organizer.phone %} + + {% endif %} E-Ticket
by E-Cosplay diff --git a/tests/Entity/BilletOrderTest.php b/tests/Entity/BilletOrderTest.php index db57b79..3b006c8 100644 --- a/tests/Entity/BilletOrderTest.php +++ b/tests/Entity/BilletOrderTest.php @@ -21,6 +21,7 @@ class BilletOrderTest extends TestCase self::assertSame(0.0, $ticket->getUnitPriceHTDecimal()); self::assertSame(BilletOrder::STATE_VALID, $ticket->getState()); self::assertTrue($ticket->isValid()); + self::assertNull($ticket->isInvitation()); self::assertNull($ticket->getFirstScannedAt()); self::assertMatchesRegularExpression('/^ETICKET-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$/', $ticket->getReference()); self::assertInstanceOf(\DateTimeImmutable::class, $ticket->getCreatedAt()); @@ -82,6 +83,18 @@ class BilletOrderTest extends TestCase self::assertTrue($ticket->isValid()); } + public function testSetAndGetIsInvitation(): void + { + $ticket = new BilletOrder(); + $result = $ticket->setIsInvitation(true); + + self::assertTrue($ticket->isInvitation()); + self::assertSame($ticket, $result); + + $ticket->setIsInvitation(null); + self::assertNull($ticket->isInvitation()); + } + public function testSetAndGetFirstScannedAt(): void { $ticket = new BilletOrder();