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))); } }
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))); }
public IActionResult ObterPorId(int id) { var pessoa = _pessoaRepositorio.ObterPorId(id); if (pessoa == null) { return(NotFound()); } return(new ObjectResult(pessoa)); }
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 })); } }
public IActionResult Editar(int id) { var pessoa = _pessoaRepositorio.ObterPorId(id); if (pessoa == null) { return(RedirectToAction("Index")); } return(View("NovoOuEditar", new PessoaParaCadastroViewModel(pessoa))); }
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()))); }