Пример #1
0
        public IGerarDesconto GetCalculoDescontoTipoConta(TipoContaCliente tipoConta)
        {
            IGerarDesconto calcular;

            switch (tipoConta)
            {
            case TipoContaCliente.Comum:
                calcular = new GerarDescontoTipoClienteComum();
                break;

            case TipoContaCliente.Diferenciado:
                calcular = new GerarDescontoTipoClienteDiferenciado();
                break;

            case TipoContaCliente.Especial:
                calcular = new GerarDescontoTipoClienteEspecial();
                break;

            case TipoContaCliente.VIP:
                calcular = new GerarDescontoTipoClienteVIP();
                break;

            default:
                throw new NotImplementedException();
            }

            return(calcular);
        }
        public decimal AplicarDesconto(decimal valorProduto, TipoContaCliente tipoConta, int anosFidelidade)
        {
            decimal precoComDesconto = 0;

            precoComDesconto = _gerarDescontoFactory.GetCalculoDescontoTipoConta(tipoConta).CalcularDescontoTotal(valorProduto);
            precoComDesconto = _calculaDescontoFidelidade.AplicarDescontoFidelidade(precoComDesconto, anosFidelidade);

            return(precoComDesconto);
        }