public void EnviarAdendoParaAprovacao(int id) { var adendoBusca = _oportunidadeRepositorio.ObterAdendoPorId(id); if (adendoBusca == null) { _logger.Info($"Adendo {adendoBusca.Id} não encontrado"); } var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(adendoBusca.OportunidadeId); if (oportunidadeBusca == null) { _logger.Info($"Oportunidade {oportunidadeBusca.Id} não encontrada"); } if (oportunidadeBusca.OportunidadeProposta == null || oportunidadeBusca.OportunidadeProposta.ModeloId == 0) { _logger.Info($"A Oportunidade {oportunidadeBusca.Id} não possui nenhum Modelo Vinculado"); } var modelo = _modeloRepositorio.ObterModeloPorId(oportunidadeBusca.OportunidadeProposta.ModeloId); var aprovacoes = _workflowRepositorio.ObterAprovacoesPorOportunidade(oportunidadeBusca.Id, Processo.ADENDO); if (aprovacoes.Any() && adendoBusca.StatusAdendo == StatusAdendo.ENVIADO) { _logger.Info($"Já existe uma aprovação pendente para este Adendo {adendoBusca.Id}"); } var token = Autenticador.Autenticar(); if (token == null) { _logger.Info("Não foi possível se autenticar no serviço de Workflow"); } var workflow = new WorkflowService(token); IEnumerable <dynamic> clientes = null; if (adendoBusca.TipoAdendo == TipoAdendo.INCLUSAO_SUB_CLIENTE) { clientes = _oportunidadeRepositorio .ObterAdendoSubClientesInclusao(adendoBusca.Id) .Select(c => $"{c.Descricao} ({ c.Documento})"); } if (adendoBusca.TipoAdendo == TipoAdendo.INCLUSAO_GRUPO_CNPJ) { clientes = _oportunidadeRepositorio .ObterAdendoGruposCNPJ(adendoBusca.Id, AdendoAcao.INCLUSAO) .Select(c => $"{c.Descricao} ({ c.Documento})"); } if (adendoBusca.TipoAdendo == TipoAdendo.EXCLUSAO_SUB_CLIENTE) { clientes = _oportunidadeRepositorio .ObterAdendoSubClientesExclusao(adendoBusca.Id) .Select(c => $"{c.Descricao} ({ c.Documento})"); } if (adendoBusca.TipoAdendo == TipoAdendo.EXCLUSAO_GRUPO_CNPJ) { clientes = _oportunidadeRepositorio .ObterAdendoGruposCNPJ(adendoBusca.Id, AdendoAcao.EXCLUSAO) .Select(c => $"{c.Descricao} ({ c.Documento})"); } if (adendoBusca.TipoAdendo == TipoAdendo.FORMA_PAGAMENTO) { var adendoFormaPagamento = _oportunidadeRepositorio .ObterAdendoFormaPagamento(adendoBusca.Id) .FormaPagamento .ToName(); var lst = new List <string> { adendoFormaPagamento }; clientes = lst; } if (adendoBusca.TipoAdendo == TipoAdendo.ALTERACAO_VENDEDOR) { var adendoVendedor = _oportunidadeRepositorio .ObterAdendoVendedor(adendoBusca.Id).VendedorId; var vendedor = _vendedorRepositorio.ObterVendedorPorId(adendoVendedor); var lst = new List <string> { vendedor.Nome }; clientes = lst; } var oportunidadeDetalhes = _oportunidadeRepositorio.ObterDetalhesOportunidade(oportunidadeBusca.Id); var campos = new { OportunidadeId = oportunidadeBusca.Id, Descricao = $"A-{adendoBusca.Id}", DescricaoOportunidade = oportunidadeBusca.Descricao, oportunidadeDetalhes.Conta, oportunidadeDetalhes.TabelaId, TipoAdendo = adendoBusca.TipoAdendo.ToName(), StatusAdendo = adendoBusca.StatusAdendo.ToName(), adendoBusca.DataCadastro, adendoBusca.CriadoPor, TipoOperacao = modelo.TipoOperacao.ToString(), Clientes = clientes != null?string.Join(",", clientes) : string.Empty }; var retorno = workflow.EnviarParaAprovacao( new CadastroWorkflow(Processo.ADENDO, 1, adendoBusca.Id, User.ObterLogin(), User.ObterNome(), User.ObterEmail(), JsonConvert.SerializeObject(campos))); if (retorno == null) { throw new Exception("Nenhuma resposta do serviço de Workflow"); } if (retorno.sucesso == false) { _logger.Info(retorno.mensagem); } _workflowRepositorio.IncluirEnvioAprovacao(new EnvioWorkflow(oportunidadeBusca.Id, Processo.ADENDO, retorno.protocolo, retorno.mensagem, User.ObterId())); _oportunidadeRepositorio.AtualizarStatusAdendo(StatusAdendo.ENVIADO, adendoBusca.Id); _logger.Info($"Adendo {adendoBusca.Id} enviado para Aprovação"); }