Esempio n. 1
0
        public Response IntregrarFichasChronos(int oportunidadeId, int fichaId)
        {
            try
            {
                var oportunidadeBusca = _oportunidadeDAO.ObterOportunidadePorId(oportunidadeId);

                if (oportunidadeBusca == null)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"Oportunidade {oportunidadeId} não encontrada"
                           }
                }
                ;

                if (oportunidadeBusca.TabelaId == 0)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"Oportunidade {oportunidadeId} não possui nenhuma Tabela vinculada"
                           }
                }
                ;

                var fichaBusca = _oportunidadeDAO.ObterFichaFaturamentoPorId(fichaId);

                if (fichaBusca == null)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"Ficha {fichaId} não encontrada"
                           }
                }
                ;

                if (fichaBusca.StatusFichaFaturamento != StatusFichaFaturamento.APROVADO && fichaBusca.StatusFichaFaturamento != StatusFichaFaturamento.EM_APROVACAO)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"O Status atual da Ficha não permite integrações com o Chronos"
                           }
                }
                ;

                if (!string.IsNullOrEmpty(fichaBusca.FaturadoContraDocumento))
                {
                    var faturadoContraChronos = _tabelasDAO.ConsultaParceiro(fichaBusca.FaturadoContraDocumento);

                    if (faturadoContraChronos == null)
                    {
                        var parceiro = new Parceiro
                        {
                            RazaoSocial  = fichaBusca.FaturadoContraDescricao,
                            NomeFantasia = fichaBusca.FaturadoContraFantasia,
                            CNPJ         = fichaBusca.FaturadoContraDocumento
                        };

                        fichaBusca.FaturadoContraId = _tabelasDAO.CadastrarParceiro(parceiro);
                    }
                    else
                    {
                        fichaBusca.FaturadoContraId = faturadoContraChronos.Id;
                    }
                }

                if (!string.IsNullOrEmpty(fichaBusca.FontePagadoraDocumento))
                {
                    var fontePagadoraChronos = _tabelasDAO.ConsultaParceiro(fichaBusca.FontePagadoraDocumento);

                    if (fontePagadoraChronos == null)
                    {
                        var parceiro = new Parceiro
                        {
                            RazaoSocial  = fichaBusca.FontePagadoraDescricao,
                            NomeFantasia = fichaBusca.FontePagadoraFantasia,
                            CNPJ         = fichaBusca.FontePagadoraDocumento
                        };

                        fichaBusca.FontePagadoraId = _tabelasDAO.CadastrarParceiro(parceiro);
                    }
                    else
                    {
                        fichaBusca.FontePagadoraId = fontePagadoraChronos.Id;
                    }
                }

                var ehFichaGeral = (oportunidadeBusca.ContaId == fichaBusca.ContaId);

                fichaBusca.FichaGeral = ehFichaGeral;

                var subClientes = _oportunidadeDAO.ObterSubClientesOportunidade(oportunidadeBusca.Id);

                fichaBusca.SubClientes.AddRange(subClientes);

                _oportunidadeDAO.IntegrarFontePagadora(fichaBusca);

                return(new Response
                {
                    Sucesso = true,
                    Mensagem = $"Ficha de Faturamento integrada com sucesso!"
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    Sucesso = true,
                    Mensagem = ex.Message
                });
            }
        }