Skip to content

Commit ea90ea8

Browse files
authored
Migration de l'entité SponsorTicket de Ting vers Doctrine (#2416)
* Migration de l'entité SponsorTicket de Ting vers Doctrine (#2383) * Correction de la 500 sur soumission vide du formulaire des tokens sponsors Sur une soumission vide ou remplie d'espaces, le composant Form convertit la valeur en null, ce qui provoquait une erreur de typage sur les propriétés non nullables de SponsorTicket au lieu d'un message de validation. - empty_data => '' sur les champs texte de SponsorTokenType - empty_data => '0' sur maxInvitations (même classe de bug, Champ integer) - #Assert\NotBlank rétabli sur SponsorTicket::$societe (perdu dans la migration Ting) Retour de la review #2416 (vgreb). * Ajuste la réservation du compteur d'invitations autour des transactions Ting * Corrige le test d'intégration SponsorScan après la migration de SponsorTicket
1 parent 5dc3b04 commit ea90ea8

29 files changed

Lines changed: 254 additions & 492 deletions

‎phpstan-baseline.php‎

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3049,36 +3049,6 @@
30493049
'count' => 1,
30503050
'path' => __DIR__ . '/sources/AppBundle/Controller/Admin/Event/SpeakersManagementAction.php',
30513051
];
3052-
$ignoreErrors[] = [
3053-
'message' => '#^Cannot call method getId\\(\\) on AppBundle\\\\Event\\\\Model\\\\SponsorTicket\\|null\\.$#',
3054-
'identifier' => 'method.nonObject',
3055-
'count' => 1,
3056-
'path' => __DIR__ . '/sources/AppBundle/Controller/Admin/Event/SponsorTicketAction.php',
3057-
];
3058-
$ignoreErrors[] = [
3059-
'message' => '#^Cannot call method setEditedOn\\(\\) on AppBundle\\\\Event\\\\Model\\\\SponsorTicket\\|null\\.$#',
3060-
'identifier' => 'method.nonObject',
3061-
'count' => 1,
3062-
'path' => __DIR__ . '/sources/AppBundle/Controller/Admin/Event/SponsorTicketAction.php',
3063-
];
3064-
$ignoreErrors[] = [
3065-
'message' => '#^Parameter \\#1 \\$entity of method CCMBenchmark\\\\Ting\\\\Repository\\\\Repository\\<AppBundle\\\\Event\\\\Model\\\\SponsorTicket\\>\\:\\:save\\(\\) expects AppBundle\\\\Event\\\\Model\\\\SponsorTicket, AppBundle\\\\Event\\\\Model\\\\SponsorTicket\\|null given\\.$#',
3066-
'identifier' => 'argument.type',
3067-
'count' => 1,
3068-
'path' => __DIR__ . '/sources/AppBundle/Controller/Admin/Event/SponsorTicketAction.php',
3069-
];
3070-
$ignoreErrors[] = [
3071-
'message' => '#^Parameter \\#1 \\$idForum of method AppBundle\\\\Event\\\\Model\\\\SponsorTicket\\:\\:setIdForum\\(\\) expects int, int\\|null given\\.$#',
3072-
'identifier' => 'argument.type',
3073-
'count' => 1,
3074-
'path' => __DIR__ . '/sources/AppBundle/Controller/Admin/Event/SponsorTicketAction.php',
3075-
];
3076-
$ignoreErrors[] = [
3077-
'message' => '#^Parameter \\#1 \\$sponsorTicket of method AppBundle\\\\Event\\\\Ticket\\\\SponsorTokenMail\\:\\:sendNotification\\(\\) expects AppBundle\\\\Event\\\\Model\\\\SponsorTicket, AppBundle\\\\Event\\\\Model\\\\SponsorTicket\\|null given\\.$#',
3078-
'identifier' => 'argument.type',
3079-
'count' => 1,
3080-
'path' => __DIR__ . '/sources/AppBundle/Controller/Admin/Event/SponsorTicketAction.php',
3081-
];
30823052
$ignoreErrors[] = [
30833053
'message' => '#^Cannot access offset \'n\' on mixed\\.$#',
30843054
'identifier' => 'offsetAccess.nonOffsetAccessible',
@@ -6230,30 +6200,6 @@
62306200
'count' => 1,
62316201
'path' => __DIR__ . '/sources/AppBundle/Event/Model/Repository/SpeakerRepository.php',
62326202
];
6233-
$ignoreErrors[] = [
6234-
'message' => '#^Method AppBundle\\\\Event\\\\Model\\\\Repository\\\\SponsorTicketRepository\\:\\:getByEvent\\(\\) return type with generic interface CCMBenchmark\\\\Ting\\\\Repository\\\\CollectionInterface does not specify its types\\: T$#',
6235-
'identifier' => 'missingType.generics',
6236-
'count' => 1,
6237-
'path' => __DIR__ . '/sources/AppBundle/Event/Model/Repository/SponsorTicketRepository.php',
6238-
];
6239-
$ignoreErrors[] = [
6240-
'message' => '#^Method AppBundle\\\\Event\\\\Model\\\\Repository\\\\SponsorTicketRepository\\:\\:initMetadata\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#',
6241-
'identifier' => 'missingType.iterableValue',
6242-
'count' => 1,
6243-
'path' => __DIR__ . '/sources/AppBundle/Event/Model/Repository/SponsorTicketRepository.php',
6244-
];
6245-
$ignoreErrors[] = [
6246-
'message' => '#^Method AppBundle\\\\Event\\\\Model\\\\Repository\\\\SponsorTicketRepository\\:\\:initMetadata\\(\\) should return M of CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata but returns CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\<object\\>\\.$#',
6247-
'identifier' => 'return.type',
6248-
'count' => 1,
6249-
'path' => __DIR__ . '/sources/AppBundle/Event/Model/Repository/SponsorTicketRepository.php',
6250-
];
6251-
$ignoreErrors[] = [
6252-
'message' => '#^Parameter \\#1 \\$databaseName of method CCMBenchmark\\\\Ting\\\\Repository\\\\Metadata\\<object\\>\\:\\:setDatabase\\(\\) expects string, mixed given\\.$#',
6253-
'identifier' => 'argument.type',
6254-
'count' => 1,
6255-
'path' => __DIR__ . '/sources/AppBundle/Event/Model/Repository/SponsorTicketRepository.php',
6256-
];
62576203
$ignoreErrors[] = [
62586204
'message' => '#^Cannot access offset \'\\.aggregation\' on mixed\\.$#',
62596205
'identifier' => 'offsetAccess.nonOffsetAccessible',

‎sources/AppBundle/Controller/Admin/Event/DeleteSponsorTicketAction.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace AppBundle\Controller\Admin\Event;
66

7-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
7+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
88
use AppBundle\Event\Ticket\SponsorTicketHelper;
99
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1010
use Symfony\Component\HttpFoundation\Request;
@@ -19,7 +19,7 @@ public function __construct(
1919

2020
public function __invoke(Request $request, int $tokenId): Response
2121
{
22-
$token = $this->sponsorTicketRepository->get($tokenId);
22+
$token = $this->sponsorTicketRepository->find($tokenId);
2323
if ($token === null) {
2424
throw $this->createNotFoundException(sprintf('Could not find token with id: %s', $tokenId));
2525
}

‎sources/AppBundle/Controller/Admin/Event/ResendSponsorTokenAction.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace AppBundle\Controller\Admin\Event;
66

77
use AppBundle\Event\AdminEventSelection;
8-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
8+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
99
use AppBundle\Event\Ticket\SponsorTokenMail;
1010
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1111
use Symfony\Component\HttpFoundation\RedirectResponse;
@@ -20,7 +20,7 @@ public function __construct(
2020

2121
public function __invoke(Request $request, AdminEventSelection $eventSelection): RedirectResponse
2222
{
23-
$token = $this->sponsorTicketRepository->get($request->request->get('sponsor_token_id'));
23+
$token = $this->sponsorTicketRepository->find($request->request->get('sponsor_token_id'));
2424
if ($token === null) {
2525
throw $this->createNotFoundException(sprintf('Could not find token with id: %s', $request->request->get('sponsor_token_id')));
2626
}

‎sources/AppBundle/Controller/Admin/Event/SendLastCallSponsorTokenAction.php‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
namespace AppBundle\Controller\Admin\Event;
66

77
use AppBundle\Controller\Event\EventActionHelper;
8-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
9-
use AppBundle\Event\Model\SponsorTicket;
8+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
9+
use AppBundle\Event\Entity\SponsorTicket;
1010
use AppBundle\Event\Ticket\SponsorTokenMail;
1111
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1212
use Symfony\Component\HttpFoundation\RedirectResponse;
@@ -24,7 +24,7 @@ public function __invoke(Request $request): RedirectResponse
2424
{
2525
$event = $this->eventActionHelper->getFromRequest('id', false)->event;
2626
/** @var SponsorTicket[] $tokens */
27-
$tokens = $this->sponsorTicketRepository->getByEvent($event);
27+
$tokens = $this->sponsorTicketRepository->findByEventId((int) $event->getId());
2828
$mailSent = 0;
2929

3030
foreach ($tokens as $token) {

‎sources/AppBundle/Controller/Admin/Event/SponsorTicketAction.php‎

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
namespace AppBundle\Controller\Admin\Event;
66

77
use AppBundle\Event\AdminEventSelection;
8+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
9+
use AppBundle\Event\Entity\SponsorTicket;
810
use AppBundle\Event\Form\SponsorTokenType;
9-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
10-
use AppBundle\Event\Model\SponsorTicket;
1111
use AppBundle\Event\Ticket\SponsorTokenMail;
1212
use AppBundle\Security\Authentication;
13-
use DateTime;
13+
use DateTimeImmutable;
1414
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1515
use Symfony\Component\HttpFoundation\Request;
1616
use Symfony\Component\HttpFoundation\Response;
@@ -26,24 +26,27 @@ public function __construct(
2626
public function __invoke(Request $request, AdminEventSelection $eventSelection): Response
2727
{
2828
$event = $eventSelection->event;
29-
$tokens = $this->sponsorTicketRepository->getByEvent($event);
29+
$tokens = $this->sponsorTicketRepository->findByEventId((int) $event->getId());
3030
$edit = $request->query->has('ticket');
31+
$now = new DateTimeImmutable();
3132
if ($edit) {
32-
$newToken = $this->sponsorTicketRepository->get($request->query->get('ticket'));
33-
$newToken->setEditedOn(new DateTime());
33+
$newToken = $this->sponsorTicketRepository->find($request->query->get('ticket'));
34+
if ($newToken === null) {
35+
throw $this->createNotFoundException('Could not find token');
36+
}
37+
$newToken->editedOn = $now;
3438
} else {
3539
$newToken = new SponsorTicket();
36-
$newToken
37-
->setToken(base64_encode(random_bytes(30)))
38-
->setIdForum($event->getId())
39-
->setCreatedOn(new DateTime())
40-
->setEditedOn(new DateTime())
41-
->setCreatorId($this->authentication->getAfupUser()->getId());
40+
$newToken->token = base64_encode(random_bytes(30));
41+
$newToken->eventId = (int) $event->getId();
42+
$newToken->createdOn = $now;
43+
$newToken->editedOn = $now;
44+
$newToken->creatorId = $this->authentication->getAfupUser()->getId();
4245
}
4346
$form = $this->createForm(SponsorTokenType::class, $newToken);
4447
$form->handleRequest($request);
4548
if ($form->isSubmitted() && $form->isValid()) {
46-
if ($newToken->getId() === null) {
49+
if ($newToken->id === null) {
4750
$this->sponsorTokenMail->sendNotification($newToken);
4851
}
4952
$this->sponsorTicketRepository->save($newToken);

‎sources/AppBundle/Controller/Event/SponsorScan/DeleteAction.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use AppBundle\Controller\Exception\InvalidSponsorTokenException;
99
use AppBundle\Event\Entity\Repository\SponsorScanRepository;
1010
use AppBundle\Event\Entity\SponsorScan;
11-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
11+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
1212
use Symfony\Component\HttpFoundation\RedirectResponse;
1313
use Symfony\Component\HttpFoundation\Request;
1414

@@ -32,7 +32,7 @@ public function __invoke(Request $request, string $eventSlug, string $scanId): R
3232
return $this->redirectToRoute('sponsor_ticket_home', ['eventSlug' => $eventSlug]);
3333
}
3434

35-
$scan = $this->sponsorScanRepository->findOneBy(['sponsorTicketId' => $sponsorTicket->getId(), 'id' => (int) $scanId]);
35+
$scan = $this->sponsorScanRepository->findOneBy(['sponsorTicketId' => $sponsorTicket->id, 'id' => (int) $scanId]);
3636

3737
if ($scan instanceof SponsorScan) {
3838
$scan->deletedOn = new \DateTimeImmutable('now');

‎sources/AppBundle/Controller/Event/SponsorScan/ExportAction.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use AppBundle\Controller\Event\EventActionHelper;
88
use AppBundle\Controller\Exception\InvalidSponsorTokenException;
99
use AppBundle\Event\Entity\Repository\SponsorScanRepository;
10-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
10+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
1111
use Symfony\Component\HttpFoundation\BinaryFileResponse;
1212
use Symfony\Component\HttpFoundation\Request;
1313
use Symfony\Component\HttpFoundation\Response;

‎sources/AppBundle/Controller/Event/SponsorScan/FlashAction.php‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
use AppBundle\Controller\Exception\InvalidSponsorTokenException;
99
use AppBundle\Event\Entity\Repository\SponsorScanRepository;
1010
use AppBundle\Event\Entity\SponsorScan;
11-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
11+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
1212
use AppBundle\Event\Model\Repository\TicketRepository;
13-
use AppBundle\Event\Model\SponsorTicket;
13+
use AppBundle\Event\Entity\SponsorTicket;
1414
use AppBundle\Event\Model\Ticket;
1515
use Symfony\Component\HttpFoundation\RedirectResponse;
1616
use Symfony\Component\HttpFoundation\Request;
@@ -44,7 +44,7 @@ public function __invoke(Request $request, string $code, string $eventSlug): Red
4444
return $this->redirectToRoute('sponsor_scan', ['eventSlug' => $eventSlug]);
4545
}
4646

47-
$scan = $this->sponsorScanRepository->findOneBy(['sponsorTicketId' => $sponsorTicket->getId(), 'ticketId' => $ticket->getId()]);
47+
$scan = $this->sponsorScanRepository->findOneBy(['sponsorTicketId' => $sponsorTicket->id, 'ticketId' => $ticket->getId()]);
4848

4949
if ($scan instanceof SponsorScan && $scan->deletedOn === null) {
5050
$this->addFlash('error', 'Code déjà scanné.');
@@ -66,7 +66,7 @@ public function __invoke(Request $request, string $code, string $eventSlug): Red
6666

6767
private function createSponsorScan(SponsorTicket $sponsorTicket, Ticket $ticket): SponsorScan
6868
{
69-
$sponsorTicketId = $sponsorTicket->getId();
69+
$sponsorTicketId = $sponsorTicket->id;
7070
$ticketId = $ticket->getId();
7171
if ($sponsorTicketId === null || $ticketId === null) {
7272
throw new \InvalidArgumentException('Le ticket sponsor et le billet doivent être enregistrés');

‎sources/AppBundle/Controller/Event/SponsorScan/IndexAction.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use AppBundle\Controller\Event\EventActionHelper;
88
use AppBundle\Controller\Exception\InvalidSponsorTokenException;
99
use AppBundle\Event\Entity\Repository\SponsorScanRepository;
10-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
10+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
1111
use Symfony\Component\HttpFoundation\Request;
1212
use Symfony\Component\HttpFoundation\Response;
1313

‎sources/AppBundle/Controller/Event/SponsorScan/NewAction.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use AppBundle\Controller\Event\EventActionHelper;
88
use AppBundle\Controller\Exception\InvalidSponsorTokenException;
99
use AppBundle\Event\Form\SponsorScanType;
10-
use AppBundle\Event\Model\Repository\SponsorTicketRepository;
10+
use AppBundle\Event\Entity\Repository\SponsorTicketRepository;
1111
use Symfony\Component\HttpFoundation\Request;
1212
use Symfony\Component\HttpFoundation\Response;
1313

0 commit comments

Comments
 (0)