src/Application/Internit/SolicitacaoBundle/Entity/Solicitacao.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Application\Internit\SolicitacaoBundle\Entity;
  3. use App\Application\Internit\ProfissionalBundle\Entity\Profissional;
  4. use App\Application\Internit\SolicitacaoBundle\Repository\SolicitacaoRepository;
  5. use App\Application\Internit\StatusSolicitacaoBundle\Entity\StatusSolicitacao;
  6. use App\Application\Internit\TipoSolicitacaoBundle\Entity\Assunto;
  7. use App\Application\Internit\TipoSolicitacaoBundle\Entity\TipoSolicitacao;
  8. use App\Application\Internit\PeriodoAgendamentoBundle\Entity\PeriodoAgendamento;
  9. use App\Application\Internit\AndamentoSolicitacaoBundle\Entity\AndamentoSolicitacao;
  10. use App\Application\Internit\UnidadeBundle\Entity\Unidade;
  11. use App\Application\Internit\ClienteBundle\Entity\Cliente;
  12. use App\Application\Project\ContentBundle\Entity\BaseEntity;
  13. use App\Application\Project\SecurityAdminBundle\Entity\UserAdmin;
  14. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  15. use Symfony\Component\Validator\Constraints as Assert;
  16. use Doctrine\Common\Collections\ArrayCollection;
  17. use Doctrine\Common\Collections\Collection;
  18. use App\Entity\SonataMediaGallery;
  19. use App\Entity\SonataMediaMedia;
  20. use Doctrine\ORM\Mapping as ORM;
  21. use DateTime;
  22. /** Info:  */
  23. #[ORM\Table(name'solicitacao')]
  24. #[ORM\Entity(repositoryClassSolicitacaoRepository::class)]
  25. #[UniqueEntity('id')]
  26. #[ORM\HasLifecycleCallbacks]
  27. class Solicitacao extends BaseEntity
  28. {
  29.     #[ORM\Id]
  30.     #[ORM\GeneratedValue]
  31.     #[ORM\Column(name'id'type'integer'uniquetruenullablefalse)]
  32.     private ?int $id null;
  33.     #[ORM\Column(name'codigo'type'string'uniquetruenullabletrue)]
  34.     private ?string $codigo null;
  35.     #[Assert\NotNull]
  36.     #[Assert\NotBlank]
  37.     #[ORM\Column(name'mensagem'type'text'uniquefalsenullablefalse)]
  38.     private string $mensagem;
  39.     #[Assert\NotNull]
  40.     #[Assert\NotBlank]
  41.     ##[Assert\Date]
  42.     #[ORM\Column(name'data'type'date'uniquefalsenullablefalse)]
  43.     private DateTime $data;
  44.     ##[Assert\NotNull]
  45.     ##[Assert\NotBlank]
  46.     #[ORM\ManyToOne(targetEntityTipoSolicitacao::class)]
  47.     #[ORM\JoinColumn(name'tipoSolicitacao_id'referencedColumnName'id'onDelete'SET NULL')]
  48.     private TipoSolicitacao|null $tipoSolicitacao null;
  49.     #[ORM\ManyToOne(targetEntityAssunto::class)]
  50.     #[ORM\JoinColumn(name'assunto_id'referencedColumnName'id'onDelete'SET NULL')]
  51.     private Assunto|null $assunto null;
  52.     #[Assert\NotNull]
  53.     #[Assert\NotBlank]
  54.     #[ORM\ManyToOne(targetEntityPeriodoAgendamento::class)]
  55.     #[ORM\JoinColumn(name'periodoAgendamento_id'referencedColumnName'id'onDelete'SET NULL')]
  56.     private PeriodoAgendamento|null $periodoAgendamento null;
  57.     #[ORM\OneToMany(mappedBy'solicitacao'targetEntityAndamentoSolicitacao::class)]
  58.     private Collection $andamentoSolicitacao;
  59.     #[Assert\NotNull]
  60.     #[Assert\NotBlank]
  61.     #[ORM\ManyToOne(targetEntityUnidade::class)]
  62.     #[ORM\JoinColumn(name'unidade_id'referencedColumnName'id'onDelete'SET NULL')]
  63.     private Unidade|null $unidade null;
  64.     #[Assert\NotNull]
  65.     #[Assert\NotBlank]
  66.     #[ORM\ManyToOne(targetEntityCliente::class)]
  67.     #[ORM\JoinColumn(name'cliente_id'referencedColumnName'id'onDelete'SET NULL')]
  68.     private Cliente|null $cliente null;
  69.     #[ORM\ManyToOne(targetEntityUserAdmin::class)]
  70.     #[ORM\JoinColumn(name'responsavelAtendimento'referencedColumnName'id'onDelete'SET NULL')]
  71.     private UserAdmin|null $responsavelAtendimento null;
  72.     #[ORM\Column(name'respondidoAdmin'type'boolean'uniquefalsenullabletrue)]
  73.     private ?bool $respondidoAdmin true;
  74.     #[ORM\ManyToOne(targetEntitySonataMediaGallery::class, cascade: ['persist'])]
  75.     private mixed $anexos;
  76.     #[ORM\ManyToOne(targetEntityStatusSolicitacao::class)]
  77.     #[ORM\JoinColumn(name'status_atual'referencedColumnName'id'onDelete'SET NULL')]
  78.     private StatusSolicitacao|null $statusAtual null;
  79.     #[Assert\NotNull]
  80.     #[Assert\NotBlank]
  81.     #[ORM\Column(name'ultimaInteracao'type'string'uniquefalsenullabletrue)]
  82.     private ?string $ultimaInteracao null;
  83.     private mixed $multipleUpload;
  84.     private $empreendimento;
  85.     private $bloco;
  86.     #[ORM\PrePersist]
  87.     public function onPrePersist(): void
  88.     {
  89.         $this->updateStatusAtual();
  90.         parent::onPrePersist();
  91.     }
  92.     #[ORM\PreUpdate]
  93.     public function onPreUpdate(): void
  94.     {
  95.         $this->updateStatusAtual();
  96.         parent::onPreUpdate();
  97.     }
  98.     public function __construct()
  99.     {
  100.         $this->andamentoSolicitacao = new ArrayCollection();
  101.         $this->updateStatusAtual();
  102.     }
  103.     public function updateStatusAtual()
  104.     {
  105.         /** @var $andamento AndamentoSolicitacao */
  106.         //$andamentoAtual = $this->andamentoSolicitacao->last();
  107.         //$this->setStatusAtual(($andamentoAtual)? $andamentoAtual->getStatusSolicitacao() : null);
  108.     }
  109.     public function getId(): ?int
  110.     {
  111.         return $this->id;
  112.     }
  113.     public function getCodigo(): ?string
  114.     {
  115.         return $this->codigo;
  116.     }
  117.     public function setCodigo(?string $codigo): void
  118.     {
  119.         $this->codigo $codigo;
  120.     }
  121.     public function getMensagem(): string
  122.     {
  123.         return $this->mensagem;
  124.     }
  125.     public function setMensagem(string $mensagem): void
  126.     {
  127.         $this->mensagem $mensagem;
  128.     }
  129.     public function getData(): DateTime
  130.     {
  131.         return $this->data;
  132.     }
  133.     public function setData(DateTime $data): void
  134.     {
  135.         $this->data $data;
  136.     }
  137.     public function getTipoSolicitacao(): ?TipoSolicitacao
  138.     {
  139.         return $this->tipoSolicitacao;
  140.     }
  141.     public function setTipoSolicitacao(?TipoSolicitacao $tipoSolicitacao): void
  142.     {
  143.         $this->tipoSolicitacao $tipoSolicitacao;
  144.     }
  145.     public function getAssunto(): ?Assunto
  146.     {
  147.         return $this->assunto;
  148.     }
  149.     public function setAssunto(?Assunto $assunto): void
  150.     {
  151.         $this->assunto $assunto;
  152.     }
  153.     public function getPeriodoAgendamento(): ?PeriodoAgendamento
  154.     {
  155.         return $this->periodoAgendamento;
  156.     }
  157.     public function setPeriodoAgendamento(?PeriodoAgendamento $periodoAgendamento): void
  158.     {
  159.         $this->periodoAgendamento $periodoAgendamento;
  160.     }
  161.     public function getAndamentoSolicitacao(): Collection
  162.     {
  163.         return $this->andamentoSolicitacao;
  164.     }
  165.     public function setAndamentoSolicitacao(Collection $andamentoSolicitacao): void
  166.     {
  167.         $this->andamentoSolicitacao $andamentoSolicitacao;
  168.     }
  169.     public function getEmpreendimento()
  170.     {
  171.         return $this->empreendimento;
  172.     }
  173.     public function setEmpreendimento($empreendimento): void
  174.     {
  175.         $this->empreendimento $empreendimento;
  176.     }
  177.     public function getBloco()
  178.     {
  179.         return $this->bloco;
  180.     }
  181.     public function setBloco($bloco): void
  182.     {
  183.         $this->bloco $bloco;
  184.     }
  185.     public function getUnidade(): ?Unidade
  186.     {
  187.         return $this->unidade;
  188.     }
  189.     public function setUnidade(?Unidade $unidade): void
  190.     {
  191.         $this->unidade $unidade;
  192.     }
  193.     public function getResponsavelAtendimento(): ?UserAdmin
  194.     {
  195.         return $this->responsavelAtendimento;
  196.     }
  197.     public function setResponsavelAtendimento(?UserAdmin $responsavelAtendimento): void
  198.     {
  199.         $this->responsavelAtendimento $responsavelAtendimento;
  200.     }
  201.     public function getCliente(): ?Cliente
  202.     {
  203.         return $this->cliente;
  204.     }
  205.     public function setCliente(?Cliente $cliente): void
  206.     {
  207.         $this->cliente $cliente;
  208.     }
  209.     public function getUltimaInteracao(): ?string
  210.     {
  211.         return $this->ultimaInteracao;
  212.     }
  213.     public function setUltimaInteracao(?string $ultimaInteracao): void
  214.     {
  215.         $this->ultimaInteracao $ultimaInteracao;
  216.     }
  217.     public function getAnexos(): mixed
  218.     {
  219.         return $this->anexos;
  220.     }
  221.     public function setAnexos(mixed $anexos): void
  222.     {
  223.         $this->anexos $anexos;
  224.     }
  225.     public function getMultipleUpload(): mixed
  226.     {
  227.         return $this->multipleUpload;
  228.     }
  229.     public function setMultipleUpload(mixed $multipleUpload): void
  230.     {
  231.         $this->multipleUpload $multipleUpload;
  232.     }
  233.     public function getRespondidoAdmin(): ?bool
  234.     {
  235.         return $this->respondidoAdmin;
  236.     }
  237.     public function setRespondidoAdmin(?bool $respondidoAdmin): void
  238.     {
  239.         $this->respondidoAdmin $respondidoAdmin;
  240.     }
  241.     public function getStatusAtual(): ?StatusSolicitacao
  242.     {
  243.         return $this->statusAtual;
  244.     }
  245.     public function setStatusAtual(?StatusSolicitacao $statusAtual): void
  246.     {
  247.         $this->statusAtual $statusAtual;
  248.     }
  249.     public function getOs(): array
  250.     {
  251.         $result = [];
  252.         /** @var $andamento AndamentoSolicitacao */
  253.         foreach ($this->getAndamentoSolicitacao() as $andamento)
  254.         {
  255.             if(!$andamento->getAgendamento())
  256.                 continue;
  257.             foreach ($andamento->getAgendamento()->getOrdemServicos() as $os)
  258.             {
  259.                 $result[] = $os;
  260.             }
  261.         }
  262.         return $result;
  263.     }
  264.     /**
  265.      * @return Profissional[]
  266.      */
  267.     public function getAllProffisionais(): array
  268.     {
  269.         $profissionais = [];
  270.         /** @var $andamento AndamentoSolicitacao */
  271.         foreach ($this->getAndamentoSolicitacao() as $andamento) {
  272.             if($andamento->getAgendamento()) {
  273.                 foreach ($andamento->getAgendamento()->getProfissionais() as $profissional) {
  274.                     $profissionais[] = $profissional;
  275.                 }
  276.             }
  277.         }
  278.         return array_unique($profissionaisSORT_REGULAR);
  279.     }
  280. }