src/Entity/FielpetPol/TicketAdjunto.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Entity\FielpetPol;
  3. use Doctrine\ORM\Mapping as ORM;
  4. /**
  5. * TicketAdjunto
  6. *
  7. * @ORM\Table(name="ticket_adjunto")
  8. * @ORM\Entity(repositoryClass="App\Repository\FielpetPol\TicketAdjuntoRepository")
  9. */
  10. class TicketAdjunto
  11. {
  12. /**
  13. * @ORM\Column(name="id", type="integer", nullable=false)
  14. * @ORM\Id
  15. * @ORM\GeneratedValue(strategy="IDENTITY")
  16. */
  17. private $id;
  18. /** @ORM\Column(name="nombre_original", type="string", length=255, nullable=false) */
  19. private $nombreOriginal;
  20. /** @ORM\Column(name="mime_type", type="string", length=100, nullable=false) */
  21. private $mimeType;
  22. /** @ORM\Column(name="tamanio", type="integer", nullable=false) */
  23. private $tamanio;
  24. /**
  25. * Contenido del archivo codificado en base64.
  26. * length=16777215 → Doctrine lo mapea a MEDIUMTEXT en MySQL (~16MB, ~12MB de archivo real).
  27. *
  28. * @ORM\Column(name="contenido_base64", type="text", length=16777215, nullable=false)
  29. */
  30. private $contenidoBase64;
  31. /** @ORM\Column(name="fecha_creacion", type="datetime", nullable=false) */
  32. private $fechaCreacion;
  33. /**
  34. * @ORM\ManyToOne(targetEntity="App\Entity\FielpetPol\Ticket")
  35. * @ORM\JoinColumn(name="ticket_id", referencedColumnName="id", nullable=false)
  36. */
  37. private $ticket;
  38. /**
  39. * Null si es un adjunto del ticket (creación/edición). Si viene de un comentario, se linkea acá.
  40. *
  41. * @ORM\ManyToOne(targetEntity="App\Entity\FielpetPol\TicketRespuesta")
  42. * @ORM\JoinColumn(name="ticket_respuesta_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
  43. */
  44. private $ticketRespuesta;
  45. /**
  46. * @ORM\ManyToOne(targetEntity="App\Entity\FielpetPol\Usuario")
  47. * @ORM\JoinColumn(name="usuario_id", referencedColumnName="id", nullable=false)
  48. */
  49. private $usuario;
  50. public function __construct()
  51. {
  52. $this->fechaCreacion = new \DateTime();
  53. }
  54. public function getId(): ?int { return $this->id; }
  55. public function getNombreOriginal(): ?string { return $this->nombreOriginal; }
  56. public function setNombreOriginal(string $v): static { $this->nombreOriginal = $v; return $this; }
  57. public function getMimeType(): ?string { return $this->mimeType; }
  58. public function setMimeType(string $v): static { $this->mimeType = $v; return $this; }
  59. public function getTamanio(): ?int { return $this->tamanio; }
  60. public function setTamanio(int $v): static { $this->tamanio = $v; return $this; }
  61. public function getContenidoBase64(): ?string { return $this->contenidoBase64; }
  62. public function setContenidoBase64(string $v): static { $this->contenidoBase64 = $v; return $this; }
  63. public function getFechaCreacion(): ?\DateTimeInterface { return $this->fechaCreacion; }
  64. public function setFechaCreacion(\DateTimeInterface $v): static { $this->fechaCreacion = $v; return $this; }
  65. public function getTicket(): ?Ticket { return $this->ticket; }
  66. public function setTicket(?Ticket $v): static { $this->ticket = $v; return $this; }
  67. public function getTicketRespuesta(): ?TicketRespuesta { return $this->ticketRespuesta; }
  68. public function setTicketRespuesta(?TicketRespuesta $v): static { $this->ticketRespuesta = $v; return $this; }
  69. public function getUsuario(): ?Usuario { return $this->usuario; }
  70. public function setUsuario(?Usuario $v): static { $this->usuario = $v; return $this; }
  71. public function getTamanioFormateado(): string
  72. {
  73. $b = $this->tamanio;
  74. if ($b >= 1048576) return round($b / 1048576, 1) . ' MB';
  75. if ($b >= 1024) return round($b / 1024, 1) . ' KB';
  76. return $b . ' B';
  77. }
  78. public function isImagen(): bool
  79. {
  80. return in_array($this->mimeType, [
  81. 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/svg+xml'
  82. ], true);
  83. }
  84. }