src/Entity/Customer.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Service\Helper\DateTimeHelper;
  4. use App\Service\Helper\Generator;
  5. use App\Service\Helper\PhoneHelper;
  6. use DateTime;
  7. use Doctrine\Common\Collections\ArrayCollection;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Exception;
  10. /**
  11.  * @ORM\Entity(repositoryClass="App\Repository\CustomerRepository")
  12.  * @ORM\Table(name="customers__customers",
  13.  *     indexes={
  14.  *          @ORM\Index(name="phone_idx", columns={"phone"}),
  15.  *          @ORM\Index(name="email_idx", columns={"email"}),
  16.  *     })
  17.  */
  18. class Customer
  19. {
  20.     use IdTrait;
  21.     /**
  22.      * @ORM\Column(name="created_at", type="datetime", nullable=false)
  23.      */
  24.     private DateTime $createdAt;
  25.     /**
  26.      * @ORM\OneToOne(targetEntity="User")
  27.      * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="SET NULL", nullable=true)
  28.      **/
  29.     private ?User $user null;
  30.     /**
  31.      * @ORM\Column(name="phone", type="string", unique=true)
  32.      */
  33.     private string $phone;
  34.     /**
  35.      * @ORM\Column(name="first_name", type="string", nullable=true)
  36.      */
  37.     private ?string $firstName null;
  38.     /**
  39.      * @ORM\Column(name="sure_name", type="string", nullable=true)
  40.      */
  41.     private ?string $sureName null;
  42.     /**
  43.      * @ORM\Column(name="father_name", type="string", nullable=true)
  44.      */
  45.     private ?string $fatherName null;
  46.     /**
  47.      * @ORM\Column(name="farpost_login", type="string", nullable=true)
  48.      */
  49.     private ?string $farpostLogin null;
  50.     /**
  51.      * @ORM\Column(name="email", type="string", nullable=true)
  52.      */
  53.     private ?string $email null;
  54.     /**
  55.      * @ORM\Column(name="mango_contact_id", type="string", nullable=true)
  56.      */
  57.     private ?string $mangoContactId null;
  58.     /**
  59.      * @var ArrayCollection|CustomerGarage[]
  60.      * @ORM\OneToMany(targetEntity="CustomerGarage", mappedBy="customer")
  61.      */
  62.     private $garages;
  63.     /**
  64.      * @throws Exception
  65.      */
  66.     public function __construct(string $phone)
  67.     {
  68.         $this->phone PhoneHelper::getNormalizePhone($phone);
  69.         $this->createdAt DateTimeHelper::getNowDateTime();
  70.     }
  71.     /**
  72.      * @return User
  73.      */
  74.     public function getUser()
  75.     {
  76.         return $this->user;
  77.     }
  78.     /**
  79.      * @param User $user
  80.      * @return Customer
  81.      */
  82.     public function setUser($user)
  83.     {
  84.         $this->user $user;
  85.         return $this;
  86.     }
  87.     public function getPhone(): ?string
  88.     {
  89.         return $this->phone;
  90.     }
  91.     public function getFirstName(): ?string
  92.     {
  93.         return $this->firstName;
  94.     }
  95.     public function setFirstName(?string $firstName): Customer
  96.     {
  97.         $this->firstName $firstName;
  98.         return $this;
  99.     }
  100.     public function getSureName(): ?string
  101.     {
  102.         return $this->sureName;
  103.     }
  104.     public function setSureName(?string $sureName): Customer
  105.     {
  106.         $this->sureName $sureName;
  107.         return $this;
  108.     }
  109.     public function getFatherName(): ?string
  110.     {
  111.         return $this->fatherName;
  112.     }
  113.     public function setFatherName(?string $fatherName): Customer
  114.     {
  115.         $this->fatherName $fatherName;
  116.         return $this;
  117.     }
  118.     public function getMangoContactId(): ?string
  119.     {
  120.         return $this->mangoContactId;
  121.     }
  122.     public function setMangoContactId(?string $mangoContactId): Customer
  123.     {
  124.         $this->mangoContactId $mangoContactId;
  125.         return $this;
  126.     }
  127.     /**
  128.      * @return CustomerGarage[]
  129.      */
  130.     public function getGarages()
  131.     {
  132.         return $this->garages;
  133.     }
  134.     /**
  135.      * @return string
  136.      */
  137.     public function getFullName()
  138.     {
  139.         $fullName $this->sureName;
  140.         $fullName .= $this->firstName ? ($fullName ' ' null) . $this->firstName null;
  141.         $fullName .= $this->fatherName ? ($fullName ' ' null) . $this->fatherName null;
  142.         if($fullName) return $fullName;
  143.         return '';
  144.     }
  145.     /**
  146.      * @return string
  147.      */
  148.     public function getShortName()
  149.     {
  150.         $fullName $this->getSureName();
  151.         $fullName .= $this->getFirstName() ? ($fullName ' ' null) . mb_substr($this->getFirstName(), 01) . '.' null;
  152.         $fullName .= $this->getFatherName() ? ($fullName ' ' null) . mb_substr($this->getFatherName(), 01) . '.' null;
  153.         if($fullName) return $fullName;
  154.         return '';
  155.     }
  156. }