src/Entity/Reservation.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\ReservationRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Component\Validator\Constraints as Assert;
  8. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  9. /**
  10.  * @ORM\Entity(repositoryClass=ReservationRepository::class)
  11.  * @UniqueEntity("token")
  12.  */
  13. class Reservation
  14. {
  15.     const RESERVATION_STATUS = [
  16.         'demande_first_rdv' => 'Demande de premier RDV',
  17.         'en_attente_choix_pack' => 'En attente de choix du pack',
  18.         'en_attente_paiement' => 'En attente de paiement',
  19.         'en_attente_planning' => 'En attente de planning',
  20.         'procedure_completed' => 'Procèdure Complet',
  21.         'finished' => 'Terminer',
  22.     ];
  23.     /**
  24.      * @ORM\Id
  25.      * @ORM\GeneratedValue
  26.      * @ORM\Column(type="integer")
  27.      */
  28.     private $id;
  29.     /**
  30.      * @ORM\Column(type="string", length=255)
  31.      * @Assert\NotNull(message="This field is required.")
  32.      */
  33.     private $firstName;
  34.     /**
  35.      * @ORM\Column(type="string", length=255)
  36.      * @Assert\NotNull(message="This field is required.")
  37.      */
  38.     private $lastName;
  39.     /**
  40.      * @ORM\Column(type="string", length=255)
  41.      * @Assert\NotNull(message="This field is required.")
  42.      * @Assert\Email()
  43.      */
  44.     private $email;
  45.     /**
  46.      * @ORM\Column(type="string", length=255)
  47.      */
  48.     private $token;
  49.     /**
  50.      * @ORM\Column(type="string", length=255)
  51.      * @Assert\NotNull(message="This field is required.")
  52.      */
  53.     private $phone;
  54.     /**
  55.      * @ORM\ManyToOne(targetEntity=CoachingSession::class)
  56.      */
  57.     private $formation;
  58.     /**
  59.      * @ORM\ManyToOne(targetEntity=CoursLangue::class)
  60.      */
  61.     private $cour;
  62.     /**
  63.      * @ORM\ManyToOne(targetEntity=Coach::class, inversedBy="reservations")
  64.      * @ORM\JoinColumn(nullable=false)
  65.      */
  66.     private $coach;
  67.     /**
  68.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="reservations")
  69.      */
  70.     private $utilisateur;
  71.     /**
  72.      * @ORM\Column(type="string", length=255, nullable=true)
  73.      */
  74.     private $status 'demande_first_rdv';
  75.     /**
  76.      * @ORM\Column(type="datetime", nullable=true)
  77.      */
  78.     private $firstRdvAt;
  79.     /**
  80.      * @ORM\Column(type="string", length=255, nullable=true)
  81.      */
  82.     private $firstRdvZoomLink;
  83.     /**
  84.      * @ORM\ManyToOne(targetEntity=CoachPack::class)
  85.      */
  86.     private $pack;
  87.     /**
  88.      * @ORM\OneToMany(targetEntity=ReservationPlanning::class, mappedBy="reservation", orphanRemoval=true, cascade={"persist", "remove"})
  89.      */
  90.     private $reservationPlannings;
  91.     /**
  92.      * @ORM\Column(type="string", length=255, nullable=true)
  93.      */
  94.     private $transactionId;
  95.     /**
  96.      * @ORM\Column(type="datetime", nullable=true)
  97.      */
  98.     private $payedAt;
  99.     /**
  100.      * @ORM\Column(type="datetime", nullable=true)
  101.      */
  102.     private $createdAt;
  103.     /**
  104.      * @ORM\Column(type="string", length=255, nullable=true)
  105.      */
  106.     private $remise;
  107.     /**
  108.      * @ORM\Column(type="float", nullable=true)
  109.      */
  110.     private $remiseAmount;
  111.     public function __construct()
  112.     {
  113.         $this->reservationPlannings = new ArrayCollection();
  114.         $this->createdAt = new \DateTime();
  115.     }
  116.     public function getId(): ?int
  117.     {
  118.         return $this->id;
  119.     }
  120.     public function getFirstName(): ?string
  121.     {
  122.         return $this->firstName;
  123.     }
  124.     public function setFirstName(string $firstName): self
  125.     {
  126.         $this->firstName $firstName;
  127.         return $this;
  128.     }
  129.     public function getLastName(): ?string
  130.     {
  131.         return $this->lastName;
  132.     }
  133.     public function setLastName(string $lastName): self
  134.     {
  135.         $this->lastName $lastName;
  136.         return $this;
  137.     }
  138.     public function getEmail(): ?string
  139.     {
  140.         return $this->email;
  141.     }
  142.     public function setEmail(string $email): self
  143.     {
  144.         $this->email $email;
  145.         return $this;
  146.     }
  147.     public function getCour(): ?CoursLangue
  148.     {
  149.         return $this->cour;
  150.     }
  151.     public function setCour(?CoursLangue $cour): self
  152.     {
  153.         $this->cour $cour;
  154.         return $this;
  155.     }
  156.     public function getCoach(): ?Coach
  157.     {
  158.         return $this->coach;
  159.     }
  160.     public function setCoach(?Coach $coach): self
  161.     {
  162.         $this->coach $coach;
  163.         return $this;
  164.     }
  165.     public function getToken(): ?string
  166.     {
  167.         return $this->token;
  168.     }
  169.     public function setToken(string $token): self
  170.     {
  171.         $this->token $token;
  172.         return $this;
  173.     }
  174.     public function getPhone(): ?string
  175.     {
  176.         return $this->phone;
  177.     }
  178.     public function setPhone(string $phone): self
  179.     {
  180.         $this->phone $phone;
  181.         return $this;
  182.     }
  183.     public function getFormation(): ?CoachingSession
  184.     {
  185.         return $this->formation;
  186.     }
  187.     public function setFormation(?CoachingSession $formation): self
  188.     {
  189.         $this->formation $formation;
  190.         return $this;
  191.     }
  192.     public function getUtilisateur(): ?User
  193.     {
  194.         return $this->utilisateur;
  195.     }
  196.     public function setUtilisateur(?User $utilisateur): self
  197.     {
  198.         $this->utilisateur $utilisateur;
  199.         return $this;
  200.     }
  201.     public function getStatus(): ?string
  202.     {
  203.         return $this->status ?? 'demande_first_rdv';
  204.     }
  205.     public function getFullStatus(): ?string
  206.     {
  207.         return self::RESERVATION_STATUS[$this->status ?? 'demande_first_rdv'];
  208.     }
  209.     public function setStatus(?string $status): self
  210.     {
  211.         $this->status $status;
  212.         return $this;
  213.     }
  214.     public function getNextStatus(): string
  215.     {
  216.         $status $this->status;
  217.         switch ($this->status) {
  218.             case 'demande_first_rdv':
  219.                 $status 'en_attente_choix_pack';
  220.                 break;
  221.             case 'en_attente_choix_pack':
  222.                 $status 'en_attente_paiement';
  223.                 break;
  224.             case 'en_attente_paiement':
  225.                 $status 'en_attente_planning';
  226.                 break;
  227.             case 'en_attente_planning':
  228.                 $status 'procedure_completed';
  229.                 break;
  230.             case 'procedure_completed':
  231.                 $status 'finished';
  232.                 break;
  233.         }
  234.         return $status;
  235.     }
  236.     public function getFirstRdvAt(): ?\DateTimeInterface
  237.     {
  238.         return $this->firstRdvAt;
  239.     }
  240.     public function setFirstRdvAt(?\DateTimeInterface $firstRdvAt): self
  241.     {
  242.         $this->firstRdvAt $firstRdvAt;
  243.         return $this;
  244.     }
  245.     public function getFirstRdvZoomLink(): ?string
  246.     {
  247.         return $this->firstRdvZoomLink;
  248.     }
  249.     public function setFirstRdvZoomLink(?string $firstRdvZoomLink): self
  250.     {
  251.         $this->firstRdvZoomLink $firstRdvZoomLink;
  252.         return $this;
  253.     }
  254.     public function getPack(): ?CoachPack
  255.     {
  256.         return $this->pack;
  257.     }
  258.     public function setPack(?CoachPack $pack): self
  259.     {
  260.         $this->pack $pack;
  261.         return $this;
  262.     }
  263.     /**
  264.      * @return Collection|ReservationPlanning[]
  265.      */
  266.     public function getReservationPlannings(): Collection
  267.     {
  268.         return $this->reservationPlannings;
  269.     }
  270.     public function addReservationPlanning(ReservationPlanning $reservationPlanning): self
  271.     {
  272.         if (!$this->reservationPlannings->contains($reservationPlanning)) {
  273.             $this->reservationPlannings[] = $reservationPlanning;
  274.             $reservationPlanning->setReservation($this);
  275.         }
  276.         return $this;
  277.     }
  278.     public function removeReservationPlanning(ReservationPlanning $reservationPlanning): self
  279.     {
  280.         if ($this->reservationPlannings->contains($reservationPlanning)) {
  281.             $this->reservationPlannings->removeElement($reservationPlanning);
  282.             // set the owning side to null (unless already changed)
  283.             if ($reservationPlanning->getReservation() === $this) {
  284.                 $reservationPlanning->setReservation(null);
  285.             }
  286.         }
  287.         return $this;
  288.     }
  289.     public function getTransactionId(): ?string
  290.     {
  291.         return $this->transactionId;
  292.     }
  293.     public function setTransactionId(?string $transactionId): self
  294.     {
  295.         $this->transactionId $transactionId;
  296.         return $this;
  297.     }
  298.     public function getPayedAt(): ?\DateTimeInterface
  299.     {
  300.         return $this->payedAt;
  301.     }
  302.     public function setPayedAt(?\DateTimeInterface $payedAt): self
  303.     {
  304.         $this->payedAt $payedAt;
  305.         return $this;
  306.     }
  307.     public function getCreatedAt(): ?\DateTimeInterface
  308.     {
  309.         return $this->createdAt;
  310.     }
  311.     public function setCreatedAt(?\DateTimeInterface $createdAt): self
  312.     {
  313.         $this->createdAt $createdAt;
  314.         return $this;
  315.     }
  316.     public function getRemise(): ?string
  317.     {
  318.         return $this->remise;
  319.     }
  320.     public function setRemise(?string $remise): self
  321.     {
  322.         $this->remise $remise;
  323.         return $this;
  324.     }
  325.     public function getRemiseAmount(): ?float
  326.     {
  327.         return $this->remiseAmount;
  328.     }
  329.     public function setRemiseAmount(?float $remiseAmount): self
  330.     {
  331.         $this->remiseAmount $remiseAmount;
  332.         return $this;
  333.     }
  334. }