Пример #1
0
        public void Nao_Deve_Obter_Cartao_Credito_Por_Id_Com_Parametros_Invalidos()
        {
            var idCartaoCredito = 0;
            var idUsuario       = 0;

            _cartaoCreditoServico = Substitute.For <CartaoCreditoServico>(_cartaoCreditoRepositorio, _uow);

            var saida = _cartaoCreditoServico.ObterCartaoCreditoPorId(idCartaoCredito, idUsuario).Result;

            Assert.IsTrue(!saida.Sucesso && saida.Mensagens.Any(x => x == string.Format(CartaoCreditoMensagem.Id_Cartao_Invalido, idCartaoCredito)), string.Join(", ", saida.Mensagens));
        }
Пример #2
0
        public void Deve_Obter_Cartao_Credito_Por_Id()
        {
            var idCartaoCredito = 1;
            var idUsuario       = 1;

            _cartaoCreditoRepositorio.ObterPorId(idCartaoCredito)
            .Returns(new CartaoCredito(new CadastrarCartaoCreditoEntrada(idUsuario, "Cartão 1", 5000, 5)));

            _cartaoCreditoServico = Substitute.For <CartaoCreditoServico>(_cartaoCreditoRepositorio, _uow);

            var saida = _cartaoCreditoServico.ObterCartaoCreditoPorId(1, 1).Result;

            Assert.IsTrue(saida.Sucesso, string.Join(", ", saida.Mensagens));
        }
Пример #3
0
        public void Nao_Deve_Obter_Cartao_Credito_Por_Id_Inexistente()
        {
            var idCartaoCredito = 1;
            var idUsuario       = 1;

            _cartaoCreditoRepositorio.ObterPorId(idUsuario)
            .Returns((CartaoCredito)null);

            _cartaoCreditoServico = Substitute.For <CartaoCreditoServico>(_cartaoCreditoRepositorio, _uow);

            var saida = _cartaoCreditoServico.ObterCartaoCreditoPorId(idCartaoCredito, idUsuario).Result;

            Assert.IsTrue(!saida.Sucesso && saida.Mensagens.Any(x => x == string.Format(CartaoCreditoMensagem.Id_Cartao_Nao_Existe, idCartaoCredito)), string.Join(", ", saida.Mensagens));
        }
Пример #4
0
        public void Nao_Deve_Obter_Cartao_Credito_Por_Id_De_Outro_Usuario()
        {
            var idCartaoCredito = 1;
            var idUsuario       = 1;

            _cartaoCreditoRepositorio.ObterPorId(idCartaoCredito)
            .Returns(new CartaoCredito(new CadastrarCartaoCreditoEntrada(idUsuario, "Cartão 1", 5000, 5)));

            _cartaoCreditoServico = Substitute.For <CartaoCreditoServico>(_cartaoCreditoRepositorio, _uow);

            var saida = _cartaoCreditoServico.ObterCartaoCreditoPorId(idCartaoCredito, 2).Result;

            Assert.IsTrue(!saida.Sucesso && saida.Mensagens.Any(x => x == CartaoCreditoMensagem.Cartao_Nao_Pertence_Usuario), string.Join(", ", saida.Mensagens));
        }
Пример #5
0
        public async Task <ISaida> CadastrarAgendamento(AgendamentoEntrada entrada)
        {
            // Verifica se as informações para cadastro foram informadas corretamente
            if (entrada.Invalido)
            {
                return(new Saida(false, entrada.Mensagens, null));
            }

            // Verifica se a categoria existe a partir do ID informado.
            this.NotificarSeFalso(await _categoriaRepositorio.VerificarExistenciaPorId(entrada.IdUsuario, entrada.IdCategoria), CategoriaMensagem.Id_Categoria_Nao_Existe);

            // Verifica se a conta ou cartão de crédito existem a partir do ID informado.
            if (entrada.IdConta.HasValue)
            {
                var conta = await _contaRepositorio.ObterPorId(entrada.IdConta.Value);

                this
                .NotificarSeNulo(conta, ContaMensagem.Id_Conta_Nao_Existe)
                .NotificarSeVerdadeiro(conta?.Tipo == TipoConta.Acoes, AgendamentoMensagem.Tipo_Conta_Invalida);
            }
            else
            {
                var cartao = (CartaoCreditoSaida)(await _cartaoCreditoServico.ObterCartaoCreditoPorId(entrada.IdCartaoCredito.Value, entrada.IdUsuario)).Retorno;

                this
                .NotificarSeNulo(cartao, CartaoCreditoMensagem.Id_Cartao_Nao_Existe)
                .NotificarSeVerdadeiro(cartao != null && (cartao.ValorLimiteDisponivel ?? 0) < entrada.QuantidadeParcelas * entrada.ValorParcela, $"O valor total do agendamento ({(entrada.QuantidadeParcelas * entrada.ValorParcela).ToString("C2")}) é superior ao valor do limite disponível para o cartão ({cartao.ValorLimiteDisponivel?.ToString("C2")}).");
            }

            // Verifica se a pessoa existe a partir do ID informado.
            if (entrada.IdPessoa.HasValue)
            {
                this.NotificarSeFalso(await _pessoaRepositorio.VerificarExistenciaPorId(entrada.IdUsuario, entrada.IdPessoa.Value), PessoaMensagem.Id_Pessoa_Nao_Existe);
            }

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            var agendamento = new Agendamento(entrada);

            await _agendamentoRepositorio.Inserir(agendamento);

            await _uow.Commit();

            return(new Saida(true, new[] { AgendamentoMensagem.Agendamento_Cadastrado_Com_Sucesso }, new AgendamentoSaida(await _agendamentoRepositorio.ObterPorId(agendamento.Id))));
        }
Пример #6
0
 public async Task <ISaida> ObterCartaoCreditoPorId([SwaggerParameter("ID do cartão de crédito.", Required = true)] int idCartaoCredito)
 {
     return(await _cartaoCreditoServico.ObterCartaoCreditoPorId(
                idCartaoCredito,
                base.ObterIdUsuarioClaim()));
 }
Пример #7
0
 public async Task <IActionResult> ObterCartaoCreditoPorId([FromQuery, SwaggerParameter("ID do cartão de crédito.", Required = true)] int idCartaoCredito)
 {
     return(new ApiResult(await _cartaoCreditoServico.ObterCartaoCreditoPorId(idCartaoCredito, base.ObterIdUsuarioClaim())));
 }