src/Entity/Gos/RenewalOffer/UserRenewalOffer.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Gos\RenewalOffer;
  3. use App\Entity\Gos\Cart;
  4. use App\Entity\Gos\OrderPart;
  5. use App\Entity\Gos\Orders;
  6. use App\Entity\Gos\User;
  7. use App\Repository\Gos\RenewalOffer\UserRenewalOfferRepository;
  8. use Doctrine\Common\Collections\ArrayCollection;
  9. use Doctrine\Common\Collections\Collection;
  10. use Doctrine\ORM\Mapping as ORM;
  11. /**
  12.  * @ORM\Entity(repositoryClass=UserRenewalOfferRepository::class)
  13.  * @ORM\HasLifecycleCallbacks
  14.  */
  15. class UserRenewalOffer
  16. {
  17.     /**
  18.      * @ORM\Id
  19.      * @ORM\GeneratedValue
  20.      * @ORM\Column(type="integer")
  21.      */
  22.     private $id;
  23.     /**
  24.      * @ORM\ManyToOne(targetEntity=RenewalOffer::class, inversedBy="userRenewalOffers")
  25.      * @ORM\JoinColumn(nullable=false)
  26.      */
  27.     private $renewalOffer;
  28.     /**
  29.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="userRenewalOffers")
  30.      * @ORM\JoinColumn(nullable=false)
  31.      */
  32.     private $user;
  33.     /**
  34.      * @ORM\ManyToOne(targetEntity=OrderPart::class)
  35.      * @ORM\JoinColumn(nullable=false)
  36.      */
  37.     private $orderPart;
  38.     /**
  39.      * @ORM\Column(type="string", length=255)
  40.      */
  41.     private $productVariantNoComplete;
  42.     /**
  43.      * @ORM\Column(type="string", length=32, unique=true)
  44.      */
  45.     private $hash;
  46.     /**
  47.      * @ORM\Column(type="integer", options={"default": 0})
  48.      */
  49.     private $visitCounter 0;
  50.     /**
  51.      * @ORM\Column(type="datetime")
  52.      */
  53.     private $createdAt;
  54.     /**
  55.      * @ORM\Column(type="datetime", nullable=true)
  56.      */
  57.     private $updatedAt;
  58.     /**
  59.      * @ORM\OneToMany(
  60.      *     targetEntity=RenewalOfferMailScheduler::class,
  61.      *     mappedBy="userRenewalOffer",
  62.      *     orphanRemoval=true,
  63.      *     cascade={"persist"}
  64.      * )
  65.      */
  66.     private $renewalOfferMailSchedulers;
  67.     /**
  68.      * @ORM\OneToOne(targetEntity=Orders::class, cascade={"remove"})
  69.      */
  70.     private $nextOrder;
  71.     /**
  72.      * @ORM\OneToMany(targetEntity=RenewalOfferSmsScheduler::class, mappedBy="userRenewalOffer", orphanRemoval=true, cascade={"persist"})
  73.      */
  74.     private $renewalOfferSmsSchedulers;
  75.     /**
  76.      * @ORM\OneToOne(targetEntity=Cart::class, cascade={"persist", "remove"})
  77.      * @ORM\JoinColumn(onDelete="SET NULL")
  78.      */
  79.     private $cart;
  80.     public function __construct()
  81.     {
  82.         $this->renewalOfferMailSchedulers = new ArrayCollection();
  83.         $this->renewalOfferSmsSchedulers = new ArrayCollection();
  84.     }
  85.     /**
  86.      * @ORM\PrePersist()
  87.      */
  88.     public function prePersist()
  89.     {
  90.         $this->createdAt = new \DateTime();
  91.         $this->hash      md5(
  92.             sprintf(
  93.                 "%d-%s-%d",
  94.                 $this->createdAt->format('Uu'),
  95.                 $this->user->getEmailCanonical(),
  96.                 (string)$this->renewalOffer
  97.             )
  98.         );
  99.     }
  100.     /**
  101.      * @ORM\PreUpdate()
  102.      */
  103.     public function preUpdate()
  104.     {
  105.         $this->updatedAt = new \DateTime();
  106.     }
  107.     public function getId(): ?int
  108.     {
  109.         return $this->id;
  110.     }
  111.     public function getRenewalOffer(): ?RenewalOffer
  112.     {
  113.         return $this->renewalOffer;
  114.     }
  115.     public function setRenewalOffer(?RenewalOffer $renewalOffer): self
  116.     {
  117.         $this->renewalOffer $renewalOffer;
  118.         return $this;
  119.     }
  120.     public function getUser(): ?User
  121.     {
  122.         return $this->user;
  123.     }
  124.     public function setUser(?User $user): self
  125.     {
  126.         $this->user $user;
  127.         return $this;
  128.     }
  129.     public function getOrderPart(): ?OrderPart
  130.     {
  131.         return $this->orderPart;
  132.     }
  133.     public function setOrderPart(?OrderPart $orderPart): self
  134.     {
  135.         $this->orderPart $orderPart;
  136.         return $this;
  137.     }
  138.     public function getProductVariantNoComplete(): ?string
  139.     {
  140.         return $this->productVariantNoComplete;
  141.     }
  142.     public function setProductVariantNoComplete(string $productVariantNoComplete): self
  143.     {
  144.         $this->productVariantNoComplete $productVariantNoComplete;
  145.         return $this;
  146.     }
  147.     public function getHash(): ?string
  148.     {
  149.         return $this->hash;
  150.     }
  151.     public function setHash(string $hash): self
  152.     {
  153.         $this->hash $hash;
  154.         return $this;
  155.     }
  156.     public function getVisitCounter(): ?int
  157.     {
  158.         return $this->visitCounter;
  159.     }
  160.     public function setVisitCounter(int $visitCounter): self
  161.     {
  162.         $this->visitCounter $visitCounter;
  163.         return $this;
  164.     }
  165.     public function increaseVisitCounter(): self
  166.     {
  167.         $this->visitCounter++;
  168.         return $this;
  169.     }
  170.     public function getCreatedAt(): ?\DateTimeInterface
  171.     {
  172.         return $this->createdAt;
  173.     }
  174.     public function setCreatedAt(\DateTimeInterface $createdAt): self
  175.     {
  176.         $this->createdAt $createdAt;
  177.         return $this;
  178.     }
  179.     public function getUpdatedAt(): ?\DateTimeInterface
  180.     {
  181.         return $this->updatedAt;
  182.     }
  183.     public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
  184.     {
  185.         $this->updatedAt $updatedAt;
  186.         return $this;
  187.     }
  188.     /**
  189.      * @return Collection|RenewalOfferMailScheduler[]
  190.      */
  191.     public function getRenewalOfferMailSchedulers(): Collection
  192.     {
  193.         return $this->renewalOfferMailSchedulers;
  194.     }
  195.     public function addRenewalOfferMailScheduler(RenewalOfferMailScheduler $renewalOfferMailScheduler): self
  196.     {
  197.         if (!$this->renewalOfferMailSchedulers->contains($renewalOfferMailScheduler)) {
  198.             $this->renewalOfferMailSchedulers[] = $renewalOfferMailScheduler;
  199.             $renewalOfferMailScheduler->setUserRenewalOffer($this);
  200.         }
  201.         return $this;
  202.     }
  203.     public function removeRenewalOfferMailScheduler(RenewalOfferMailScheduler $renewalOfferMailScheduler): self
  204.     {
  205.         if ($this->renewalOfferMailSchedulers->contains($renewalOfferMailScheduler)) {
  206.             $this->renewalOfferMailSchedulers->removeElement($renewalOfferMailScheduler);
  207.             // set the owning side to null (unless already changed)
  208.             if ($renewalOfferMailScheduler->getUserRenewalOffer() === $this) {
  209.                 $renewalOfferMailScheduler->setUserRenewalOffer(null);
  210.             }
  211.         }
  212.         return $this;
  213.     }
  214.     public function getNextOrder(): ?Orders
  215.     {
  216.         return $this->nextOrder;
  217.     }
  218.     public function setNextOrder(?Orders $nextOrder): self
  219.     {
  220.         $this->nextOrder $nextOrder;
  221.         return $this;
  222.     }
  223.     public function isActive(): bool
  224.     {
  225.         return $this->getRenewalOffer()->isActive() && $this->nextOrder === null;
  226.     }
  227.     /**
  228.      * @return Collection|RenewalOfferSmsSchedulers[]
  229.      */
  230.     public function getRenewalOfferSmsSchedulers(): Collection
  231.     {
  232.         return $this->renewalOfferSmsSchedulers;
  233.     }
  234.     public function addRenewalOfferSmsScheduler(RenewalOfferSmsScheduler $renewalOfferSmsScheduler): self
  235.     {
  236.         if (!$this->renewalOfferSmsSchedulers->contains($renewalOfferSmsScheduler)) {
  237.             $this->renewalOfferSmsSchedulers[] = $renewalOfferSmsScheduler;
  238.             $renewalOfferSmsScheduler->setUserRenewalOffer($this);
  239.         }
  240.         return $this;
  241.     }
  242.     public function removeRenewalSMSMailScheduler(RenewalOfferSmsScheduler $renewalOfferSmsScheduler): self
  243.     {
  244.         if ($this->renewalOfferSmsSchedulers->contains($renewalOfferSmsScheduler)) {
  245.             $this->renewalOfferSmsSchedulers->removeElement($renewalOfferSmsScheduler);
  246.             // set the owning side to null (unless already changed)
  247.             if ($renewalOfferSmsScheduler->getUserRenewalOffer() === $this) {
  248.                 $renewalOfferSmsScheduler->setUserRenewalOffer(null);
  249.             }
  250.         }
  251.         return $this;
  252.     }
  253.     public function getCart(): ?Cart
  254.     {
  255.         return $this->cart;
  256.     }
  257.     public function setCart(?Cart $cart): self
  258.     {
  259.         $this->cart $cart;
  260.         return $this;
  261.     }
  262. }