public async Task <IActionResult> Alugar(AluguelViewModel aluguel) { if (ModelState.IsValid) { var usuario = await _usuarioRepositorio.PegarUsuarioLogado(User); var saldo = _contaRepositorio.PegarSaldoPeloId(usuario.Id); if (await _aluguelRepositorio.VerificarReserva(usuario.Id, aluguel.CarroId, aluguel.Inicio, aluguel.Fim)) { _logger.LogInformation("Usuário já possui essa reserva"); TempData["Aviso"] = "Você já possui essa reserva"; return(View(aluguel)); } else if (aluguel.PrecoTotal > saldo) { _logger.LogInformation("Saldo insuficiente"); TempData["Aviso"] = "Saldo insuficiente"; return(View(aluguel)); } else { Aluguel a = new Aluguel { UsuarioId = usuario.Id, CarroId = aluguel.CarroId, Inicio = aluguel.Inicio, Fim = aluguel.Fim, PrecoTotal = aluguel.PrecoTotal }; _logger.LogInformation("Enviando email com detalhes da reserva"); string assunto = "Reserva concluida com sucesso"; string mensagem = string.Format("seu veiculo já o aguarda. Você poderá pegá-lo dia {0}" + " e deverá devolve-lo dia {1}. O preço será R${2},00. Divirta-se !!! ", aluguel.Inicio, aluguel.Fim, aluguel.PrecoTotal); await _email.EnviarEmail(usuario.Email, assunto, mensagem); await _aluguelRepositorio.Inserir(a); _logger.LogInformation("Reserva feita"); _logger.LogInformation("Atualizando saldo do usuario"); var saldoUsuario = await _contaRepositorio.PegarSaldoPeloUsuarioId(usuario.Id); saldoUsuario.Saldo = saldoUsuario.Saldo - aluguel.PrecoTotal; await _contaRepositorio.Atualizar(saldoUsuario); _logger.LogInformation("Saldo atualizado"); return(RedirectToAction("Index", "Carros")); } } _logger.LogInformation("Informações inválidas"); return(View(aluguel)); }
public async Task <IActionResult> AluguelCarro(AluguelViewModel aluguelViewModel) { if (ModelState.IsValid) { var usuario = await _usuarioRepositorio.PegarUsuarioLogado(User); var saldo = _contaRepositorio.PegarSaldoPeloId(usuario.Id); if (await _aluguelRepositorio.VerificarReserva(usuario.Id, aluguelViewModel.CarroId, aluguelViewModel.Inicio, aluguelViewModel.Fim)) { TempData["Aviso"] = "Você já possui essa reserva"; return(View(aluguelViewModel)); } else if (aluguelViewModel.PrecoTotal > saldo) { TempData["Aviso"] = "Saldo Insuficiente"; return(View(aluguelViewModel)); } else { Aluguel aluguel = new Aluguel { UsuarioId = usuario.Id, CarroId = aluguelViewModel.CarroId, Inicio = aluguelViewModel.Inicio, Fim = aluguelViewModel.Fim, PrecoTotal = aluguelViewModel.PrecoTotal }; string assunto = "Reserva concluida com sucesso"; string mensagem = string.Format("Veiculo em aguardo. Voce pode pegá-lo dia {0}" + " e deverá devolver dia {1}. O preco será R${2},00. Divirta-se", aluguel.Inicio, aluguel.Fim, aluguel.PrecoTotal); await _emailInterface.EnviarEmail(usuario.Email, assunto, mensagem); await _aluguelRepositorio.Inserir(aluguel); var saldoUsuario = await _contaRepositorio.PegarSaldoPeloUsuarioId(usuario.Id); saldoUsuario.Saldo = saldoUsuario.Saldo - aluguelViewModel.PrecoTotal; await _contaRepositorio.Atualizar(saldoUsuario); return(RedirectToAction("Index", "Carro")); } } return(View(aluguelViewModel)); }
public async Task <IActionResult> Put(int id, [FromBody] Conta conta) { try { if (id != conta.Id) { throw new Exception("Id não encontrado!!"); } _contaRepositorio.Atualizar(conta); return(Ok(conta)); } catch (Exception ex) { return(BadRequest(ex.ToString())); } }
public async Task <IActionResult> Edit(int id, [Bind("ContaId,UsuarioId,Saldo")] Conta conta) { if (id != conta.ContaId) { return(NotFound()); } if (ModelState.IsValid) { await _contaRepositorio.Atualizar(conta); return(RedirectToAction(nameof(Index))); } ViewData["UsuarioId"] = new SelectList(await _contaRepositorio.PegarTodos(), "Id", "Email", conta.UsuarioId); return(View(conta)); }
public async Task <IActionResult> Edit(int id, [Bind("ContaId,UsuarioId,Saldo")] Conta conta) { if (id != conta.ContaId) { return(NotFound()); } if (ModelState.IsValid) { await _contaRepositorio.Atualizar(conta); _logger.LogInformation("Atualizando conta"); return(RedirectToAction(nameof(Index))); } _logger.LogError("Informações inválidas"); ViewData["UsuarioId"] = new SelectList(_usuarioRepositorio.PegarTodos(), "Id", "Email", conta.UsuarioId); return(View(conta)); }
public bool Atualizar(Conta conta) { Cliente titular = _repositorioCliente.PegarPorId(conta.Titular.Id) ?? throw new NaoEncontradoException(); Conta contaDb = _repositorioConta.PegarPorId(conta.Id) ?? throw new NaoEncontradoException(); contaDb.Estado = conta.Estado; contaDb.Limite = conta.Limite; contaDb.Titular = titular; contaDb.Validar(); return(_repositorioConta.Atualizar(contaDb)); }
public async Task <ISaida> AlterarConta(AlterarContaEntrada alterarEntrada) { // Verifica se as informações para alteração foram informadas corretamente if (alterarEntrada.Invalido) { return(new Saida(false, alterarEntrada.Mensagens, null)); } var conta = await _contaRepositorio.ObterPorId(alterarEntrada.IdConta, true); // Verifica se a conta existe this.NotificarSeNulo(conta, string.Format(ContaMensagem.Id_Conta_Nao_Existe, alterarEntrada.IdConta)); if (this.Invalido) { return(new Saida(false, this.Mensagens, null)); } // Verifica se a conta pertece ao usuário informado. this.NotificarSeDiferentes(conta.IdUsuario, alterarEntrada.IdUsuario, ContaMensagem.Conta_Alterar_Nao_Pertence_Usuario); if (this.Invalido) { return(new Saida(false, this.Mensagens, null)); } // Verifica se o usuário já possui alguma conta com o nome informado this.NotificarSeVerdadeiro(await _contaRepositorio.VerificarExistenciaPorNome(alterarEntrada.IdUsuario, alterarEntrada.Nome, alterarEntrada.IdConta), ContaMensagem.Conta_Com_Mesmo_Nome); if (this.Invalido) { return(new Saida(false, this.Mensagens, null)); } conta.Alterar(alterarEntrada); _contaRepositorio.Atualizar(conta); await _uow.Commit(); return(_uow.Invalido ? new Saida(false, _uow.Mensagens, null) : new Saida(true, new[] { ContaMensagem.Conta_Alterada_Com_Sucesso }, new ContaSaida(conta))); }
public ActionResult Atualizar([Bind(Include = "Id, Descricao, Documento, NomeFantasia, InscricaoEstadual, Telefone, VendedorId, SituacaoCadastral, Segmento, ClassificacaoFiscal, Logradouro, Bairro, Numero, Complemento, CEP, Estado, CidadeId, PaisId, Blacklist")] ContaViewModel viewModel, int?id) { if (id == null) { return(RedirectToAction(nameof(Index))); } var conta = _contaRepositorio.ObterContaPorId(id.Value); if (conta == null) { RegistroNaoEncontrado(); } var contaExistente = _contaRepositorio.ContaExistente(viewModel.Descricao, viewModel.Documento); if (contaExistente != null && contaExistente.Id != conta.Id) { ModelState.AddModelError(string.Empty, $"Já existe uma Conta cadastrada com o mesmo CNPJ. (Cód: {contaExistente.Id} - {contaExistente.Descricao} - CNPJ: {contaExistente.Documento})"); } if (ModelState.IsValid) { conta.Alterar( new Conta( viewModel.CriadoPor, viewModel.Descricao, viewModel.Documento, viewModel.NomeFantasia, viewModel.InscricaoEstadual, viewModel.Telefone, viewModel.VendedorId, viewModel.SituacaoCadastral, viewModel.Segmento, viewModel.ClassificacaoFiscal, viewModel.Logradouro, viewModel.Bairro, viewModel.Numero, viewModel.Complemento, viewModel.CEP, viewModel.Estado, viewModel.CidadeId, viewModel.PaisId, viewModel.Blacklist)); if (Validar(conta)) { _contaRepositorio.Atualizar(conta); TempData["Sucesso"] = true; GravarLogAuditoria(TipoLogAuditoria.UPDATE, conta); } } PopularCidades(viewModel); PopularPaises(viewModel); PopularVendedores(viewModel); PopularContatos(viewModel); PopularOportunidades(viewModel); PopularVinculosIPs(viewModel); return(View(viewModel)); }