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