예제 #1
0
        public RetornoModel <CompraModel> ValidarCotasPorQuantidade(CompraModel compra, List <Carrinho> carrinhoItensValidar)
        {
            RetornoModel <CompraModel> retorno = new RetornoModel <CompraModel>();

            List <IngressoRapido.Lib.CotaItemValidar> cotaItemValidarList = new List <IngressoRapido.Lib.CotaItemValidar>();

            IngressoRapido.Lib.CarrinhoLista carrinhoItens = new IngressoRapido.Lib.CarrinhoLista().CarregarDadosPorClienteID(compra.ClienteID, compra.SessionID, IngressoRapido.Lib.CarrinhoLista.Status.Reservado, 0);

            foreach (var item in carrinhoItensValidar.Where(x => x.CotaItemObject != null && !(x.CotaVerificada ?? false)))
            {
                var CotaItemValidar = new IngressoRapido.Lib.CotaItemValidar()
                {
                    IngressoID    = item.IngressoID.Value,
                    Nominal       = item.CotaItemObject.NominalAsBool,
                    Quantidade    = item.CotaItemObject.QuantidadeAsBool,
                    TemParceiro   = item.CotaItemObject.Parceiro != null,
                    Codigo        = item.CotaItemObject.CodigoPromocional,
                    ClienteExiste = item.ClienteID > 0,
                    Mensagem      = item.CotaItemObject.Mensagem,
                    Dono          = new EstruturaDonoIngressoSite()
                };

                item.CotaVerificada = item.CotaItemObject.QuantidadeAsBool && (!item.CotaItemObject.NominalAsBool && !item.CotaItemObject.ValidaBinAsBool && !item.CotaItemObject.ValidaCodigoPromocional);

                cotaItemValidarList.Add(CotaItemValidar);
            }

            //Chama a verificação do IRLib
            cotaItemValidarList = carrinhoItens.VerificarCotaPorQuantidade(cotaItemValidarList);

            //seta os valores do carrinho com os valores retornados da validação da cota
            foreach (var item in carrinhoItensValidar.Where(x => x.CotaItemObject != null))
            {
                var cotaValidada = cotaItemValidarList.Where(x => x.IngressoID == item.IngressoID).FirstOrDefault();
                if (cotaValidada != null)
                {
                    item.CotaVerificada = item.CotaItemObject.Verificado && cotaValidada.TipoRetorno == 0;
                    item.CotaItemObject.QuantidadeValidada = cotaValidada.TipoRetorno == 0;
                    item.CotaItemObject.Mensagem           = cotaValidada.Mensagem;
                    item.DonoID  = cotaValidada.DonoID;
                    item.DonoCPF = cotaValidada.Dono.CPF;
                }
            }

            var cotaItemObjects = carrinhoItensValidar.Select(s => s.CotaItemObject).ToList();

            var cotasErro          = cotaItemObjects.Where(w => !string.IsNullOrEmpty(w.Mensagem)).ToList();
            var mensagensCotasErro = string.Join <string>(" ", cotasErro.Select(s => s.Mensagem).Distinct());

            retorno.Retorno  = AtualizarStatusPendente(compra);
            retorno.Sucesso  = cotaItemObjects.All(x => (x.QuantidadeValidada));
            retorno.Mensagem = retorno.Sucesso ? "OK" : mensagensCotasErro;
            return(retorno);
        }
