/// <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); }