src/Entity/Details/Operation/DetailsMultiOffer.php line 62

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Details\Operation;
  3. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\DateFilter;
  4. use ApiPlatform\Core\Annotation\ApiFilter;
  5. use ApiPlatform\Core\Annotation\ApiProperty;
  6. use ApiPlatform\Core\Annotation\ApiResource;
  7. use App\Entity\Ean\Ean;
  8. use App\Entity\MediaObject\MediaMultiOffer;
  9. use App\Entity\MediaObject\MediaPdfOdr;
  10. use App\Entity\Operation\MultiOffer;
  11. use App\Repository\Details\DetailsMultiOfferRepository;
  12. use Doctrine\Common\Annotations\Annotation\IgnoreAnnotation;
  13. use Doctrine\Common\Collections\ArrayCollection;
  14. use Doctrine\Common\Collections\Collection;
  15. use Doctrine\ORM\Mapping as ORM;
  16. use Ramsey\Uuid\Doctrine\UuidGenerator;
  17. use Symfony\Component\Serializer\Annotation\Groups;
  18. use Symfony\Component\Serializer\Annotation\SerializedName;
  19. use DateTime;
  20. /**
  21.  * @ApiResource(
  22.  *     attributes={
  23.  *          "normalization_context"={
  24.  *              "groups"={
  25.  *                  "DetailsMultiOffer:output",
  26.  *                  "DetailsMultiOffer:io"
  27.  *              }
  28.  *          },
  29.  *          "denormalization_context"={
  30.  *              "groups"={
  31.  *                  "DetailsMultiOffer:input",
  32.  *                  "DetailsMultiOffer:io"
  33.  *              }
  34.  *          },
  35.  *      },
  36.  *     collectionOperations={
  37.  *          "post"={
  38.  *              "method"="POST",
  39.  *              "access_control"="is_granted('ROLE_ADMIN_SOGEC')",
  40.  *          },
  41.  *          "get"={
  42.  *              "method"="GET",
  43.  *              "access_control"="is_granted('ROLE_ADMIN_SOGEC')",
  44.  *          },
  45.  *     },
  46.  *     itemOperations={
  47.  *          "put"={
  48.  *              "method"="PUT",
  49.  *              "access_control"="is_granted('ROLE_ADMIN_SOGEC')",
  50.  *          },
  51.  *          "get"={
  52.  *              "method"="GET"
  53.  *          },
  54.  *      }
  55.  * )
  56.  *
  57.  * @ORM\Entity(repositoryClass=DetailsMultiOfferRepository::class)
  58.  */
  59. class DetailsMultiOffer
  60. {
  61.     /**
  62.      * @ORM\Id
  63.      * @ORM\Column(type="uuid", unique=true)
  64.      * @ORM\GeneratedValue(strategy="CUSTOM")
  65.      * @ORM\CustomIdGenerator(class=UuidGenerator::class)
  66.      * @SerializedName("id")
  67.      * @ApiProperty(identifier=true)
  68.      * @Groups({
  69.      *     "DetailsMultiOffer:output",
  70.      *     "OperationMultiOffer:io",
  71.      *     "get_participation_multi_odrs_by_user",
  72.      * })
  73.      */
  74.     private string $id;
  75.     /**
  76.      * @ORM\OneToOne(targetEntity="App\Entity\Operation\MultiOffer")
  77.      * @ORM\JoinColumn(name="multi_offer_id", referencedColumnName="id")
  78.      * @Groups({
  79.      *     "DetailsMultiOffer:io",
  80.      *     "OperationMultiOffer:io",
  81.      * })
  82.      */
  83.     private MultiOffer $multiOffer;
  84.     /**
  85.      * @ORM\Column(type="string", length=200, nullable=true)
  86.      * @SerializedName("description_odr")
  87.      * @Groups({
  88.      *     "DetailsMultiOffer:io",
  89.      *     "OperationMultiOffer:io",
  90.      * })
  91.      */
  92.     private ?string $descriptionOdr;
  93.     /**
  94.      * @ORM\Column(type="string", length=200, nullable=true)
  95.      * @SerializedName("description_coupon")
  96.      * @Groups({
  97.      *     "DetailsMultiOffer:io",
  98.      *     "OperationMultiOffer:io",
  99.      * })
  100.      */
  101.     private ?string $descriptionCoupon;
  102.     /**
  103.      * @ORM\Column(type="string", length=255)
  104.      * @SerializedName("title_odr")
  105.      * @Groups({
  106.      *     "DetailsMultiOffer:io",
  107.      *     "OperationMultiOffer:io",
  108.      * })
  109.      */
  110.     private string $titleOdr;
  111.     /**
  112.      * @ORM\Column(type="string", length=255)
  113.      * @SerializedName("title_coupon")
  114.      * @Groups({
  115.      *     "DetailsMultiOffer:io",
  116.      *     "OperationMultiOffer:io",
  117.      * })
  118.      */
  119.     private string $titleCoupon;
  120.     /**
  121.      * @ORM\OneToOne(targetEntity=MediaMultiOffer::class, cascade={"persist", "remove"})
  122.      * @SerializedName("image_odr")
  123.      * @Groups({
  124.      *     "DetailsMultiOffer:io",
  125.      *     "OperationMultiOffer:io",
  126.      * })
  127.      */
  128.     private MediaMultiOffer $imageOdr;
  129.     /**
  130.      * @ORM\OneToOne(targetEntity=MediaMultiOffer::class, cascade={"persist", "remove"})
  131.      * @SerializedName("image_coupon")
  132.      * @Groups({
  133.      *     "DetailsMultiOffer:io",
  134.      *     "OperationMultiOffer:io",
  135.      * })
  136.      */
  137.     private MediaMultiOffer $imageCoupon;
  138.     /**
  139.      * @ORM\Column(type="integer")
  140.      * @SerializedName("ratio_cashback")
  141.      */
  142.     private int $ratioCashback;
  143.     /**
  144.      * @ORM\OneToOne(targetEntity=MediaPdfOdr::class, cascade={"persist", "remove"})
  145.      * @SerializedName("pdf_odr")
  146.      * @Groups({
  147.      *     "DetailsMultiOffer:io",
  148.      *     "OperationMultiOffer:io",
  149.      * })
  150.      */
  151.     private MediaPdfOdr $pdfOdr;
  152.     /**
  153.      * @ORM\Column(type="string", length=255)
  154.      * @SerializedName("code_odr")
  155.      * @Groups({
  156.      *     "DetailsMultiOffer:io",
  157.      *     "OperationMultiOffer:io",
  158.      * })
  159.      */
  160.     private ?string $codeOdr;
  161.     /**
  162.      * @ORM\Column(type="string", length=255)
  163.      * @SerializedName("code_coupon")
  164.      * @Groups({
  165.      *     "DetailsMultiOffer:io",
  166.      *     "OperationMultiOffer:io",
  167.      * })
  168.      */
  169.     private ?string $codeCoupon;
  170.     /**
  171.      * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
  172.      * @SerializedName("end_participation_date_odr")
  173.      * @Groups({
  174.      *     "DetailsMultiOffer:io",
  175.      *     "OperationMultiOffer:io",
  176.      * })
  177.      * @ApiFilter(DateFilter::class, strategy=DateFilter::EXCLUDE_NULL)
  178.      */
  179.     private DateTime $endParticipationDateOdr;
  180.     /**
  181.      * @ORM\Column(type="integer")
  182.      * @SerializedName("stock_odr")
  183.      * @Groups({
  184.      *     "DetailsMultiOffer:io",
  185.      *     "OperationMultiOffer:io",
  186.      * })
  187.      */
  188.     private ?int $stockOdr;
  189.     /**
  190.      * @ORM\Column(type="integer")
  191.      * @SerializedName("stock_coupon")
  192.      * @Groups({
  193.      *     "DetailsMultiOffer:io",
  194.      *     "OperationMultiOffer:io",
  195.      * })
  196.      */
  197.     private ?int $stockCoupon;
  198.     /**
  199.      * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
  200.      * @SerializedName("end_emission_date_coupon")
  201.      * @Groups({
  202.      *     "DetailsMultiOffer:io",
  203.      *     "OperationMultiOffer:io",
  204.      * })
  205.      */
  206.     private DateTime $endEmissionDateCoupon;
  207.     /**
  208.      * @ORM\OneToMany(targetEntity=Ean::class, mappedBy="detailsMultiOffer", fetch="EAGER")
  209.      * @SerializedName("eans")
  210.      * @Groups({
  211.      *     "DetailsMultiOffer:io",
  212.      *     "OperationMultiOffer:io",
  213.      * })
  214.      */
  215.     private Collection $eansOdr;
  216.     /**
  217.      * @ORM\Column(type="boolean", options={"default": 0})
  218.      * @SerializedName("is_eans_odr_active")
  219.      * @Groups({
  220.      *     "DetailsMultiOffer:io",
  221.      *     "OperationMultiOffer:io",
  222.      * })
  223.      */
  224.     private bool $isEansOdrActive;
  225.     /**
  226.      * @SerializedName("description_modality_odr")
  227.      * @Groups({
  228.      *     "DetailsMultiOffer:io",
  229.      *     "OperationMultiOffer:io",
  230.      * })
  231.      * @ORM\Column(type="string", length="500", nullable=true)
  232.      */
  233.     private ?string $descriptionModalityOdr;
  234.     public function __construct()
  235.     {
  236.         $this->eansOdr = new ArrayCollection();
  237.     }
  238.     /**
  239.      * @return string
  240.      */
  241.     public function getId(): string
  242.     {
  243.         return $this->id;
  244.     }
  245.     /**
  246.      * @return MultiOffer
  247.      */
  248.     public function getMultiOffer(): MultiOffer
  249.     {
  250.         return $this->multiOffer;
  251.     }
  252.     /**
  253.      * @param MultiOffer $multiOffer
  254.      * @return DetailsMultiOffer
  255.      */
  256.     public function setMultiOffer(MultiOffer $multiOffer): DetailsMultiOffer
  257.     {
  258.         $this->multiOffer $multiOffer;
  259.         return $this;
  260.     }
  261.     public function getDescriptionOdr(): ?string
  262.     {
  263.         return $this->descriptionOdr;
  264.     }
  265.     public function setDescriptionOdr(?string $descriptionOdr): DetailsMultiOffer
  266.     {
  267.         $this->descriptionOdr $descriptionOdr;
  268.         return $this;
  269.     }
  270.     public function getDescriptionCoupon(): ?string
  271.     {
  272.         return $this->descriptionCoupon;
  273.     }
  274.     public function setDescriptionCoupon(?string $descriptionCoupon): DetailsMultiOffer
  275.     {
  276.         $this->descriptionCoupon $descriptionCoupon;
  277.         return $this;
  278.     }
  279.     /**
  280.      * @return string
  281.      */
  282.     public function getTitleOdr(): string
  283.     {
  284.         return $this->titleOdr;
  285.     }
  286.     /**
  287.      * @param string $titleOdr
  288.      * @return DetailsMultiOffer
  289.      */
  290.     public function setTitleOdr(string $titleOdr): DetailsMultiOffer
  291.     {
  292.         $this->titleOdr $titleOdr;
  293.         return $this;
  294.     }
  295.     /**
  296.      * @return string
  297.      */
  298.     public function getTitleCoupon(): string
  299.     {
  300.         return $this->titleCoupon;
  301.     }
  302.     /**
  303.      * @param string $titleCoupon
  304.      * @return DetailsMultiOffer
  305.      */
  306.     public function setTitleCoupon(string $titleCoupon): DetailsMultiOffer
  307.     {
  308.         $this->titleCoupon $titleCoupon;
  309.         return $this;
  310.     }
  311.     /**
  312.      * @return MediaMultiOffer
  313.      */
  314.     public function getImageOdr(): MediaMultiOffer
  315.     {
  316.         return $this->imageOdr;
  317.     }
  318.     /**
  319.      * @param MediaMultiOffer $imageOdr
  320.      * @return DetailsMultiOffer
  321.      */
  322.     public function setImageOdr(MediaMultiOffer $imageOdr): DetailsMultiOffer
  323.     {
  324.         $this->imageOdr $imageOdr;
  325.         return $this;
  326.     }
  327.     /**
  328.      * @return MediaMultiOffer
  329.      */
  330.     public function getImageCoupon(): MediaMultiOffer
  331.     {
  332.         return $this->imageCoupon;
  333.     }
  334.     /**
  335.      * @param MediaMultiOffer $imageCoupon
  336.      * @return DetailsMultiOffer
  337.      */
  338.     public function setImageCoupon(MediaMultiOffer $imageCoupon): DetailsMultiOffer
  339.     {
  340.         $this->imageCoupon $imageCoupon;
  341.         return $this;
  342.     }
  343.     public function getRatioCashback(): ?int
  344.     {
  345.         return $this->ratioCashback;
  346.     }
  347.     public function setRatioCashback(int $ratioCashback): self
  348.     {
  349.         $this->ratioCashback $ratioCashback;
  350.         return $this;
  351.     }
  352.     public function getPdfOdr(): ?MediaPdfOdr
  353.     {
  354.         return $this->pdfOdr;
  355.     }
  356.     public function setPdfOdr(?MediaPdfOdr $pdfOdr): self
  357.     {
  358.         $this->pdfOdr $pdfOdr;
  359.         return $this;
  360.     }
  361.     public function getCodeOdr(): ?string
  362.     {
  363.         return $this->codeOdr;
  364.     }
  365.     public function setCodeOdr(string $codeOdr): self
  366.     {
  367.         $this->codeOdr $codeOdr;
  368.         return $this;
  369.     }
  370.     public function getCodeCoupon(): ?string
  371.     {
  372.         return $this->codeCoupon;
  373.     }
  374.     public function setCodeCoupon(string $codeCoupon): self
  375.     {
  376.         $this->codeCoupon $codeCoupon;
  377.         return $this;
  378.     }
  379.     public function getStockOdr(): ?int
  380.     {
  381.         return $this->stockOdr;
  382.     }
  383.     public function setStockOdr(int $stockOdr): self
  384.     {
  385.         $this->stockOdr $stockOdr;
  386.         return $this;
  387.     }
  388.     public function getStockCoupon(): ?int
  389.     {
  390.         return $this->stockCoupon;
  391.     }
  392.     public function setStockCoupon(int $stockCoupon): self
  393.     {
  394.         $this->stockCoupon $stockCoupon;
  395.         return $this;
  396.     }
  397.     public function getEndParticipationDateOdr(): DateTime
  398.     {
  399.         return $this->endParticipationDateOdr;
  400.     }
  401.     public function setEndParticipationDateOdr(DateTime $endParticipationDateOdr): DetailsMultiOffer
  402.     {
  403.         $this->endParticipationDateOdr $endParticipationDateOdr;
  404.         return $this;
  405.     }
  406.     public function getEndEmissionDateCoupon(): DateTime
  407.     {
  408.         return $this->endEmissionDateCoupon;
  409.     }
  410.     public function setEndEmissionDateCoupon(DateTime $endEmissionDateCoupon): DetailsMultiOffer
  411.     {
  412.         $this->endEmissionDateCoupon $endEmissionDateCoupon;
  413.         return $this;
  414.     }
  415.     public function decreaseStockOdr()
  416.     {
  417.         $this->stockOdr--;
  418.     }
  419.     public function decreaseStockCoupon()
  420.     {
  421.         $this->stockCoupon--;
  422.     }
  423.     /**
  424.      * @return Collection<int, Ean>
  425.      */
  426.     public function getEansOdr(): Collection
  427.     {
  428.         return $this->eansOdr;
  429.     }
  430.     /**
  431.      * @param Collection $eansOdr
  432.      * @return DetailsMultiOffer
  433.      */
  434.     public function setEansOdr(Collection $eansOdr): DetailsMultiOffer
  435.     {
  436.         $this->eansOdr $eansOdr;
  437.         return $this;
  438.     }
  439.     public function addEanOdr(Ean $ean)
  440.     {
  441.         if (!$this->eansOdr->contains($ean)) {
  442.             $this->eansOdr[] = $ean;
  443.             $ean->setDetailsMultiOffer($this);
  444.         }
  445.         return $this;
  446.     }
  447.     public function clearEanOdr(): DetailsMultiOffer
  448.     {
  449.         foreach($this->eansOdr as $ean) {
  450.             // set the owning side to null (unless already changed)
  451.             if ($ean->getDetailsMultiOffer() === $this) {
  452.                 $ean->setDetailsMultiOffer(null);
  453.             }
  454.         }
  455.         $this->setEansOdr(new ArrayCollection());
  456.         return $this;
  457.     }
  458.     public function getIsEansOdrActive(): ?bool
  459.     {
  460.         return $this->isEansOdrActive;
  461.     }
  462.     public function setIsEansOdrActive(bool $isEansOdrActive): self
  463.     {
  464.         $this->isEansOdrActive $isEansOdrActive;
  465.         return $this;
  466.     }
  467.     public function getDescriptionModalityOdr(): ?string
  468.     {
  469.         return $this->descriptionModalityOdr;
  470.     }
  471.     public function setDescriptionModalityOdr(?string $descriptionModalityOdr): self
  472.     {
  473.         $this->descriptionModalityOdr $descriptionModalityOdr;
  474.         return $this;
  475.     }
  476. }