public async Task <ISaida> LancarParcela(LancarParcelaEntrada lancarEntrada) { // Verifica se as informações para o lançamento foram informadas corretamente if (lancarEntrada.Invalido) { return(new Saida(false, lancarEntrada.Mensagens, null)); } var parcela = await _parcelaRepositorio.ObterPorId(lancarEntrada.IdParcela, true); // Verifica se a parcela existe this.NotificarSeNulo(parcela, ParcelaMensagem.Id_Parcela_Nao_Existe); if (this.Invalido) { return(new Saida(false, this.Mensagens, null)); } // Verifica se a parcela pertece a um agendamento do usuário informado. this.NotificarSeDiferentes(parcela.Agendamento.IdUsuario, lancarEntrada.IdUsuario, ParcelaMensagem.Parcela_Lancar_Nao_Pertence_Usuario); if (this.Invalido) { return(new Saida(false, this.Mensagens, null)); } // Verifica se a parcela já foi lançada ou descartada this.NotificarSeVerdadeiro(parcela.Lancada, ParcelaMensagem.Parcela_Lancar_Ja_Lancada); this.NotificarSeVerdadeiro(parcela.Descartada, ParcelaMensagem.Parcela_Lancar_Ja_Descartada); if (this.Invalido) { return(new Saida(false, this.Mensagens, null)); } parcela.Lancar(lancarEntrada); _parcelaRepositorio.Atualizar(parcela); // Cadastro o lançamento var cadastrarEntrada = new CadastrarLancamentoEntrada( parcela.Agendamento.IdUsuario, parcela.Agendamento.IdConta.Value, parcela.Agendamento.IdCategoria, lancarEntrada.Data, lancarEntrada.Valor, parcela.Agendamento.IdPessoa, parcela.Id, lancarEntrada.Observacao); var lancamento = new Lancamento(cadastrarEntrada); await _lancamentoRepositorio.Inserir(lancamento); await _uow.Commit(); return(_uow.Invalido ? new Saida(false, _uow.Mensagens, null) : new Saida(true, new[] { ParcelaMensagem.Parcela_Lancada_Com_Sucesso }, new ParcelaSaida(parcela))); }
public async Task <ISaida> CadastrarLancamento([FromBody, SwaggerParameter("Informações de cadastro do lançamento.", Required = true)] CadastrarLancamentoViewModel model) { var cadastrarEntrada = new CadastrarLancamentoEntrada( base.ObterIdUsuarioClaim(), model.IdConta.Value, model.IdCategoria.Value, model.Data.Value, model.Valor.Value, model.IdPessoa, null, model.Observacao); return(await _lancamentoServico.CadastrarLancamento(cadastrarEntrada)); }
public Lancamento(CadastrarLancamentoEntrada cadastrarEntrada) : this() { if (cadastrarEntrada.Invalido) { return; } this.IdUsuario = cadastrarEntrada.IdUsuario; this.IdConta = cadastrarEntrada.IdConta; this.IdCategoria = cadastrarEntrada.IdCategoria; this.IdParcela = cadastrarEntrada.IdParcela; this.Data = cadastrarEntrada.Data; this.Valor = cadastrarEntrada.Valor; this.IdPessoa = cadastrarEntrada.IdPessoa; this.Observacao = cadastrarEntrada.Observacao; }
public async Task <ISaida> CadastrarLancamento(CadastrarLancamentoEntrada cadastroEntrada) { // Verifica se as informações para cadastro foram informadas corretamente if (cadastroEntrada.Invalido) { return(new Saida(false, cadastroEntrada.Mensagens, null)); } // Verifica se a categoria existe a partir do ID informado. this.NotificarSeFalso(await _categoriaRepositorio.VerificarExistenciaPorId(cadastroEntrada.IdUsuario, cadastroEntrada.IdCategoria), CategoriaMensagem.Id_Categoria_Nao_Existe); // Verifica se a conta existe a partir do ID informado. this.NotificarSeFalso(await _contaRepositorio.VerificarExistenciaPorId(cadastroEntrada.IdUsuario, cadastroEntrada.IdConta), ContaMensagem.Id_Conta_Nao_Existe); // Verifica se a pessoa existe a partir do ID informado. if (cadastroEntrada.IdPessoa.HasValue) { this.NotificarSeFalso(await _pessoaRepositorio.VerificarExistenciaPorId(cadastroEntrada.IdUsuario, cadastroEntrada.IdPessoa.Value), PessoaMensagem.Id_Pessoa_Nao_Existe); } // Verifica se a parcela existe a partir do ID informado. if (cadastroEntrada.IdParcela.HasValue) { this.NotificarSeFalso(await _parcelaRepositorio.VerificarExistenciaPorId(cadastroEntrada.IdUsuario, cadastroEntrada.IdParcela.Value), ParcelaMensagem.Id_Parcela_Nao_Existe); } if (this.Invalido) { return(new Saida(false, this.Mensagens, null)); } var lancamento = new Lancamento(cadastroEntrada); await _lancamentoRepositorio.Inserir(lancamento); await _uow.Commit(); return(_uow.Invalido ? new Saida(false, _uow.Mensagens, null) : new Saida(true, new[] { LancamentoMensagem.Lancamento_Cadastrado_Com_Sucesso }, new LancamentoSaida(await _lancamentoRepositorio.ObterPorId(lancamento.Id)))); }