src/Entity/MangoCall.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Service\Helper\DateTimeHelper;
  4. use DateTime;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Exception;
  7. /**
  8.  * Class Call
  9.  * @ORM\Table(name="mango__calls",
  10.  *     indexes={
  11.  *      @ORM\Index(columns={"created_at"}),
  12.  *      @ORM\Index(columns={"phone"}),
  13.  *      @ORM\Index(columns={"status"}),
  14.  *      @ORM\Index(columns={"direction"}),
  15.  *      @ORM\Index(columns={"missed_status"}),
  16.  * })
  17.  * @ORM\Entity(repositoryClass="App\Repository\MangoCallRepository")
  18.  */
  19. class MangoCall
  20. {
  21.     const DIRECTION_INCOMING 'incoming';
  22.     const DIRECTION_OUTGOING 'outgoing';
  23.     const DIRECTION_INNER 'inner';
  24.     const DIRECTIONS = [
  25.         self::DIRECTION_INCOMING => 'входящий',
  26.         self::DIRECTION_OUTGOING => 'исходящий',
  27.         self::DIRECTION_INNER => 'внутренний',
  28.     ];
  29.     const STATUS_ANSWERED 'ANSWERED';
  30.     const STATUS_NO_ANSWER 'NO ANSWER';
  31.     const STATUS_FAILED 'FAILED';
  32.     const STATUS_BUSY 'BUSY';
  33.     const MISSED_STATUS_MISSED 'missed';
  34.     const MISSED_STATUS_RECALL 'recall';
  35.     use IdTrait;
  36.     use UpdatedAtTrait;
  37.     /**
  38.      * @ORM\Column(name="created_at", type="datetime", nullable=false)
  39.      */
  40.     private DateTime $createdAt;
  41.     /**
  42.      * @ORM\ManyToOne(targetEntity="Manager")
  43.      * @ORM\JoinColumn(name="manager_id", referencedColumnName="id", nullable=true)
  44.      */
  45.     private ?Manager $manager null;
  46.     /**
  47.      * @ORM\Column(name="phone", type="string", nullable=false)
  48.      */
  49.     private string $phone;
  50.     /**
  51.      * @ORM\Column(name="sip_id", type="string", unique=true, nullable=false)
  52.      */
  53.     private string $sipId;
  54.     /**
  55.      * @ORM\Column(name="recording_id", type="string", nullable=true)
  56.      */
  57.     private ?string $recordingId null;
  58.     /**
  59.      * @ORM\Column(name="status", type="string", nullable=true)
  60.      */
  61.     private ?string $status null;
  62.     /**
  63.      * @ORM\Column(name="duration", type="integer")
  64.      */
  65.     private int $duration 0;
  66.     /**
  67.      * @ORM\Column(name="direction", nullable=false, type="string")
  68.      */
  69.     private string $direction;
  70.     /**
  71.      * @ORM\Column(name="missed_status", nullable=true, type="string")
  72.      */
  73.     private ?string $missedStatus null;
  74.     /**
  75.      * @ORM\ManyToOne(targetEntity="Customer")
  76.      * @ORM\JoinColumn(name="customer_id", nullable=true, referencedColumnName="id")
  77.      */
  78.     private ?Customer $customer null;
  79.     /**
  80.      * @ORM\OneToOne(targetEntity="Lead", mappedBy="mangoCall")
  81.      */
  82.     private ?Lead $lead null;
  83.     /**
  84.      * @throws Exception
  85.      */
  86.     public function __construct(string $phonestring $sipIdstring $direction)
  87.     {
  88.         $this->phone $phone;
  89.         $this->sipId $sipId;
  90.         $this->direction $direction;
  91.         $this->createdAt DateTimeHelper::getNowDateTime();
  92.     }
  93.     public function getCreatedAt(): DateTime
  94.     {
  95.         return $this->createdAt;
  96.     }
  97.     public function getPhone(): string
  98.     {
  99.         return $this->phone;
  100.     }
  101.     public function getSipId(): string
  102.     {
  103.         return $this->sipId;
  104.     }
  105.     public function getManager(): ?Manager
  106.     {
  107.         return $this->manager;
  108.     }
  109.     public function setManager(?Manager $manager): void
  110.     {
  111.         $this->manager $manager;
  112.     }
  113.     public function getDirection(): string
  114.     {
  115.         return $this->direction;
  116.     }
  117.     public function getStatus(): ?string
  118.     {
  119.         return $this->status;
  120.     }
  121.     public function setStatus(?string $status): MangoCall
  122.     {
  123.         $this->status $status;
  124.         return $this;
  125.     }
  126.     public function getDuration(): int
  127.     {
  128.         return $this->duration;
  129.     }
  130.     public function setDuration(int $duration): MangoCall
  131.     {
  132.         $this->duration $duration;
  133.         return $this;
  134.     }
  135.     public function getCustomer(): ?Customer
  136.     {
  137.         return $this->customer;
  138.     }
  139.     public function getRecordingId(): ?string
  140.     {
  141.         return $this->recordingId;
  142.     }
  143.     public function setRecordingId(?string $recordingId): MangoCall
  144.     {
  145.         $this->recordingId $recordingId;
  146.         return $this;
  147.     }
  148.     public function getMissedStatus(): ?string
  149.     {
  150.         return $this->missedStatus;
  151.     }
  152.     public function setMissedStatus(?string $missedStatus): MangoCall
  153.     {
  154.         $this->missedStatus $missedStatus;
  155.         return $this;
  156.     }
  157.     public function setCustomer(?Customer $customer): MangoCall
  158.     {
  159.         $this->customer $customer;
  160.         return $this;
  161.     }
  162.     public function getLead(): ?Lead
  163.     {
  164.         return $this->lead;
  165.     }
  166.     public function setLead(?Lead $lead): MangoCall
  167.     {
  168.         $this->lead $lead;
  169.         return $this;
  170.     }
  171. }