Example #1
0
        public int IncluirEnvioAprovacao(EnvioWorkflow workflow)
        {
            using (OracleConnection con = new OracleConnection(Config.StringConexao()))
            {
                var parametros = new DynamicParameters();

                parametros.Add(name: "ProcessoId", value: workflow.ProcessoId, direction: ParameterDirection.Input);
                parametros.Add(name: "ProcessoFilhoId", value: workflow.ProcessoFilhoId, direction: ParameterDirection.Input);
                parametros.Add(name: "Protocolo", value: workflow.Protocolo, direction: ParameterDirection.Input);
                parametros.Add(name: "Mensagem", value: workflow.Mensagem, direction: ParameterDirection.Input);
                parametros.Add(name: "Processo", value: workflow.Processo, direction: ParameterDirection.Input);
                parametros.Add(name: "DataCadastro", value: DateTime.Now, direction: ParameterDirection.Input);
                parametros.Add(name: "CriadoPor", value: workflow.CriadoPor, direction: ParameterDirection.Input);

                parametros.Add(name: "Id", dbType: DbType.Int32, direction: ParameterDirection.Output);

                con.Execute(@"INSERT INTO 
                                CRM.TB_CRM_WORKFLOW 
                                (
                                    Id, 
                                    ProcessoId, 
                                    ProcessoFilhoId,
                                    Protocolo, 
                                    Mensagem, 
                                    Processo,
                                    DataCadastro, 
                                    CriadoPor
                                ) VALUES (
                                    CRM.SEQ_CRM_WORKFLOW.NEXTVAL, 
                                    :ProcessoId, 
                                    :ProcessoFilhoId,
                                    :Protocolo,
                                    :Mensagem,
                                    :Processo,
                                    :DataCadastro,
                                    :CriadoPor) RETURNING Id INTO :Id", parametros);

                return(parametros.Get <int>("Id"));
            }
        }
Example #2
0
        public void EnviarOportunidadeParaAprovacao(int id, string criadoPor)
        {
            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(id);

            if (oportunidadeBusca == null)
            {
                _logger.Info($"Oportunidade {oportunidadeBusca.Id} não encontrada");
            }

            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);

            var oportunidadeDetalhes = _oportunidadeRepositorio.ObterDetalhesOportunidade(id);

            var usuario = _usuarioRepositorio.ObterUsuarioPorId(criadoPor.ToInt());

            var campos = new
            {
                oportunidadeId = oportunidadeDetalhes.Id,
                oportunidadeDetalhes.Descricao,
                oportunidadeDetalhes.Identificacao,
                ContaId      = oportunidadeDetalhes.Conta,
                ContatoId    = oportunidadeDetalhes.Contato,
                MercadoriaId = oportunidadeDetalhes.Mercadoria,
                oportunidadeDetalhes.Aprovada,
                oportunidadeDetalhes.DataFechamento,
                oportunidadeDetalhes.TabelaId,
                oportunidadeDetalhes.Probabilidade,
                oportunidadeDetalhes.SucessoNegociacao,
                oportunidadeDetalhes.ClassificacaoCliente,
                oportunidadeDetalhes.Segmento,
                oportunidadeDetalhes.EstagioNegociacao,
                oportunidadeDetalhes.StatusOportunidade,
                oportunidadeDetalhes.MotivoPerda,
                oportunidadeDetalhes.TipoDeProposta,
                oportunidadeDetalhes.TipoServico,
                oportunidadeDetalhes.TipoNegocio,
                oportunidadeDetalhes.TipoOperacaoOportunidade,
                oportunidadeDetalhes.RevisaoId,
                oportunidadeDetalhes.Observacao,
                oportunidadeDetalhes.FaturamentoMensalLCL,
                oportunidadeDetalhes.FaturamentoMensalFCL,
                oportunidadeDetalhes.VolumeMensal,
                oportunidadeDetalhes.CIFMedio,
                oportunidadeDetalhes.PremioParceria,
                CriadoPor = usuario.Login,
                oportunidadeDetalhes.TipoOperacao,
                oportunidadeDetalhes.Vendedor,
                oportunidadeDetalhes.FormaPagamento,
                DataInicio  = oportunidadeDetalhes.DataInicio.DataFormatada(),
                DataTermino = oportunidadeDetalhes.DataTermino.DataFormatada()
            };

            var retorno = workflow.EnviarParaAprovacao(
                new CadastroWorkflow(Processo.OPORTUNIDADE, 1, oportunidadeBusca.Id, usuario.Login, usuario.Nome, usuario.Email, JsonConvert.SerializeObject(campos)));

            if (retorno == null)
            {
                throw new Exception("Nenhuma resposta do serviço de Workflow");
            }

            if (retorno.sucesso == false)
            {
                _logger.Info(retorno.mensagem);
            }

            var oportunidadeWorkflow = new EnvioWorkflow(oportunidadeBusca.Id, Processo.OPORTUNIDADE, retorno.protocolo, retorno.mensagem, usuario.Id);

            _workflowRepositorio.IncluirEnvioAprovacao(oportunidadeWorkflow);

            if (oportunidadeBusca.StatusOportunidade != StatusOportunidade.CANCELADA)
            {
                oportunidadeBusca.StatusOportunidade = StatusOportunidade.ENVIADO_PARA_APROVACAO;
            }

            _oportunidadeRepositorio.AtualizarStatusOportunidade(oportunidadeBusca.StatusOportunidade, oportunidadeBusca.Id);
        }