Exemplo n.º 1
0
        public static void ValidaPromocao(Pedido pedido, Promocao promocao)
        {
            List <PedidoItem> itens = pedido.Itens;



            foreach (var crit in promocao.Criterios)
            {
                switch (crit.Criterio)
                {
                case eCriterio.ProdutoUnico:
                    itens = itens.Where(c => c.ProdutoId == Convert.ToInt32(crit.Valor)).ToList();
                    break;

                case eCriterio.ProdutoContem:
                    break;

                case eCriterio.GrupoUnico:
                    itens = itens.Where(c => c.GrupoId == Convert.ToInt32(crit.Valor)).ToList();
                    break;

                case eCriterio.GrupoContem:
                    break;

                case eCriterio.QuantidadeMaiorQue:
                    if (itens.Count <= Convert.ToInt32(crit.Valor))
                    {
                        itens.Clear();
                    }
                    break;

                case eCriterio.QuantidadeMenorQue:
                    if (itens.Count > Convert.ToInt32(crit.Valor))
                    {
                        itens.Clear();
                    }
                    break;

                default:
                    break;
                }

                if (crit.Criterio == eCriterio.GrupoUnico)
                {
                    itens = itens.Where(c => c.GrupoId == Convert.ToInt32(crit.Valor)).ToList();
                }
                else if (crit.Criterio == eCriterio.ProdutoUnico)
                {
                    itens = itens.Where(c => c.ProdutoId == Convert.ToInt32(crit.Valor)).ToList();
                }
                else if (crit.Criterio == eCriterio.QuantidadeMaiorQue && itens.Count <= Convert.ToInt32(crit.Valor))
                {
                    itens.Clear();
                }
                else if (crit.Criterio == eCriterio.QuantidadeMenorQue && itens.Count > Convert.ToInt32(crit.Valor))
                {
                    itens.Clear();
                }
            }

            if (itens.Count == 0)
            {
                return;
            }

            if (promocao.Premio == ePremio.DescontoUnitarioDe)
            {
                pedido.Desconto = itens.Count * promocao.Valor;
            }
        }