Example #1
0
 public PlanoTelefonia ObterPlanoTelefonia(EPlanoTelefonia planoTelefonia)
 {
     return(GetAll()
            .Where(x => x.EPlanoTelefonia == planoTelefonia)
            .DefaultIfEmpty(new PlanoTelefonia())
            .FirstOrDefault());
 }
Example #2
0
        public decimal Execute(int dddOrigem, int dddDestino, int duracaoEmMinutos, EPlanoTelefonia planoSelecionado)
        {
            if (UseCaseValidator(dddOrigem, dddDestino, duracaoEmMinutos, planoSelecionado))
            {
                return(0);
            }

            decimal tarifa = _tarifaLigacaoRepository.ObterTarifaLigacao(dddDestino, dddOrigem);

            var _plano = _planoTelefoniaRepository.ObterPlanoTelefonia(planoSelecionado);

            return(_plano.MinutosPraFalarDeGraca == default(int)
            ? (tarifa * duracaoEmMinutos)
            : ((duracaoEmMinutos > _plano.MinutosPraFalarDeGraca)
            ? ((tarifa * (duracaoEmMinutos - _plano.MinutosPraFalarDeGraca))
               + tarifa * (duracaoEmMinutos - _plano.MinutosPraFalarDeGraca) * _plano.AcrescimentoExcedente / 100)
            : default(decimal)));
        }
Example #3
0
        internal bool UseCaseValidator(int dddOrigem, int dddDestino, int duracaoEmMinutos, EPlanoTelefonia planoSelecionado)
        {
            if (dddOrigem == 0)
            {
                _notification.AddNotification(Guid.NewGuid().ToString(), "Informe o DDD de Origem.");
            }

            if (dddDestino == 0)
            {
                _notification.AddNotification(Guid.NewGuid().ToString(), "Informe o DDD de destino.");
            }

            if (duracaoEmMinutos == 0)
            {
                _notification.AddNotification(Guid.NewGuid().ToString(), "Inform e o tempo de duração da ligação.");
            }

            return(_notification.HasNotifications);
        }
Example #4
0
 public List <decimal> Execute(int dddOrigem, int dddDestino, int duracaoEmMinutos, EPlanoTelefonia planoSelecionado)
 {
     return(new List <decimal>()
     {
         _useCase.Execute(dddOrigem, dddDestino, duracaoEmMinutos, (int)EPlanoTelefonia.PlanoPadrao),
         _useCase.Execute(dddOrigem, dddDestino, duracaoEmMinutos, planoSelecionado)
     });
 }