public async Task <ActionResult> EditarTramite(Guid tramiteId, [FromBody] TramitePutDto tramitePutDto)
        {
            if (tramiteId != tramitePutDto.Id)
            {
                NotificarErro("Id da request diferente do Id da Entidade!");
                return(CustomResponse(tramitePutDto));
            }

            TramiteResultDto tramiteResultDto = await _tramiteService.PesquisarTramitePorId(tramiteId);

            if (tramiteResultDto == null)
            {
                return(NotFound(new
                {
                    success = true,
                    status = 404,
                    mensagem = "O trâmite informado não foi encontrado!",
                }));
            }

            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            await _tramiteService.EditarTramite(tramitePutDto, tramiteResultDto);

            return(CustomResponse(new
            {
                mensagem = "O trâmite foi editado com sucesso!",
            }));
        }
        public async Task <bool> EditarTramite(TramitePutDto tramitePutDto, TramiteResultDto tramiteResultDto)
        {
            // validação domínio
            if (!ExecutarValidacao(new TramitePutDtoValidation(), tramitePutDto))
            {
                return(false);
            }

            // validação regra de negócio
            if (!await ValidarUsuarioEOcorrencia(tramitePutDto.UsuarioId, tramitePutDto.OcorrenciaId, tramitePutDto.DataHora))
            {
                return(false);
            }

            // Verificar se já existe um trâmite solução
            ICollection <TramiteResultDto> listaTramiteResultDto = await _tramiteRepository.PesquisarTramitesPorOcorrencia(tramitePutDto.OcorrenciaId);

            foreach (TramiteResultDto itemTra in listaTramiteResultDto)
            {
                if (bool.Parse(itemTra.Solucao))
                {
                    Notificar("Já existe um trâmite definido como solução!");
                    return(false);
                }
            }

            Tramite tramite = new Tramite(tramitePutDto, tramiteResultDto);

            await _tramiteRepository.EditarAsync(tramite);

            return(true);
        }
 public Tramite(TramitePutDto tramitePutDto, TramiteResultDto tramiteResultDto)
 {
     Id           = Guid.Parse(tramiteResultDto.Id);
     IncTramite   = int.Parse(tramiteResultDto.IncTramite);
     Descricao    = tramitePutDto.Descricao;
     DataHora     = tramitePutDto.DataHora;
     Solucao      = tramitePutDto.Solucao;
     OcorrenciaId = tramitePutDto.OcorrenciaId;
     UsuarioId    = tramitePutDto.UsuarioId;
 }