Skip to content

Migration des coupons d'évènement de Ting vers Doctrine - #2386

Draft
Korbeil wants to merge 1 commit into
afup:masterfrom
Korbeil:afup-migrer-les-coupons-d
Draft

Migration des coupons d'évènement de Ting vers Doctrine#2386
Korbeil wants to merge 1 commit into
afup:masterfrom
Korbeil:afup-migrer-les-coupons-d

Conversation

@Korbeil

@Korbeil Korbeil commented Sep 2, 2026

Copy link
Copy Markdown
Member

Description

Migre la persistance des coupons d'évènement de Ting vers Doctrine ORM (ref #2383) : nouvelle entité et nouveau repository Doctrine, mise à jour de l'unique appelant, suppression des classes Ting.

Changements

  • Ajout de l'entité Doctrine AppBundle\Event\Entity\EventCoupon mappée sur la table existante afup_forum_coupon (id, id_forum, texte) — aucune migration DB nécessaire.
  • Ajout du repository Doctrine AppBundle\Event\Entity\Repository\EventCouponRepository reprenant les trois méthodes du repository Ting : changeCouponForEvent(), couponsListForEvent(), couponsListForEventImploded(). Les méthodes prennent désormais un int $eventId au lieu de l'objet Ting Event, et le remplacement des coupons est exécuté dans une transaction (wrapInTransaction).
  • Mise à jour de AppBundle\Controller\Admin\Event\EventAction pour utiliser le nouveau repository (autowiring inchangé).
  • Suppression des classes Ting AppBundle\Event\Model\EventCoupon et AppBundle\Event\Model\Repository\EventCouponRepository ; retrait des 8 entrées correspondantes de phpstan-baseline.php.
  • Ajout d'un test d'intégration EventCouponRepositoryTest (remplacement des coupons, gestion des valeurs vides/blanches, isolation par évènement, implosion avec séparateur).

Comment tester

  1. vendor/bin/phpunit --testsuite unit
  2. vendor/bin/phpunit --testsuite integration
  3. vendor/bin/phpstan analyse
  4. vendor/bin/behat tests/behat/features/Admin/Events/GestionEvenements.feature — le scénario de création d'évènement remplit le champ event[coupons] et vérifie l'enregistrement.

Notes

  • Seule différence de comportement : changeCouponForEvent() est désormais atomique (suppression + réinsertion dans une transaction) — observable uniquement en cas d'échec intermédiaire.
  • Comportement existant conservé : un champ « coupons » vide ne déclenche pas le remplacement (les coupons existants ne sont pas supprimés).
  • Le code respecte les règles PHPStan custom (afup.doctrine.noDQL, afup.doctrine.repositoryMethods) : requêtes via QueryBuilder, logique confinée au repository.

@Korbeil
Korbeil force-pushed the afup-migrer-les-coupons-d branch from 0e0e4a7 to c9c053b Compare September 2, 2026 20:03
@Korbeil
Korbeil marked this pull request as ready for review September 2, 2026 20:20

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question : Est-ce que ce test unitaire est pertinent ?


#[ORM\Entity(repositoryClass: EventCouponRepository::class)]
#[ORM\Table(name: 'afup_forum_coupon')]
class EventCoupon

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question : Est-ce qu'on en profite pour changer la langue du métier suivant l'ADR https://github.com/afup/web/blob/master/doc/decisions/ADR-001-langue-du-code.md ?

@vgreb je ne sais plus si on le fait en 2 fois, un avis ?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il n'y a as de règle établie, si ça ne surcharge pas trop la PR on peut le faire en même temps.
C'est toujours pareil, tout dépend où on met le curseur et si on renomme juste un classe ou plusieurs, si on change les namespaces ...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aller je vais l'ajouter :)

@Korbeil
Korbeil marked this pull request as draft September 3, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants