public decimal AplicarDesconto(decimal precoProduto, StatusContaCliente statusContaCliente, int tempoDeContaEmAnos) { decimal precoAposDesconto = 0; switch (statusContaCliente) { case StatusContaCliente.NaoRegistrado: precoAposDesconto = new CalculaDescontoClienteNaoRegistrado().AplicaDescontoStatusConta(precoProduto); precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoProduto, tempoDeContaEmAnos); break; case StatusContaCliente.ClienteComum: // 2- Calcula o desconto por status de conta de cliente precoAposDesconto = new CalculaDescontoClienteComum().AplicaDescontoStatusConta(precoProduto); // 1- Calcula o desconto por fidelidade precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoProduto, tempoDeContaEmAnos); break; case StatusContaCliente.ClienteEspecial: // 2- Calcula o desconto por status de conta de cliente precoAposDesconto = new CalculaDescontoClienteEspecial().AplicaDescontoStatusConta(precoProduto); // 1- Calcula o desconto por fidelidade precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoProduto, tempoDeContaEmAnos); break; case StatusContaCliente.ClienteVip: // 2- Calcula o desconto por status de conta de cliente precoAposDesconto = new CalculoDescontoClienteVip().AplicaDescontoStatusConta(precoProduto); // 1- Calcula o desconto por fidelidade precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoProduto, tempoDeContaEmAnos); break; default: throw new NotImplementedException(); } return(precoAposDesconto); }
public decimal AplicarDesconto(decimal precoProduto, StatusContaCliente statusContaCliente, int tempoDeContaEmAnos) { decimal precoAposDesconto = 0; switch (statusContaCliente) { case StatusContaCliente.NaoRegistrado: precoAposDesconto = precoProduto; break; case StatusContaCliente.ClienteComum: // 2- Calcula o desconto por status de conta de cliente precoAposDesconto = (precoProduto - (Constantes.DESCONTO_CLIENTE_COMUM * precoProduto)); // 1- Calcula o desconto por fidelidade precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoProduto, tempoDeContaEmAnos); break; case StatusContaCliente.ClienteEspecial: // 2- Calcula o desconto por status de conta de cliente precoAposDesconto = (precoProduto - (Constantes.DESCONTO_CLIENTE_ESPECIAL * precoProduto)); // 1- Calcula o desconto por fidelidade precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoProduto, tempoDeContaEmAnos); break; case StatusContaCliente.ClienteVip: // 2- Calcula o desconto por status de conta de cliente precoAposDesconto = (precoProduto - (Constantes.DESCONTO_CLIENTE_VIP * precoProduto)); // 1- Calcula o desconto por fidelidade precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoProduto, tempoDeContaEmAnos); break; default: throw new NotImplementedException(); } return(precoAposDesconto); }
public decimal AplicarDesconto(decimal precoProduto, StatusContaCliente statusContaCliente, int tempoDeContaEmAnos) { decimal precoAposDesconto = 0; precoAposDesconto = _calculaDescontoStatusContaFactory .GetCalculoDescontoStatusConta(statusContaCliente).AplicaDescontoStatusConta(precoProduto); precoAposDesconto = _descontoFidelidade.AplicaDescontoFidelidade(precoAposDesconto, tempoDeContaEmAnos); return(precoAposDesconto); }