示例#1
0
        public void AtualizarStatus(string id, int idWorkflow, int idProcesso, int status, WorkflowService workflow)
        {
            string SQL              = string.Empty;
            string SQLL             = string.Empty;
            string SQLFichas        = string.Empty;
            string SQLFichasRevisao = string.Empty;
            int    oportunidadeId   = 0;
            int    fichaRevisadaId  = 0;

            SQLL = "";
            logger.Info("Lendo Fila  : IdProcesso" + idProcesso.ToString() + " Status " + status.ToString() + " ID " + id.ToString());
            // Oportunidade
            if (idProcesso == 1 || idProcesso == 9)
            {
                // Aprovada
                if (status == 2)
                {
                    var revisao = OportunidadeRevisada(id);

                    if (!string.IsNullOrEmpty(revisao))
                    {
                        if (Int32.TryParse(revisao, out int resultado))
                        {
                            if (resultado > 0)
                            {
                                AtualizarOportunidadeRevisada(resultado);
                            }
                        }
                    }

                    // StatusOportunidade = 1 (Ativa)
                    // StatusOportunidade = 2 (Cancelado)
                    // SucessoNegociacao = 4 (Ganho)
                    // EstagioNegociacao = 4 (Ganho)
                    //SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADES SET Aprovada = 1, StatusOportunidade = 1, SucessoNegociacao = 4 WHERE Id = :Id AND StatusOportunidade <> 2";

                    SQL = @"UPDATE CRM.TB_CRM_OPORTUNIDADES 
                                SET Aprovada = CASE WHEN Cancelado = 1 THEN 0 ELSE 1 END, 
                                    StatusOportunidade = CASE WHEN Cancelado = 1 THEN 2 ELSE 1 END, 
                                    SucessoNegociacao = CASE WHEN Cancelado = 1 THEN SucessoNegociacao ELSE 4 END,
                                    EstagioNegociacao = CASE WHEN Cancelado = 1 THEN EstagioNegociacao ELSE 4 END
                            WHERE Id = :Id";

                    // StatusFichaFaturamento = 3 (Aprovado)
                    SQLFichas = "UPDATE TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 3 WHERE OportunidadeId = :Id AND StatusFichaFaturamento = 2";

                    ObterNumeroDeTabela(id, workflow);
                }

                // Rejeitada
                if (status == 3)
                {
                    // StatusOportunidade = 1 (Recusado)
                    SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADES " +
                          "       SET StatusOportunidade = CASE WHEN Cancelado = 1 THEN 1 ELSE 4 END, " +
                          "           Cancelado = CASE WHEN Cancelado = 1 THEN 0 ELSE Cancelado END, TabelaId = NULL " +
                          "  WHERE Id = :Id";

                    // StatusFichaFaturamento = 4 (Rejeitado)
                    SQLFichas = "UPDATE TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 4 WHERE OportunidadeId = :Id AND StatusFichaFaturamento = 2";
                }
            }

            // Fichas de Faturamento
            if (idProcesso == 2)
            {
                var fichaBusca = ObterFichaFaturamentoPorId(id);

                // Aprovada
                if (status == 2)
                {
                    // StatusFichaFaturamento = 3 (Aprovado)
                    SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 3 WHERE Id = :Id";

                    if (fichaBusca != null)
                    {
                        if (fichaBusca.RevisaoId > 0)
                        {
                            //SQLFichasRevisao
                            fichaRevisadaId = fichaBusca.RevisaoId;

                            SQLFichasRevisao = "UPDATE CRM.TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 6 WHERE Id = :FichaRevisaoId";
                        }
                    }
                }

                // Rejeitada
                if (status == 3)
                {
                    // StatusFichaFaturamento = 3 (Rejeitado)
                    SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 4 WHERE Id = :Id";

                    if (fichaBusca != null)
                    {
                        if (fichaBusca.RevisaoId > 0)
                        {
                            if (fichaBusca.RevisaoId > 0)
                            {
                                //SQLFichasRevisao
                                fichaRevisadaId = fichaBusca.RevisaoId;

                                SQLFichasRevisao = "UPDATE CRM.TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 6 WHERE Id = :FichaRevisaoId";
                            }
                        }
                    }
                }
            }

            // Prêmios de Parceria
            if (idProcesso == 3)
            {
                // Aprovada
                if (status == 2)
                {
                    var revisao = PremioRevisado(id);

                    if (!string.IsNullOrEmpty(revisao))
                    {
                        if (Int32.TryParse(revisao, out int resultado))
                        {
                            if (resultado > 0)
                            {
                                AtualizarPremioRevisado(resultado);
                            }
                        }
                    }

                    // StatusPremioParceria = 3 (Cadastrado)
                    SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADE_PREMIOS SET StatusPremioParceria = CASE WHEN Cancelado = 1 THEN 6 ELSE 3 END WHERE Id = :Id";
                }

                // Rejeitada
                if (status == 3)
                {
                    // StatusPremioParceria = 5 (Rejeitado)
                    // StatusPremioParceria = 3 (Cadastro)

                    SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADE_PREMIOS " +
                          "       SET StatusPremioParceria = CASE WHEN Cancelado = 1 THEN 3 ELSE 5 END, " +
                          "           Cancelado = CASE WHEN Cancelado = 1 THEN 0 ELSE Cancelado END " +
                          "  WHERE Id = :Id";
                }
            }

            // Adendos
            if (idProcesso == 4)
            {
                var adendoBusca = ObterAdendoPorId(id);

                // Aprovada
                if (status == 2)
                {
                    // StatusAdendo = 4 (Aprovado)
                    SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADE_ADENDOS SET StatusAdendo = 4 WHERE Id = :Id";
                    AtualizarAdendo(id);

                    if (adendoBusca != null)
                    {
                        oportunidadeId = adendoBusca.OportunidadeId;

                        if (adendoBusca.TipoAdendo == 2 || adendoBusca.TipoAdendo == 3)
                        {
                            if (adendoBusca.TipoAdendo == 2)
                            {
                                var formaPagamentoAdendo = ObterFormaPagamentoAdendo(adendoBusca.Id);

                                if (formaPagamentoAdendo == FormaPagamentoAdendo.FATURADO)
                                {
                                    SQLFichas = "UPDATE TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 3 WHERE OportunidadeId = :OportunidadeId AND StatusFichaFaturamento = 2";
                                }
                            }

                            if (adendoBusca.TipoAdendo == 3)
                            {
                                SQLFichas = "UPDATE TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 3 WHERE OportunidadeId = :OportunidadeId AND StatusFichaFaturamento = 2";
                            }
                        }
                    }
                }

                // Rejeitada
                if (status == 3)
                {
                    // StatusAdendo = 3 (Rejeitado)
                    SQL = "UPDATE CRM.TB_CRM_OPORTUNIDADE_ADENDOS SET StatusAdendo = 3 WHERE Id = :Id";

                    if (adendoBusca != null)
                    {
                        oportunidadeId = adendoBusca.OportunidadeId;

                        if (adendoBusca.TipoAdendo == 2 || adendoBusca.TipoAdendo == 3)
                        {
                            if (adendoBusca.TipoAdendo == 2)
                            {
                                var formaPagamentoAdendo = ObterFormaPagamentoAdendo(adendoBusca.Id);

                                if (formaPagamentoAdendo == FormaPagamentoAdendo.FATURADO)
                                {
                                    SQLFichas = "UPDATE TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 4 WHERE OportunidadeId = :OportunidadeId AND StatusFichaFaturamento = 2";
                                }
                            }

                            if (adendoBusca.TipoAdendo == 3)
                            {
                                SQLFichas = "UPDATE TB_CRM_OPORTUNIDADE_FICHA_FAT SET StatusFichaFaturamento = 4 WHERE OportunidadeId = :OportunidadeId AND StatusFichaFaturamento = 2";
                            }
                        }
                    }
                }
            }

            // Solicitações
            if (idProcesso == 5 || idProcesso == 6 || idProcesso == 7 || idProcesso == 8 || idProcesso == 10)
            {
                // Aprovada
                if (status == 2)
                {
                    // StatusSolicitacao = 3 (Aprovado)
                    SQL = "UPDATE CRM.TB_CRM_SOLICITACOES SET StatusSolicitacao = 3 WHERE Id = :Id";
                }

                // Rejeitada
                if (status == 3)
                {
                    // StatusSolicitacao = 4 (Rejeitado)
                    SQL = "UPDATE CRM.TB_CRM_SOLICITACOES SET StatusSolicitacao = 4 WHERE Id = :Id";
                }
            }

            //Carnelos em 30/12/20 - Consulta SPC
            if (idProcesso == 13)
            {
                logger.Info("Atualizando 13  IdProcesso" + idProcesso.ToString() + " Status " + status.ToString() + " ID " + id.ToString());

                if (status == 2)
                {
                    SQL = "UPDATE CRM.TB_CRM_SPC_CONSULTAS SET StatusAnaliseDeCredito = 3 WHERE ContaId = :Id";

                    SQLL = "UPDATE CRM.TB_CRM_SPC_LIMITE_CREDITO SET StatusLimiteCredito = 3 WHERE ContaId = :Id";
                }

                if (status == 3)
                {
                    SQL = "UPDATE CRM.TB_CRM_SPC_CONSULTAS SET validade= ADD_MONTHS(TRUNC(dataconsulta), 3),StatusAnaliseDeCredito = 4 WHERE ContaId = :Id";

                    SQLL = "UPDATE CRM.TB_CRM_SPC_LIMITE_CREDITO SET StatusLimiteCredito = 4 WHERE ContaId = :Id";
                }
            }

            //Carnelos em 30/12/20 - Limite de Credito
            if (idProcesso == 14)
            {
                logger.Info("Atualizando 14  IdProcesso" + idProcesso.ToString() + " Status " + status.ToString() + " ID " + id.ToString());
                if (status == 2)
                {
                    SQL = "UPDATE CRM.TB_CRM_SPC_LIMITE_CREDITO SET StatusLimiteCredito = 3 WHERE Id = :Id";
                }

                if (status == 3)
                {
                    SQL = "UPDATE CRM.TB_CRM_SPC_LIMITE_CREDITO SET StatusLimiteCredito = 4 WHERE Id = :Id";
                }
            }



            if (!string.IsNullOrEmpty(SQL))
            {
                using (OracleConnection con = new OracleConnection(stringConexao))
                {
                    var parametros = new DynamicParameters();

                    parametros.Add(name: "Id", value: id, direction: ParameterDirection.Input);
                    parametros.Add(name: "OportunidadeId", value: oportunidadeId, direction: ParameterDirection.Input);
                    parametros.Add(name: "FichaRevisaoId", value: fichaRevisadaId, direction: ParameterDirection.Input);

                    con.Execute(SQL, parametros);

                    if (!string.IsNullOrEmpty(SQLFichas))
                    {
                        con.Execute(SQLFichas, parametros);
                    }

                    if (!string.IsNullOrEmpty(SQLFichasRevisao))
                    {
                        con.Execute(SQLFichasRevisao, parametros);
                    }

                    if (!string.IsNullOrEmpty(SQLL))
                    {
                        con.Execute(SQLL, parametros);
                    }
                }

                workflow.EnviarRetornoRegistroAtualizado(idWorkflow);

                logger.Info("Status atualizado com sucesso");
            }
        }