src/Entity/ProjectOrderTaskFulfillmentMessage.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\ProjectOrderTaskFulfillmentMessageRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\Serializer\Annotation\Groups;
  6. /**
  7.  * Task execution İÇ-MESAJLAŞMA — owner (ERP) ⟷ executor (servis) arası, task-bazlı chat
  8.  * (karar 59, Chat-K1/Chat-K2). Rol model: ProjectOrderTaskFulfillmentDateRevision (aynı desen —
  9.  * execution'a bağlı, created_at ile sıralı zincir, tarihsel kayıtlar asla mutasyona uğramaz).
  10.  *
  11.  * ⚠️ Chat-K1 (güvenlik kilidi): mesaj İÇERİĞİ NS'ten GEÇMEZ — NS auth'suz, oda anahtarını
  12.  * (scope+contactPersonId) bilen herkes girebilir. NS yalnız SİNYAL taşır (`task_execution_message`
  13.  * → `{executionId, unreadCount?}`); gövde bu tablodan kimlik-doğrulamalı uçlarla çekilir
  14.  * (owner = session, executor = X-Internal-Token). Bu entity NS emit'i YAPMAZ, FE emit eder.
  15.  *
  16.  * @ORM\Entity(repositoryClass=ProjectOrderTaskFulfillmentMessageRepository::class)
  17.  * @ORM\Table(name="project_order_task_fulfillment_messages")
  18.  */
  19. class ProjectOrderTaskFulfillmentMessage
  20. {
  21.     /**
  22.      * @ORM\Id
  23.      * @ORM\GeneratedValue
  24.      * @ORM\Column(type="integer")
  25.      * @Groups({
  26.      *     "project_order_task_fulfillment_message@core"
  27.      * })
  28.      */
  29.     private $id;
  30.     /**
  31.      * ⚠️ Bilerek Groups anotasyonu YOK — bu FK asla serialize edilmez (back-ref recursion + Chat-K1:
  32.      * mesaj execution payload'ına enjekte edilmez, execution de mesaja gömülmez, ayrı uçlar).
  33.      *
  34.      * @ORM\ManyToOne(targetEntity=ProjectOrderTaskFulfillment::class, inversedBy="messages")
  35.      * @ORM\JoinColumn(name="execution_id", nullable=false, onDelete="CASCADE")
  36.      */
  37.     private $execution;
  38.     /**
  39.      * Kim gönderdi — owner (ERP) mi executor (servis) mi. Değerlerin TEK kaynağı
  40.      * App\Enum\TaskExecutionSenderSideEnum; DB kolonu App\Doctrine\Type\TaskExecutionSenderSide
  41.      * ile gerçek ENUM.
  42.      * @ORM\Column(type="task_execution_sender_side", nullable=false)
  43.      * @Groups({
  44.      *     "project_order_task_fulfillment_message@core"
  45.      * })
  46.      */
  47.     private $sender_side;
  48.     /**
  49.      * Gönderenin görünen adı — SNAPSHOT (gönderim anındaki ad denormalize edilir). owner:
  50.      * WorkerActivities→Worker::getFullName() · executor(internal): aynı yol · executor(external):
  51.      * VendorContactPersons name+surname. Gönderen sonradan adını değiştirse/hesabı silinse bile
  52.      * geçmiş mesaj kimin gönderdiğini göstermeye devam eder (canlı FK ile arama YAPILMAZ).
  53.      * @ORM\Column(type="string", length=191, nullable=false)
  54.      * @Groups({
  55.      *     "project_order_task_fulfillment_message@core"
  56.      * })
  57.      */
  58.     private $sender_name;
  59.     /**
  60.      * @ORM\Column(type="text", nullable=false)
  61.      * @Groups({
  62.      *     "project_order_task_fulfillment_message@core"
  63.      * })
  64.      */
  65.     private $body;
  66.     /**
  67.      * @ORM\Column(type="datetime_immutable")
  68.      * @Groups({
  69.      *     "project_order_task_fulfillment_message@core"
  70.      * })
  71.      */
  72.     private $created_at;
  73.     public function getId(): ?int
  74.     {
  75.         return $this->id;
  76.     }
  77.     public function getExecution(): ?ProjectOrderTaskFulfillment
  78.     {
  79.         return $this->execution;
  80.     }
  81.     public function setExecution(?ProjectOrderTaskFulfillment $execution): self
  82.     {
  83.         $this->execution = $execution;
  84.         return $this;
  85.     }
  86.     public function getSenderSide(): ?string
  87.     {
  88.         return $this->sender_side;
  89.     }
  90.     public function setSenderSide(string $sender_side): self
  91.     {
  92.         $this->sender_side = $sender_side;
  93.         return $this;
  94.     }
  95.     public function getSenderName(): ?string
  96.     {
  97.         return $this->sender_name;
  98.     }
  99.     public function setSenderName(string $sender_name): self
  100.     {
  101.         $this->sender_name = $sender_name;
  102.         return $this;
  103.     }
  104.     public function getBody(): ?string
  105.     {
  106.         return $this->body;
  107.     }
  108.     public function setBody(string $body): self
  109.     {
  110.         $this->body = $body;
  111.         return $this;
  112.     }
  113.     public function getCreatedAt(): ?\DateTimeImmutable
  114.     {
  115.         return $this->created_at;
  116.     }
  117.     public function setCreatedAt(\DateTimeImmutable $created_at): self
  118.     {
  119.         $this->created_at = $created_at;
  120.         return $this;
  121.     }
  122. }