src/Entity/System/Subscription.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Entity\System;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping as ORM;
  5. /**
  6.  * Subscription
  7.  *
  8.  * @ORM\Table(name="subscriptions")
  9.  *
  10.  * @ORM\Entity(repositoryClass="App\Repository\System\SubscriptionRepository")
  11.  */
  12. class Subscription
  13. {
  14.     public const COURSE_PACK_ID 0;
  15.     public const PACK_B2B 20;
  16.     public const PACK_ECOMMERCE_M 27;
  17.     public const PACK_ECOMMERCE_S 28;
  18.     public const PACK_ECOMMERCE_A 29;
  19.     public const PACK_MARKETPLACE_M 30;
  20.     public const PACK_MARKETPLACE_S 31;
  21.     public const PACK_MARKETPLACE_A 32;
  22.     public const REFERENCE_INIT_AMT 'INIT-AMT';
  23.     public const PACK_FREE_ID 33;
  24.     public const CANCEL_TEXT 'Cancel';
  25.     public const ERROR_TEXT 'Error';
  26.     public const REGISTRATION_NAME 'Academy Registration';
  27.     public const COURSE_NAME 'Course';
  28.     public const ONBOARDING_FEATURE_COURSE_NAME 'Onboarding';
  29.     public const INTERNAL_FEATURE_COURSE_NAME 'Internal';
  30.     public const EXTERNAL_FEATURE_COURSE_NAME 'External';
  31.     /**
  32.      * @var int
  33.      *
  34.      * @ORM\Id
  35.      *
  36.      * @ORM\GeneratedValue(strategy="AUTO")
  37.      *
  38.      * @ORM\Column(type="integer", name="id_subscription")
  39.      */
  40.     private $id;
  41.     /**
  42.      * @var int
  43.      *
  44.      * @ORM\Column(type="integer", length=10, name="id_pack")
  45.      */
  46.     private $packId;
  47.     /**
  48.      * @var string
  49.      *
  50.      * @ORM\Column(type="string", length=32, nullable=true)
  51.      */
  52.     private $name;
  53.     /**
  54.      * @var \DateTime
  55.      *
  56.      * @ORM\Column(type="datetime", options={"default" : "CURRENT_TIMESTAMP"})
  57.      */
  58.     private $dateCreate;
  59.     /**
  60.      * @var int|null
  61.      *
  62.      * @ORM\Column(type="integer", columnDefinition="tinyint(4)", nullable=true)
  63.      */
  64.     private $paymentFrequency;
  65.     /**
  66.      * @var float|null
  67.      *
  68.      * @ORM\Column(type="float", nullable=true)
  69.      */
  70.     private $cost;
  71.     /**
  72.      * @var string|null
  73.      *
  74.      * @ORM\Column(type="string", length=17, nullable=true)
  75.      */
  76.     private $idPaypal;
  77.     /**
  78.      * @var int|null
  79.      *
  80.      * @ORM\Column(type="integer", length=10, nullable=true)
  81.      */
  82.     private $idErp;
  83.     /**
  84.      * @var int|null
  85.      *
  86.      * @ORM\Column(type="integer", length=10, nullable=true)
  87.      */
  88.     private $idCuota;
  89.     /**
  90.      * @var int|null
  91.      *
  92.      * @ORM\Column(type="integer", length=11, nullable=true)
  93.      */
  94.     private $idAttribute;
  95.     /**
  96.      * @var Product|null
  97.      *
  98.      * @ORM\ManyToOne(targetEntity="App\Entity\System\Product", inversedBy="subscriptions")
  99.      *
  100.      * @ORM\JoinColumn(referencedColumnName="id_product", name="id_product", nullable=true)
  101.      */
  102.     private $product;
  103.     /**
  104.      * @var int
  105.      *
  106.      * @ORM\Column(type="integer", name="id_new_product", length=11, options={"default" : 0})
  107.      */
  108.     private $newProductId;
  109.     /**
  110.      * @var SubscriptionLine[]|ArrayCollection
  111.      *
  112.      * @ORM\OneToMany(targetEntity="SubscriptionLine", mappedBy="subscription", cascade={"persist"})
  113.      */
  114.     private $subscriptionLines;
  115.     /**
  116.      * @var SubscriptionLineHistory[]|ArrayCollection
  117.      *
  118.      * @ORM\OneToMany(targetEntity="SubscriptionLineHistory", mappedBy="subscription", cascade={"persist"})
  119.      */
  120.     private $subscriptionLineHistories;
  121.     public function __construct()
  122.     {
  123.         $this->subscriptionLines = new ArrayCollection();
  124.         $this->subscriptionLineHistories = new ArrayCollection();
  125.     }
  126.     /**
  127.      * @return int
  128.      */
  129.     public function getId(): int
  130.     {
  131.         return $this->id;
  132.     }
  133.     /**
  134.      * @return string|null
  135.      */
  136.     public function getName(): ?string
  137.     {
  138.         return $this->name;
  139.     }
  140.     /**
  141.      * @param string $name
  142.      *
  143.      * @return Subscription
  144.      */
  145.     public function setName(string $name): Subscription
  146.     {
  147.         $this->name $name;
  148.         return $this;
  149.     }
  150.     /**
  151.      * @return \DateTime|null
  152.      */
  153.     public function getDateCreate(): ?\DateTime
  154.     {
  155.         return $this->dateCreate;
  156.     }
  157.     /**
  158.      * @param \DateTime $dateCreate
  159.      *
  160.      * @return Subscription
  161.      */
  162.     public function setDateCreate(\DateTime $dateCreate): Subscription
  163.     {
  164.         $this->dateCreate $dateCreate;
  165.         return $this;
  166.     }
  167.     /**
  168.      * @return int|null
  169.      */
  170.     public function getPaymentFrequency(): ?int
  171.     {
  172.         return $this->paymentFrequency;
  173.     }
  174.     /**
  175.      * @param int|null $paymentFrequency
  176.      *
  177.      * @return Subscription
  178.      */
  179.     public function setPaymentFrequency(?int $paymentFrequency): Subscription
  180.     {
  181.         $this->paymentFrequency $paymentFrequency;
  182.         return $this;
  183.     }
  184.     /**
  185.      * @return int
  186.      */
  187.     public function getPackId(): int
  188.     {
  189.         return $this->packId;
  190.     }
  191.     /**
  192.      * @param int $packId
  193.      *
  194.      * @return Subscription
  195.      */
  196.     public function setPackId(int $packId): Subscription
  197.     {
  198.         $this->packId $packId;
  199.         return $this;
  200.     }
  201.     /**
  202.      * @return float|null
  203.      */
  204.     public function getCost(): ?float
  205.     {
  206.         return $this->cost;
  207.     }
  208.     /**
  209.      * @param float|null $cost
  210.      *
  211.      * @return Subscription
  212.      */
  213.     public function setCost(?float $cost): Subscription
  214.     {
  215.         $this->cost $cost;
  216.         return $this;
  217.     }
  218.     /**
  219.      * @return string|null
  220.      */
  221.     public function getIdPaypal(): ?string
  222.     {
  223.         return $this->idPaypal;
  224.     }
  225.     /**
  226.      * @param string|null $idPaypal
  227.      *
  228.      * @return Subscription
  229.      */
  230.     public function setIdPaypal(?string $idPaypal): Subscription
  231.     {
  232.         $this->idPaypal $idPaypal;
  233.         return $this;
  234.     }
  235.     /**
  236.      * @return int|null
  237.      */
  238.     public function getIdErp(): ?int
  239.     {
  240.         return $this->idErp;
  241.     }
  242.     /**
  243.      * @param int|null $idErp
  244.      *
  245.      * @return Subscription
  246.      */
  247.     public function setIdErp(?int $idErp): Subscription
  248.     {
  249.         $this->idErp $idErp;
  250.         return $this;
  251.     }
  252.     /**
  253.      * @return int|null
  254.      */
  255.     public function getIdCuota(): ?int
  256.     {
  257.         return $this->idCuota;
  258.     }
  259.     /**
  260.      * @param int|null $idCuota
  261.      *
  262.      * @return Subscription
  263.      */
  264.     public function setIdCuota(?int $idCuota): Subscription
  265.     {
  266.         $this->idCuota $idCuota;
  267.         return $this;
  268.     }
  269.     /**
  270.      * @return int|null
  271.      */
  272.     public function getIdAttribute(): ?int
  273.     {
  274.         return $this->idAttribute;
  275.     }
  276.     /**
  277.      * @param int|null $idAttribute
  278.      *
  279.      * @return Subscription
  280.      */
  281.     public function setIdAttribute(?int $idAttribute): Subscription
  282.     {
  283.         $this->idAttribute $idAttribute;
  284.         return $this;
  285.     }
  286.     /**
  287.      * @return Product|null
  288.      */
  289.     public function getProduct(): ?Product
  290.     {
  291.         return $this->product;
  292.     }
  293.     /**
  294.      * @param Product|null $product
  295.      *
  296.      * @return Subscription
  297.      */
  298.     public function setProduct(?Product $product): Subscription
  299.     {
  300.         $this->product $product;
  301.         return $this;
  302.     }
  303.     /**
  304.      * @return SubscriptionLine[]|ArrayCollection
  305.      */
  306.     public function getSubscriptionLine()
  307.     {
  308.         return $this->subscriptionLines;
  309.     }
  310.     /**
  311.      * @param SubscriptionLine[]|ArrayCollection $subscriptionLines
  312.      *
  313.      * @return Subscription
  314.      */
  315.     public function setSubscriptionLine($subscriptionLines): Subscription
  316.     {
  317.         $this->subscriptionLines $subscriptionLines;
  318.         return $this;
  319.     }
  320.     /**
  321.      * @return SubscriptionLineHistory|ArrayCollection
  322.      */
  323.     public function getSubscriptionLineHistory()
  324.     {
  325.         return $this->subscriptionLineHistories;
  326.     }
  327.     /**
  328.      * @param SubscriptionLineHistory[]|ArrayCollection $subscriptionLineHistories
  329.      *
  330.      * @return Subscription
  331.      */
  332.     public function setSubscriptionLineHistories($subscriptionLineHistories): Subscription
  333.     {
  334.         $this->subscriptionLineHistories $subscriptionLineHistories;
  335.         return $this;
  336.     }
  337.     /**
  338.      * @return int
  339.      */
  340.     public function getNewProductId(): int
  341.     {
  342.         return $this->newProductId;
  343.     }
  344.     /**
  345.      * @param int $newProductId
  346.      *
  347.      * @return Subscription
  348.      */
  349.     public function setNewProductId(int $newProductId): Subscription
  350.     {
  351.         $this->newProductId $newProductId;
  352.         return $this;
  353.     }
  354.     public static function getSubscriptionIdByPackIdAndSubscriptionDataPeriodicity(int $packId, ?string $subscriptionPeriodicity): int
  355.     {
  356.         if ($packId === Pack::PACK_B2B) {
  357.             return self::PACK_B2B;
  358.         }
  359.         if ($packId === Pack::PACK_ECOMMERCE && $subscriptionPeriodicity === SubscriptionData::PERIODICITY_MONTHLY) {
  360.             return self::PACK_ECOMMERCE_M;
  361.         }
  362.         if ($packId === Pack::PACK_ECOMMERCE && $subscriptionPeriodicity === SubscriptionData::PERIODICITY_ANNUAL) {
  363.             return self::PACK_ECOMMERCE_A;
  364.         }
  365.         if ($packId === Pack::PACK_MARKETPLACES && $subscriptionPeriodicity === SubscriptionData::PERIODICITY_MONTHLY) {
  366.             return self::PACK_MARKETPLACE_M;
  367.         }
  368.         if ($packId === Pack::PACK_MARKETPLACES && $subscriptionPeriodicity === SubscriptionData::PERIODICITY_ANNUAL) {
  369.             return self::PACK_MARKETPLACE_A;
  370.         }
  371.         throw new \LogicException('Invalid pack ID or subscription periodicity');
  372.     }
  373. }