src/Admin/Modules/Contract/Entity/Contract.php line 17

  1. <?php
  2. namespace App\Admin\Modules\Contract\Entity;
  3. use App\Admin\Modules\Voucher\Entity\VoucherPackageVoucher;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Gedmo\Mapping\Annotation as Gedmo;
  9. use App\Modules\User\Entity\User;
  10. /**
  11.  * @ORM\Table(name="contract", uniqueConstraints={@ORM\UniqueConstraint(columns={"id_admin_user", "number"}), @ORM\UniqueConstraint(columns={"id_voucher_package_voucher"})}, indexes={@ORM\Index(columns={"first_name"}), @ORM\Index(columns={"last_name"}), @ORM\Index(columns={"client_number"}), @ORM\Index(columns={"status"}), @ORM\Index(columns={"updated_at"}), @ORM\Index(columns={"added_at"})})
  12.  * @ORM\Entity(repositoryClass="App\Admin\Modules\Contract\Repository\ContractRepository")
  13.  */
  14. class Contract
  15. {
  16.     const STATUS_NEW 1;
  17.     const STATUS_PAID 2;
  18.     
  19.     const PAYMENT_TYPE_ONE_TIME 1;
  20.     const PAYMENT_TYPE_INSTALLMENTS 2;
  21.     /**
  22.      * @var int
  23.      *
  24.      * @ORM\Column(type="bigint", options={"unsigned"=true}))
  25.      * @ORM\Id
  26.      * @ORM\GeneratedValue(strategy="AUTO")
  27.      */
  28.     protected $id;
  29.     
  30.     /**
  31.      * @var string
  32.      *
  33.      * @ORM\Column(name="number", type="string", length=50, nullable=false)
  34.      */
  35.     private $number;
  36.     
  37.     /**
  38.      * @var string
  39.      *
  40.      * @ORM\Column(name="first_name", type="string", length=255, nullable=true, options={"collation"="utf8_unicode_ci"})
  41.      */
  42.     private $firstName;    
  43.     
  44.     /**
  45.      * @var string
  46.      *
  47.      * @ORM\Column(name="last_name", type="string", length=255, nullable=true, options={"collation"="utf8_unicode_ci"})
  48.      */
  49.     private $lastName;    
  50.     
  51.     /**
  52.      * @var string
  53.      *
  54.      * @ORM\Column(name="email", type="string", length=255, nullable=false)
  55.      */
  56.     private $email;
  57.     
  58.     /**
  59.      * @var string
  60.      *
  61.      * @ORM\Column(name="phone", type="string", length=25, nullable=true)
  62.      */
  63.     private $phone
  64.     /**
  65.      * @var string
  66.      *
  67.      * @ORM\Column(name="pesel", type="string", length=25, nullable=true)
  68.      */
  69.     private $pesel;    
  70.     /**
  71.      * @var string
  72.      *
  73.      * @ORM\Column(name="id_card_number", type="string", length=25, nullable=true)
  74.      */
  75.     private $idCardNumber;    
  76.     /**
  77.      * @var string
  78.      *
  79.      * @ORM\Column(name="street", type="string", length=255, nullable=true)
  80.      */
  81.     private $street;
  82.     /**
  83.      * @var string
  84.      *
  85.      * @ORM\Column(name="building_number", type="string", length=10, nullable=true)
  86.      */
  87.     private $buildingNumber;
  88.     /**
  89.      * @var string
  90.      *
  91.      * @ORM\Column(name="apartment_number", type="string", length=10, nullable=true)
  92.      */
  93.     private $apartmentNumber;
  94.     /**
  95.      * @var string
  96.      *
  97.      * @ORM\Column(name="postal_code", type="string", length=10, nullable=true)
  98.      */
  99.     private $postalCode;
  100.     /**
  101.      * @var string
  102.      *
  103.      * @ORM\Column(name="city", type="string", length=255, nullable=true)
  104.      */
  105.     private $city;    
  106.     
  107.     /**
  108.      * @var string
  109.      *
  110.      * @ORM\Column(name="client_number", type="bigint", nullable=false, options={"unsigned"=true}))
  111.      */
  112.     private $clientNumber;
  113.     
  114.     /**
  115.      * @var \App\Admin\Modules\Voucher\Entity\VoucherPackageVoucher
  116.      *
  117.      * @ORM\ManyToOne(targetEntity="App\Admin\Modules\Voucher\Entity\VoucherPackageVoucher", inversedBy="contract")
  118.      * @ORM\JoinColumns({
  119.      *   @ORM\JoinColumn(name="id_voucher_package_voucher", referencedColumnName="id", nullable=true, onDelete="SET NULL")
  120.      * })
  121.      */
  122.     private $voucher;
  123.     /**
  124.      * @var string
  125.      *
  126.      * @ORM\Column(name="price", type="decimal", precision=14, scale=2, nullable=false)
  127.      */
  128.     private $price;
  129.     /**
  130.      * @var int
  131.      *
  132.      * @ORM\Column(name="payment_type", type="smallint", nullable=false)
  133.      */
  134.     private $paymentType;
  135.     
  136.     /**
  137.      * @var string
  138.      *
  139.      * @ORM\Column(name="signed_scan_file_name", type="string", length=255, nullable=true)
  140.      */
  141.     private $signedScanFileName;
  142.     /**
  143.      * @var string
  144.      *
  145.      * @ORM\Column(name="signed_scan_file", type="string", length=255, nullable=true)
  146.      */
  147.     private $signedScanFile;
  148.     /**
  149.      * @var int
  150.      *
  151.      * @ORM\Column(name="status", type="smallint", nullable=false)
  152.      */
  153.     private $status;
  154.     /**
  155.      * @var \App\Admin\Modules\Contract\Entity\ContractTemplate
  156.      *
  157.      * @ORM\ManyToOne(targetEntity="App\Admin\Modules\Contract\Entity\ContractTemplate", inversedBy="contracts")
  158.      * @ORM\JoinColumns({
  159.      *   @ORM\JoinColumn(name="id_contract_template", referencedColumnName="id", nullable=false, onDelete="RESTRICT")
  160.      * })
  161.      */
  162.     private $template;
  163.     
  164.     /**
  165.      * @var \App\Admin\Modules\Contract\Entity\ContractDocumentsSet
  166.      *
  167.      * @ORM\ManyToOne(targetEntity="App\Admin\Modules\Contract\Entity\ContractDocumentsSet")
  168.      * @ORM\JoinColumns({
  169.      *   @ORM\JoinColumn(name="id_contract_documents_set", referencedColumnName="id", nullable=true, onDelete="SET NULL")
  170.      * })
  171.      */
  172.     private $documentsSet;    
  173.     /**
  174.      * @var \App\Admin\Modules\Contract\Entity\ContractClient
  175.      *
  176.      * @ORM\ManyToOne(targetEntity="App\Admin\Modules\Contract\Entity\ContractClient", inversedBy="contracts")
  177.      * @ORM\JoinColumns({
  178.      *   @ORM\JoinColumn(name="id_contract_client", referencedColumnName="id", nullable=true, onDelete="SET NULL")
  179.      * })
  180.      */
  181.     private $client;    
  182.     
  183.     /**
  184.      * @var \App\Modules\User\Entity\User
  185.      *
  186.      * @ORM\ManyToOne(targetEntity="App\Modules\User\Entity\User")
  187.      * @ORM\JoinColumns({
  188.      *   @ORM\JoinColumn(name="id_trader_user", referencedColumnName="id", nullable=true, onDelete="SET NULL")
  189.      * })
  190.      */
  191.     private $traderUser;
  192.     
  193.     /**
  194.      * @var \App\Modules\User\Entity\User
  195.      *
  196.      * @ORM\ManyToOne(targetEntity="App\Modules\User\Entity\User")
  197.      * @ORM\JoinColumns({
  198.      *   @ORM\JoinColumn(name="id_admin_user", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  199.      * })
  200.      */
  201.     private $adminUser;    
  202.     /**
  203.      * @var int
  204.      *
  205.      * @ORM\Column(name="payment_id", type="integer", nullable=true)
  206.      */
  207.     private $paymentId;
  208.     /**
  209.      * @var \DateTime
  210.      *
  211.      * @ORM\Column(name="paid_at", type="datetime", nullable=true)
  212.      */
  213.     private $paidAt;
  214.     
  215.     /**
  216.      * @var \DateTime
  217.      *
  218.      * @ORM\Column(name="updated_at", type="datetime", nullable=false)
  219.      * @Gedmo\Timestampable(on="update")
  220.      */
  221.     private $updatedAt;
  222.     
  223.     /**
  224.      * @var \DateTime
  225.      *
  226.      * @ORM\Column(name="added_at", type="datetime", nullable=false)
  227.      * @Gedmo\Timestampable(on="create")
  228.      */
  229.     private $addedAt;
  230.     
  231.     /**
  232.      * @ORM\ManyToMany(targetEntity="App\Admin\Modules\Contract\Entity\ContractTemplate", inversedBy="documentTemplatesContracts")
  233.      * @ORM\JoinTable(name="contract_document_template",
  234.      *      joinColumns={@ORM\JoinColumn(name="id_contract", referencedColumnName="id", onDelete="CASCADE")},
  235.      *      inverseJoinColumns={@ORM\JoinColumn(name="id_contract_template", referencedColumnName="id", onDelete="RESTRICT")}
  236.      *    )
  237.      * @ORM\OrderBy({"name"="ASC"})
  238.      **/
  239.     private $documentTemplates;
  240.     
  241.     /**
  242.      * @var \App\Admin\Modules\Contract\Entity\ContractInstallment
  243.      *
  244.      * @ORM\OneToMany(targetEntity="App\Admin\Modules\Contract\Entity\ContractInstallment", mappedBy="contract", cascade={"persist"}, orphanRemoval=true)
  245.      * @ORM\OrderBy({"id"="ASC"})
  246.      */
  247.     private $installments;    
  248.     /**
  249.      * @var \App\Admin\Modules\Contract\Entity\ContractTasksDepartment
  250.      *
  251.      * @ORM\OneToMany(targetEntity="App\Admin\Modules\Contract\Entity\ContractTasksDepartment", mappedBy="contract", cascade={"persist"}, orphanRemoval=true)
  252.      * @ORM\OrderBy({"id"="ASC"})
  253.      */
  254.     private $tasksDepartments;    
  255.     
  256.     public function __construct()
  257.     {
  258.         $this->status self::STATUS_NEW;
  259.         $this->tasksDepartments = new ArrayCollection();
  260.         $this->installments = new ArrayCollection();
  261.         $this->documentTemplates = new ArrayCollection();
  262.     }
  263.     public function getId(): ?string
  264.     {
  265.         return $this->id;
  266.     }
  267.     public function getNumber(): ?string
  268.     {
  269.         return $this->number;
  270.     }
  271.     public function setNumber(string $number): self
  272.     {
  273.         $this->number $number;
  274.         return $this;
  275.     }
  276.     public function getFirstName(): ?string
  277.     {
  278.         return $this->firstName;
  279.     }
  280.     public function setFirstName(string $firstName): self
  281.     {
  282.         $this->firstName $firstName;
  283.         return $this;
  284.     }
  285.     public function getLastName(): ?string
  286.     {
  287.         return $this->lastName;
  288.     }
  289.     public function setLastName(string $lastName): self
  290.     {
  291.         $this->lastName $lastName;
  292.         return $this;
  293.     }
  294.     public function getPesel(): ?string
  295.     {
  296.         return $this->pesel;
  297.     }
  298.     public function setPesel(?string $pesel): self
  299.     {
  300.         $this->pesel $pesel;
  301.         return $this;
  302.     }
  303.     public function getIdCardNumber(): ?string
  304.     {
  305.         return $this->idCardNumber;
  306.     }
  307.     public function setIdCardNumber(?string $idCardNumber): self
  308.     {
  309.         $this->idCardNumber $idCardNumber;
  310.         return $this;
  311.     }
  312.     public function getStreet(): ?string
  313.     {
  314.         return $this->street;
  315.     }
  316.     public function setStreet(?string $street): self
  317.     {
  318.         $this->street $street;
  319.         return $this;
  320.     }
  321.     public function getBuildingNumber(): ?string
  322.     {
  323.         return $this->buildingNumber;
  324.     }
  325.     public function setBuildingNumber(?string $buildingNumber): self
  326.     {
  327.         $this->buildingNumber $buildingNumber;
  328.         return $this;
  329.     }
  330.     public function getApartmentNumber(): ?string
  331.     {
  332.         return $this->apartmentNumber;
  333.     }
  334.     public function setApartmentNumber(?string $apartmentNumber): self
  335.     {
  336.         $this->apartmentNumber $apartmentNumber;
  337.         return $this;
  338.     }
  339.     public function getPostalCode(): ?string
  340.     {
  341.         return $this->postalCode;
  342.     }
  343.     public function setPostalCode(?string $postalCode): self
  344.     {
  345.         $this->postalCode $postalCode;
  346.         return $this;
  347.     }
  348.     public function getCity(): ?string
  349.     {
  350.         return $this->city;
  351.     }
  352.     public function setCity(?string $city): self
  353.     {
  354.         $this->city $city;
  355.         return $this;
  356.     }
  357.     public function getUpdatedAt(): ?\DateTimeInterface
  358.     {
  359.         return $this->updatedAt;
  360.     }
  361.     public function setUpdatedAt(\DateTimeInterface $updatedAt): self
  362.     {
  363.         $this->updatedAt $updatedAt;
  364.         return $this;
  365.     }
  366.     public function getAddedAt(): ?\DateTimeInterface
  367.     {
  368.         return $this->addedAt;
  369.     }
  370.     public function setAddedAt(\DateTimeInterface $addedAt): self
  371.     {
  372.         $this->addedAt $addedAt;
  373.         return $this;
  374.     }
  375.     public function getTraderUser(): ?User
  376.     {
  377.         return $this->traderUser;
  378.     }
  379.     public function setTraderUser(?User $traderUser): self
  380.     {
  381.         $this->traderUser $traderUser;
  382.         return $this;
  383.     }
  384.     public function getAdminUser(): ?User
  385.     {
  386.         return $this->adminUser;
  387.     }
  388.     public function setAdminUser(?User $adminUser): self
  389.     {
  390.         $this->adminUser $adminUser;
  391.         return $this;
  392.     }
  393.     public function getEmail(): ?string
  394.     {
  395.         return $this->email;
  396.     }
  397.     public function setEmail(string $email): self
  398.     {
  399.         $this->email $email;
  400.         return $this;
  401.     }
  402.     public function getClient(): ?ContractClient
  403.     {
  404.         return $this->client;
  405.     }
  406.     public function setClient(?ContractClient $client): self
  407.     {
  408.         $this->client $client;
  409.         return $this;
  410.     }
  411.     public function getClientNumber(): ?string
  412.     {
  413.         return $this->clientNumber;
  414.     }
  415.     public function setClientNumber(string $clientNumber): self
  416.     {
  417.         $this->clientNumber $clientNumber;
  418.         return $this;
  419.     }
  420.     public function getTemplate(): ?ContractTemplate
  421.     {
  422.         return $this->template;
  423.     }
  424.     public function setTemplate(?ContractTemplate $template): self
  425.     {
  426.         $this->template $template;
  427.         return $this;
  428.     }
  429.     public function getStatus(): ?int
  430.     {
  431.         return $this->status;
  432.     }
  433.     public function setStatus(int $status): self
  434.     {
  435.         $this->status $status;
  436.         return $this;
  437.     }
  438.     /**
  439.      * @return Collection<int, ContractTasksDepartment>
  440.      */
  441.     public function getTasksDepartments(): Collection
  442.     {
  443.         return $this->tasksDepartments;
  444.     }
  445.     public function addTasksDepartment(ContractTasksDepartment $tasksDepartment): self
  446.     {
  447.         if (!$this->tasksDepartments->contains($tasksDepartment)) {
  448.             $this->tasksDepartments->add($tasksDepartment);
  449.             $tasksDepartment->setContract($this);
  450.         }
  451.         return $this;
  452.     }
  453.     public function removeTasksDepartment(ContractTasksDepartment $tasksDepartment): self
  454.     {
  455.         if ($this->tasksDepartments->removeElement($tasksDepartment)) {
  456.             // set the owning side to null (unless already changed)
  457.             if ($tasksDepartment->getContract() === $this) {
  458.                 $tasksDepartment->setContract(null);
  459.             }
  460.         }
  461.         return $this;
  462.     }
  463.     public function getPhone(): ?string
  464.     {
  465.         return $this->phone;
  466.     }
  467.     public function setPhone(?string $phone): self
  468.     {
  469.         $this->phone $phone;
  470.         return $this;
  471.     }
  472.     public function getPrice(): ?string
  473.     {
  474.         return $this->price;
  475.     }
  476.     public function setPrice(string $price): self
  477.     {
  478.         $this->price $price;
  479.         return $this;
  480.     }
  481.     public function getPaidAt(): ?\DateTimeInterface
  482.     {
  483.         return $this->paidAt;
  484.     }
  485.     public function setPaidAt(?\DateTimeInterface $paidAt): self
  486.     {
  487.         $this->paidAt $paidAt;
  488.         return $this;
  489.     }
  490.     public function getPaymentId(): ?int
  491.     {
  492.         return $this->paymentId;
  493.     }
  494.     public function setPaymentId(?int $paymentId): self
  495.     {
  496.         $this->paymentId $paymentId;
  497.         return $this;
  498.     }
  499.     /**
  500.      * @return Collection<int, ContractInstallment>
  501.      */
  502.     public function getInstallments(): Collection
  503.     {
  504.         return $this->installments;
  505.     }
  506.     public function addInstallment(ContractInstallment $installment): self
  507.     {
  508.         if (!$this->installments->contains($installment)) {
  509.             $this->installments->add($installment);
  510.             $installment->setContract($this);
  511.         }
  512.         return $this;
  513.     }
  514.     public function removeInstallment(ContractInstallment $installment): self
  515.     {
  516.         if ($this->installments->removeElement($installment)) {
  517.             // set the owning side to null (unless already changed)
  518.             if ($installment->getContract() === $this) {
  519.                 $installment->setContract(null);
  520.             }
  521.         }
  522.         return $this;
  523.     }
  524.     public function getPaymentType(): ?int
  525.     {
  526.         return $this->paymentType;
  527.     }
  528.     public function setPaymentType(int $paymentType): self
  529.     {
  530.         $this->paymentType $paymentType;
  531.         return $this;
  532.     }
  533.     public function getVoucher(): ?VoucherPackageVoucher
  534.     {
  535.         return $this->voucher;
  536.     }
  537.     public function setVoucher(?VoucherPackageVoucher $voucher): self
  538.     {
  539.         $this->voucher $voucher;
  540.         return $this;
  541.     }
  542.     public function getSignedScanFileName(): ?string
  543.     {
  544.         return $this->signedScanFileName;
  545.     }
  546.     public function setSignedScanFileName(?string $signedScanFileName): self
  547.     {
  548.         $this->signedScanFileName $signedScanFileName;
  549.         return $this;
  550.     }
  551.     public function getSignedScanFile(): ?string
  552.     {
  553.         return $this->signedScanFile;
  554.     }
  555.     public function setSignedScanFile(?string $signedScanFile): self
  556.     {
  557.         $this->signedScanFile $signedScanFile;
  558.         return $this;
  559.     }
  560.     public function getDocumentsSet(): ?ContractDocumentsSet
  561.     {
  562.         return $this->documentsSet;
  563.     }
  564.     public function setDocumentsSet(?ContractDocumentsSet $documentsSet): self
  565.     {
  566.         $this->documentsSet $documentsSet;
  567.         return $this;
  568.     }
  569.     /**
  570.      * @return Collection<int, ContractTemplate>
  571.      */
  572.     public function getDocumentTemplates(): Collection
  573.     {
  574.         return $this->documentTemplates;
  575.     }
  576.     public function addDocumentTemplate(ContractTemplate $documentTemplate): self
  577.     {
  578.         if (!$this->documentTemplates->contains($documentTemplate)) {
  579.             $this->documentTemplates->add($documentTemplate);
  580.         }
  581.         return $this;
  582.     }
  583.     public function removeDocumentTemplate(ContractTemplate $documentTemplate): self
  584.     {
  585.         $this->documentTemplates->removeElement($documentTemplate);
  586.         return $this;
  587.     }
  588. }