Exemple #1
0
        public async Task <IActionResult> Put(int id, PessoaModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            try
            {
                var pessoa = await _pessoaRepositorio.ObterPorId(id);

                var nomeCompleto = new NomeCompleto(model.Nome, model.Sobrenome);
                var cpf          = new Cpf(model.Cpf);
                var email        = new Email(model.Email);
                var telefone     = new Telefone(model.Telefone);
                var endereco     = new Endereco(model.Cep, model.Estado, model.Cidade, model.Logradouro);


                pessoa.Alterar(nomeCompleto, cpf, model.Nacionalidade, email, telefone, endereco);
                _pessoaRepositorio.Alterar(pessoa);
                await _unitOfWork.SaveChanges();

                var response = new ResponseModel <PessoaDetalhesModel>(HttpStatusCode.OK, new PessoaDetalhesModel(pessoa), "Pessoa alterada com sucesso");

                return(Ok(response));
            }
            catch (Exception e)
            {
                return(BadRequest(new ResponseModel <PessoaModel>(HttpStatusCode.BadRequest, null, e.Message)));
            }
        }
Exemple #2
0
        public async Task <ISaida> ObterPessoaPorId(int idPessoa, int idUsuario)
        {
            this.NotificarSeMenorOuIgualA(idPessoa, 0, PessoaMensagem.Id_Pessoa_Invalido);
            this.NotificarSeMenorOuIgualA(idUsuario, 0, Mensagem.Id_Usuario_Invalido);

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

            var pessoa = await _pessoaRepositorio.ObterPorId(idPessoa);

            // Verifica se a pessoa existe
            this.NotificarSeNulo(pessoa, PessoaMensagem.Id_Pessoa_Nao_Existe);

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

            // Verifica se a pessoa pertece ao usuário informado.
            this.NotificarSeDiferentes(pessoa.IdUsuario, idUsuario, PessoaMensagem.Pessoa_Nao_Pertence_Usuario);

            return(this.Invalido
                ? new Saida(false, this.Mensagens, null)
                : new Saida(true, new[] { PessoaMensagem.Pessoa_Encontrada_Com_Sucesso }, new PessoaSaida(pessoa)));
        }
Exemple #3
0
        public IActionResult ObterPorId(int id)
        {
            var pessoa = _pessoaRepositorio.ObterPorId(id);

            if (pessoa == null)
            {
                return(NotFound());
            }
            return(new ObjectResult(pessoa));
        }
Exemple #4
0
        private void AdicionarOuRemoverInstrutor(CursoAbertoParaCadastroViewModel model, CursoAberto cursoAberto)
        {
            foreach (var instrutorDaTurmaViewModel in model.Instrutores)
            {
                var instrutor = _pessoaRepositorio.ObterPorId(instrutorDaTurmaViewModel.Id);
                Enum.TryParse <CargoNaTurma>(instrutorDaTurmaViewModel.Cargo, out var cargo);
                cursoAberto.AdicionarInstrutor(instrutor, cargo);
            }

            if (cursoAberto.Instrutores == null)
            {
                return;
            }

            var instrutoresDaTurmaParaRemover = new List <InstrutorDaTurma>();

            foreach (var instrutorDaTurma in cursoAberto.Instrutores)
            {
                if (!model.Instrutores.Exists(i => i.Id == instrutorDaTurma.Instrutor.Id && i.Cargo == instrutorDaTurma.Cargo.ToString()))
                {
                    instrutoresDaTurmaParaRemover.Add(new InstrutorDaTurma(instrutorDaTurma.Instrutor, instrutorDaTurma.Cargo));
                }
            }

            foreach (var instrutorDaTurma in instrutoresDaTurmaParaRemover)
            {
                cursoAberto.RemoverInstrutor(instrutorDaTurma.Instrutor, instrutorDaTurma.Cargo);
            }
        }
        public void Nao_Deve_Obter_Pessoa_Por_Id_De_Outro_Usuario()
        {
            var idPessoa  = 2;
            var idUsuario = 1;

            _pessoaRepositorio.ObterPorId(idPessoa)
            .Returns(new Pessoa(new CadastrarPessoaEntrada(idUsuario, "Pessoa 1")));

            _pessoaServico = Substitute.For <PessoaServico>(_pessoaRepositorio, _uow);

            var saida = _pessoaServico.ObterPessoaPorId(idPessoa, 2).Result;

            Assert.IsTrue(!saida.Sucesso && saida.Mensagens.Any(x => x == PessoaMensagem.Pessoa_Nao_Pertence_Usuario), string.Join(", ", saida.Mensagens));
        }
        public IActionResult Get(Guid id)
        {
            try
            {
                var resultado = _IPessoaRepositorio.ObterPorId(id);

                if (resultado == null)
                {
                    return(NotFound(new { mensagem = string.Format("Id: {0} Inexistente", id) }));
                }

                return(Ok(resultado));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { mensagem = "ERRO Inesperado. " + ex.Message }));
            }
        }
Exemple #7
0
        public IActionResult Editar(int id)
        {
            var pessoa = _pessoaRepositorio.ObterPorId(id);

            if (pessoa == null)
            {
                return(RedirectToAction("Index"));
            }

            return(View("NovoOuEditar", new PessoaParaCadastroViewModel(pessoa)));
        }
Exemple #8
0
        public void Criar(int idCursoAberto, int idAluno, bool estaPago, string valorPagoEmString, int idComoFicouSabendo)
        {
            var aluno            = _pessoaRepositorio.ObterPorId(idAluno);
            var cursoAberto      = _cursoAbertoRepositorio.ObterPorId(idCursoAberto);
            var comoFicouSabendo = _comoFicouSabendoRepositorio.ObterPorId(idComoFicouSabendo);

            decimal.TryParse(valorPagoEmString, out var valorPago);

            var matricula = new Matricula(cursoAberto, aluno, estaPago, valorPago, comoFicouSabendo);

            _matriculaRepositorio.Adicionar(matricula);
        }
        public async Task <ISaida> PagarFatura(PagarFaturaEntrada entrada)
        {
            // Verifica se as informações para alteração foram informadas corretamente
            if (entrada.Invalido)
            {
                return(new Saida(false, entrada.Mensagens, null));
            }

            var cartaoSaida = await this.ObterCartaoCreditoPorId(entrada.IdCartaoCredito, entrada.IdUsuario, false);

            if (!cartaoSaida.Sucesso)
            {
                return(cartaoSaida);
            }

            var cartaoCredito = (CartaoCreditoSaida)cartaoSaida.Retorno;

            var dataFatura = new DateTime(entrada.AnoFatura, entrada.MesFatura, cartaoCredito.DiaVencimentoFatura);

            // Obtém todas as parcelas que compôem a fatura
            var parcelas = await _parcelaRepositorio.ObterPorCartaoCredito(entrada.IdCartaoCredito, dataFatura);

            var valorFatura = parcelas?.Where(x => !x.Lancada && !x.Descartada).Sum(x => x.Valor) + (entrada.ValorAdicionalDebito.HasValue ? entrada.ValorAdicionalDebito.Value : 0) - (entrada.ValorAdicionalCredito.HasValue ? entrada.ValorAdicionalCredito.Value : 0) ?? 0;

            // Verifica se o valor do pagamento é suficiente para o pagamento da fatura
            this.NotificarSeMenorQue(entrada.ValorPagamento, valorFatura, CartaoCreditoMensagem.Fatura_Valor_Pagamento_Menor_Valor_Total_Fatura);

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

            var contaSaida = await _contaServico.ObterContaPorId(entrada.IdContaPagamento, entrada.IdUsuario);

            if (!contaSaida.Sucesso)
            {
                return(cartaoSaida);
            }

            var contaPagamento = (ContaSaida)contaSaida.Retorno;

            // Verifica se o saldo da conta é maior ou igual ao valor da fatura
            this.NotificarSeMenorQue(contaPagamento.ValorSaldoAtual ?? 0, entrada.ValorPagamento, string.Format(CartaoCreditoMensagem.Fatura_Saldo_Insuficiente_Pagamento_Fatura, contaPagamento.ValorSaldoAtual?.ToString("C2")));

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

            Pessoa pessoa = null;

            if (entrada.IdPessoaPagamento.HasValue)
            {
                pessoa = await _pessoaRepositorio.ObterPorId(entrada.IdPessoaPagamento.Value);

                this
                .NotificarSeNulo(pessoa, PessoaMensagem.Id_Pessoa_Nao_Existe)
                .NotificarSeDiferentes(pessoa?.IdUsuario, entrada.IdUsuario, PessoaMensagem.Pessoa_Nao_Pertence_Usuario);

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

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

            var lancamentoFatura = new Lancamento(new LancamentoEntrada(
                                                      entrada.IdUsuario,
                                                      entrada.IdContaPagamento,
                                                      (int)TipoCategoriaEspecial.PagamentoFaturaCartao,
                                                      entrada.DataPagamento,
                                                      entrada.ValorPagamento,
                                                      idPessoa: pessoa?.Id,
                                                      observacao: $"Fatura {dataFatura.ToString("MMM").ToUpper()}/{dataFatura.ToString("yyyy")}"));

            // Insere o lançamento referente ao pagamento da fatura
            await _lancamentoRepositorio.Inserir(lancamentoFatura);

            await _uow.Commit();

            var fatura = new Fatura(
                entrada.IdCartaoCredito,
                lancamentoFatura.Id,
                entrada.MesFatura,
                entrada.AnoFatura,
                entrada.ValorAdicionalCredito,
                entrada.ObservacaoCredito,
                entrada.ValorAdicionalDebito,
                entrada.ObservacaoDebito);

            // Insere a fatura
            await _faturaRepositorio.Inserir(fatura);

            await _uow.Commit();

            foreach (var parcela in parcelas)
            {
                parcela.PagarFatura(fatura.Id, entrada.DataPagamento);
            }

            await _uow.Commit();

            fatura = await _faturaRepositorio.ObterPorId(fatura.Id);

            return(new Saida(true, new[] { CartaoCreditoMensagem.Fatura_Paga_Com_Sucesso }, new FaturaSaida(fatura, parcelas.Select(x => new ParcelaSaida(x)).ToList())));
        }