예제 #2
0
        /// <summary>
        /// Método que valida as cotas
        /// </summary>
        /// <returns></returns>
        public RetornoModel <CompraModel> ValidarCotas(CompraModel compra)
        {
            RetornoModel <CompraModel> retorno = new RetornoModel <CompraModel>();


            List <IngressoRapido.Lib.CotaItemValidar> cotaItemValidarList = new List <IngressoRapido.Lib.CotaItemValidar>();

            IngressoRapido.Lib.CarrinhoLista carrinhoItens = new IngressoRapido.Lib.CarrinhoLista().CarregarDadosPorClienteID(compra.ClienteID, compra.SessionID, IngressoRapido.Lib.CarrinhoLista.Status.Reservado, 0);

            foreach (var item in compra.CarrinhoItens.Where(x => x.CotaItemObject != null && !(x.CotaVerificada ?? false)))
            {
                item.CotaVerificada = true;
                var CotaItemValidar = new IngressoRapido.Lib.CotaItemValidar()
                {
                    IngressoID    = item.IngressoID.Value,
                    Nominal       = item.CotaItemObject.NominalAsBool,
                    TemParceiro   = item.CotaItemObject.Parceiro != null,
                    Codigo        = item.CotaItemObject.CodigoPromocional,
                    ClienteExiste = item.ClienteID > 0,
                    Mensagem      = item.CotaItemObject.Mensagem,
                    Dono          = new EstruturaDonoIngressoSite()
                };

                if (item.CotaItemObject.NominalAsBool)
                {
                    if (item.CotaItemObject.DonoIngresso == null)
                    {
                        item.CotaItemObject.DonoIngresso = new tDonoIngresso();
                    }

                    //Se a cota for nominal deve validar todos os campos abaixo
                    if ((item.CotaItemObject.Obrigatoriedade.NomeAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.Nome)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "O nome é obrigatório.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }
                    else if ((item.CotaItemObject.Obrigatoriedade.CPFAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.CPF)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "O CPF é obrigatório.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }
                    else if ((item.CotaItemObject.Obrigatoriedade.NomeResponsavelAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.NomeResponsavel)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "O nome do responsável é obrigatório.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }
                    else if ((item.CotaItemObject.Obrigatoriedade.CPFResponsavelAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.CPFResponsavel)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "O CPF do responsável é obrigatório.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }
                    else if ((item.CotaItemObject.Obrigatoriedade.TelefoneAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.Telefone)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "O telefone é obrigatório.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }
                    else if ((item.CotaItemObject.Obrigatoriedade.RGAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.RG)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "O RG é obrigatório.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }
                    else if ((item.CotaItemObject.Obrigatoriedade.DataNascimentoAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.DataNascimento)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "A data de nascimento é obrigatória.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }
                    else if ((item.CotaItemObject.Obrigatoriedade.EmailAsBool) && (string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.Email)))
                    {
                        CotaItemValidar.Mensagem = item.CotaItemObject.Mensagem = "O email é obrigatório.";
                        item.CotaVerificada      = item.CotaItemObject.Verificado = false;
                    }

                    if (!string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.Telefone))
                    {
                        item.CotaItemObject.DonoIngresso.Telefone = item.CotaItemObject.DonoIngresso.Telefone.Replace("(", "").Replace(")", "").Replace("-", "").Replace(" ", "");
                    }
                    if (!string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.CPF))
                    {
                        item.CotaItemObject.DonoIngresso.CPF = item.CotaItemObject.DonoIngresso.CPF.Replace("-", "").Replace(".", "");
                    }
                    if (!string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.CPFResponsavel))
                    {
                        item.CotaItemObject.DonoIngresso.CPFResponsavel = item.CotaItemObject.DonoIngresso.CPFResponsavel.Replace("-", "").Replace(".", "");
                    }
                    if (!string.IsNullOrEmpty(item.CotaItemObject.DonoIngresso.DataNascimento))
                    {
                        item.CotaItemObject.DonoIngresso.DataNascimento = item.CotaItemObject.DonoIngresso.DataNascimentoAsDateTime.Value.ToString("dd/MM/yyyy");
                    }

                    if (item.CotaVerificada ?? false)
                    {
                        CotaItemValidar.DonoID = item.CotaItemObject.DonoIngresso.ID;
                        CotaItemValidar.Dono   = new IRLib.ClientObjects.EstruturaDonoIngressoSite()
                        {
                            CPF             = item.CotaItemObject.DonoIngresso.CPF,
                            CPFResponsavel  = item.CotaItemObject.CPFResponsavel,
                            DataNascimento  = item.CotaItemObject.DonoIngresso.DataNascimento,
                            Email           = item.CotaItemObject.DonoIngresso.Email,
                            Nome            = item.CotaItemObject.DonoIngresso.Nome,
                            NomeResponsavel = item.CotaItemObject.DonoIngresso.NomeResponsavel,
                            RG       = item.CotaItemObject.DonoIngresso.RG,
                            Telefone = item.CotaItemObject.DonoIngresso.Telefone
                        };
                    }
                }
                //Adiciona um item na lista de cotas a serem validados com valores do item atual caso a Cota esteja válida
                if (item.CotaVerificada ?? false)
                {
                    cotaItemValidarList.Add(CotaItemValidar);
                }
            }
            //Chama a verificação do IRLib
            cotaItemValidarList = carrinhoItens.VerificarCota(cotaItemValidarList);

            //seta os valores do carrinho com os valores retornados da validação da cota
            foreach (var item in compra.CarrinhoItens.Where(x => x.CotaItemObject != null))
            {
                var cotaValidada = cotaItemValidarList.Where(x => x.IngressoID == item.IngressoID).FirstOrDefault();
                if (cotaValidada != null)
                {
                    item.CotaVerificada          = item.CotaItemObject.Verificado = cotaValidada.TipoRetorno == 0;
                    item.CotaItemObject.Mensagem = cotaValidada.Mensagem;
                    item.DonoID  = cotaValidada.DonoID;
                    item.DonoCPF = cotaValidada.Dono.CPF;
                }
            }

            var cotasErro          = compra.CarrinhoItens.Select(s => s.CotaItemObject).ToList().Where(w => !string.IsNullOrEmpty(w.Mensagem)).ToList();
            var mensagensCotasErro = string.Join <string>(" ", cotasErro.Select(s => s.Mensagem).Distinct());

            retorno.Retorno  = AtualizarStatusPendente(compra);
            retorno.Sucesso  = compra.CarrinhoItens.All(x => (x.CotaVerificada ?? false));
            retorno.Mensagem = retorno.Sucesso ? "OK" : mensagensCotasErro;
            return(retorno);
        }