コード例 #1
0
        /// <summary>
        /// Método que Verifica se pode ser inserido um valeIngresso em uma compra.
        /// </summary>
        /// <param name="compra"></param>
        /// <param name="valeIngresso"></param>
        /// <returns></returns>
        public RetornoModel <CompraModel> VerificarCompra(CompraModel compra, tValeIngresso valeIngresso = null)
        {
            RetornoModel <CompraModel> retorno = new RetornoModel <CompraModel>();

            retorno.Sucesso  = true;
            retorno.Mensagem = "Vale Ingresso pode ser inserido.";
            retorno.Retorno  = compra;
            //
            if (compra.CarrinhoItens != null && compra.CarrinhoItens.Count(x => x.CotaItemObject != null && x.CotaItemObject.ValidaBinAsBool) != 0)
            {
                retorno.Sucesso  = false;
                retorno.Mensagem = "O carrinho possui um item com cota bin, por isso não podem ser adicionados VIRs.";
            }
            //Teste de valor
            else if (compra.Total == null || compra.Total.ValorTotal == 0)
            {
                retorno.Sucesso  = false;
                retorno.Mensagem = "O carrinho está com valor total 0, por isso não podem ser adicionados VIRs.";
            }
            //teste que veirifica se existe um vale não acumulativo inserido
            else if (compra.ValeIngressos != null && compra.ValeIngressos.Count(x => !(x.ValeIngressoTipo.AcumulativoAsBool)) > 0)
            {
                retorno.Sucesso  = false;
                retorno.Mensagem = "A compra possui um vale ingresso não acumulativo, por isso não podem se adicionados VIRs.";
            }

            else if (valeIngresso != null)
            {
                //verifica se o VIR é não acumulativo e se já tem VIRs na compra
                if (!(valeIngresso.ValeIngressoTipo.AcumulativoAsBool) && compra.ValeIngressos.Count > 0)
                {
                    retorno.Sucesso  = false;
                    retorno.Mensagem = "A compra possui um ou mais vale(s) ingresso(s) e o vale ingresso que está sendo inserido não é acumulativo, por isso não pode ser adicionado.";
                }
                //Faz uma cópia do objeto compra adicionando o vale ingresso passado no parametro. Se o VIR adicionado não afetar o valor da compra não deixa inserir
                else
                {
                    CarrinhoBO  carrinhoBO = new CarrinhoBO(ado);
                    CompraModel compraAux  = new CompraModel();
                    compraAux.CopyFrom(compra);
                    compraAux.ValeIngressos = compra.ValeIngressos.ToList();
                    compraAux.ValeIngressos.Add(valeIngresso);
                    carrinhoBO.CalcularValores(compraAux);
                    if (compra.Total.ValorTotal == compraAux.Total.ValorTotal)
                    {
                        retorno.Sucesso  = false;
                        retorno.Mensagem = "O VIR que está sendo adicionado não altera o valor total da compra, por isso ele não pode ser adicionado.";
                    }
                }
            }

            return(retorno);
        }