コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }