Exemplo n.º 1
0
        public List <EstruturaInconsistenciaIngressoLog> BuscaInconsistenciasIngressoLog()
        {
            try
            {
                EstruturaInconsistenciaIngressoLog        item;
                List <EstruturaInconsistenciaIngressoLog> retorno  = new List <EstruturaInconsistenciaIngressoLog>();
                List <EstruturaInconsistenciaIngressoLog> itensAux = new List <EstruturaInconsistenciaIngressoLog>();
                //essa tabela tem que ser populada previamente com os dados necessários
                String query = "SELECT  IngressoID,IngressoLogID,AcaoLog,StatusIngresso FROM IngressosLogInconsistencia (NOLOCK)";

                bd.Consulta(query);
                int ingressoIDAtual = 0, ingressoIDAnterior = 0;
                while (bd.Consulta().Read())
                {
                    ingressoIDAtual = bd.LerInt("IngressoID");
                    //Primeiro popula o objeto aux com todos os logs do ingressoID. Até chegar no próximo ingresso.
                    if (ingressoIDAtual == ingressoIDAnterior || ingressoIDAnterior == 0)
                    {
                        item                = new EstruturaInconsistenciaIngressoLog();
                        item.IngressoID     = ingressoIDAtual;
                        item.IngressoLogID  = bd.LerInt("IngressoLogID");
                        item.AcaoLog        = Convert.ToChar(bd.LerString("AcaoLog"));
                        item.StatusIngresso = Convert.ToChar(bd.LerString("StatusIngresso"));
                        itensAux.Add(item);
                    }
                    else
                    {
                        //mudou o ingresso:
                        // 1. Verifica as regras
                        // 2. Se tem inconsistencia insere na tabela retorno.
                        // 3. Se não tem passa pro proximo item.

                        if (!ValidaInconsistencia(itensAux))
                        {
                            retorno.AddRange(itensAux);
                        }

                        //limpa o objeto para passar para o próximo
                        itensAux.Clear();

                        //Adiciona o item atual
                        item                = new EstruturaInconsistenciaIngressoLog();
                        item.IngressoID     = ingressoIDAtual;
                        item.IngressoLogID  = bd.LerInt("IngressoLogID");
                        item.AcaoLog        = Convert.ToChar(bd.LerString("AcaoLog"));
                        item.StatusIngresso = Convert.ToChar(bd.LerString("StatusIngresso"));
                        itensAux.Add(item);
                    }

                    ingressoIDAnterior = ingressoIDAtual;
                }
                return(retorno);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            { bd.Fechar(); }
        }
Exemplo n.º 2
0
        public List <EstruturaInconsistenciaIngressoLog> BuscaInconsistenciasPrecoID()
        {
            List <EstruturaInconsistenciaIngressoLog> retorno = new List <EstruturaInconsistenciaIngressoLog>();
            EstruturaInconsistenciaIngressoLog        item;
            List <EstruturaInconsistenciaIngressoLog> itensAux = new List <EstruturaInconsistenciaIngressoLog>();
            String query = "SELECT IngressoID,IngressoLogID,Acao,IngressoPreco,LogPreco FROM IngressosLogInconsistenciaPreco (NOLOCK)";

            bd.Consulta(query);
            int ingressoIDAtual = 0, ingressoIDAnterior = 0;


            while (bd.Consulta().Read())
            {
                ingressoIDAtual = bd.LerInt("IngressoID");
                //Primeiro popula o objeto aux com todos os logs do ingressoID. Até chegar no próximo ingresso.
                if (ingressoIDAtual == ingressoIDAnterior || ingressoIDAnterior == 0)
                {
                    item                 = new EstruturaInconsistenciaIngressoLog();
                    item.IngressoID      = ingressoIDAtual;
                    item.IngressoLogID   = bd.LerInt("IngressoLogID");
                    item.AcaoLog         = Convert.ToChar(bd.LerString("Acao"));
                    item.IngressoPrecoID = bd.LerInt("IngressoPreco");
                    item.LogPrecoID      = bd.LerInt("LogPreco");
                    itensAux.Add(item);
                    if (item.AcaoLog == Convert.ToChar(IngressoLog.CANCELAR))
                    {
                        itensAux.Clear();//Remove todas as ações anteriores a um cancelamento
                        ingressoIDAnterior = 0;
                    }
                }
                else
                {
                    //mudou o ingresso:
                    // 1. Verifica na lista se existe algum preco diferente entre a log e a ingresso
                    // 2. Se tem inconsistencia insere na tabela retorno.
                    // 3. Se não tem passa pro proximo item.
                    foreach (EstruturaInconsistenciaIngressoLog registro in itensAux)
                    {
                        if (registro.IngressoPrecoID != registro.LogPrecoID && (registro.AcaoLog != 'D' && registro.AcaoLog != 'B'))
                        {
                            retorno.AddRange(itensAux);
                            //limpa o objeto para passar para o próximo

                            break;
                        }
                    }
                    itensAux.Clear();

                    //Adiciona o item atual
                    item                 = new EstruturaInconsistenciaIngressoLog();
                    item.IngressoID      = ingressoIDAtual;
                    item.IngressoLogID   = bd.LerInt("IngressoLogID");
                    item.AcaoLog         = Convert.ToChar(bd.LerString("Acao"));
                    item.IngressoPrecoID = bd.LerInt("IngressoPreco");
                    item.LogPrecoID      = bd.LerInt("LogPreco");
                    itensAux.Add(item);
                }

                ingressoIDAnterior = ingressoIDAtual;
            }



            return(retorno);
        }