예제 #1
0
        public void DDDService_GetById_Return_Be_Sucess()
        {
            _dddRepository.Setup(x => x.GetById(1)).Returns(new DDD
            {
                Id     = 1,
                Codigo = "011"
            });

            var ddd = _serviceMock.GetById(1);

            _dddRepository.Verify(r => r.GetById(
                                      It.Is <int>(v => v == ddd.Id)));
        }
        public void Simular(SimulacaoChamada simulacaoChamada)
        {
            Validar(simulacaoChamada);
            if (Erros.Count > 0)
            {
                throw new Exception(string.Join(". ", Erros.ToArray()));
            }

            simulacaoChamada.DDDOrigem  = _dddService.GetById(simulacaoChamada.DDDOrigemId);
            simulacaoChamada.DDDDestino = _dddService.GetById(simulacaoChamada.DDDDestinoId);
            // Buscar Plano
            simulacaoChamada.Plano = _planoService.GetById(simulacaoChamada.PlanoId);
            // Buscar Custo Chamada
            CustoChamada custoChamada = _custoChamadaService.Get(simulacaoChamada.DDDOrigemId, simulacaoChamada.DDDDestinoId);

            if (custoChamada != null)
            {
                //Custo sem fale mais
                simulacaoChamada.CustoSemFaleMais = simulacaoChamada.Tempo * custoChamada.CustoMinuto;

                // Custo com fale mais
                if (simulacaoChamada.Tempo > simulacaoChamada.Plano.TempoMinutos)
                {
                    // obter total de minutos excedentes do plano selecionado
                    int minutosExcedente = simulacaoChamada.Tempo - simulacaoChamada.Plano.TempoMinutos;
                    // calcular custo com fale mais
                    simulacaoChamada.CustoComFaleMais = minutosExcedente * custoChamada.CustoMinuto;
                    // adicionar acrescimo
                    simulacaoChamada.CustoComFaleMais = Convert.ToDecimal(simulacaoChamada.CustoComFaleMais) + Convert.ToDecimal(simulacaoChamada.CustoComFaleMais) * simulacaoChamada.Plano.CustoAdicionalMinuto / 100;
                }
                else
                {
                    simulacaoChamada.CustoComFaleMais = 0;
                }
            }
        }