public IActionResult AtualizarStatus([FromRoute] Guid guid, [FromBody] PassoViewModel passo) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { _app.AtualizarPasso(guid, passo); return(Ok()); } catch (Domain.Validations.ExcecaoDeDominio ex) { return(BadRequest(new { Mensagem = ex.Mensagens })); } catch (Exception ex) { return(StatusCode(500, new { Mensagens = ex.Message })); } }
public void AtualizarPasso(Guid guidSalvado, PassoViewModel passoVM) { var passoAtual = _passo.SelecionarPorId(passoVM.IdPasso); var salvado = _service.SelecionarPorId(guidSalvado); salvado.PassoEtapa = _passo.SelecionarPorId((int)salvado.PassoEtapa.Id); if (passoAtual.Ordem <= salvado.PassoEtapa.Ordem) { return; } var historico = new SalvadoHistorico(); historico.DescricaoEvento = $"[Atualização][De {salvado.PassoEtapa.Descricao} para {passoAtual.Descricao} - {DateTime.Now}] "; historico.DescricaoEvento += passoVM.Observacao; historico.IdSalvado = (int)salvado.Id; historico.IdUsuario = passoVM.IdUsuario ?? (int)_usuario.SelecionarPorId((Guid)passoVM.GuidUsuario).Id; historico.DataEvento = DateTime.Now; salvado.PassoEtapa = passoAtual; //pegar o proximo passo var passoFuturo = _passo.SelecionarProximoPasso(++passoAtual.Ordem, (int)passoAtual.Workflow.Id); if (passoFuturo != null) { int idEmpresa = _service.SelecionarIdDependendoTipoEmpresa(passoFuturo.TipoEmpresaResponsavel, salvado.Guid); (string header, string body, int status)retorno = EnviaEmailAcordoEmpresa(passoFuturo.TipoEmpresaResponsavel, idEmpresa, (int)passoFuturo.Id, passoFuturo.DescricaoParaFazer, salvado.Guid); } else { var html = EmailSendGrid.LayoutProcessoFinalizado(salvado); var seguradora = _seguradora.SelecionarPorId((int)salvado.Seguradora.Id); _email.Envia(seguradora.Email, "Nenhuma ação necessária", html); } _service.IncluirHistorico(historico); _service.Atualizar(salvado); }