public ActionResult Create(int?veiculoId) { AtualizaTodosAlugueres(); if (veiculoId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var veiculo = _context.Veiculos.Include(v => v.User) .Include(v => v.Categoria) .Include(v => v.Combustivel) .Include(v => v.Alugueres) .SingleOrDefault(v => v.Id == veiculoId); if (veiculo == null) { return(HttpNotFound()); } var clienteId = User.Identity.GetUserId(); if (!veiculo.Aprovado || string.Compare(clienteId, veiculo.UserId, StringComparison.Ordinal) == 0) { return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "Operação não autorizada.")); } var viewModel = new CreateAluguerViewModel { VeiculoId = (int)veiculoId, Veiculo = veiculo, ClienteId = clienteId, Inicio = DateTime.Today, Fim = DateTime.Today }; return(View(viewModel)); }
public ActionResult Create(CreateAluguerViewModel viewModel) { var veiculo = _context.Veiculos.Include(v => v.User) .Include(v => v.Alugueres) .Include(v => v.Categoria) .Include(v => v.Combustivel) .Single(v => v.Id == viewModel.VeiculoId); if (!ModelState.IsValid) { viewModel.Inicio = DateTime.Today; viewModel.Fim = DateTime.Today; viewModel.Veiculo = veiculo; return(View(viewModel)); } if (!VeiculoDisponivel(veiculo, viewModel.Inicio, viewModel.Fim)) { ModelState.AddModelError("Fim", @"O veículo não está disponível no período indicado."); viewModel.Inicio = DateTime.Today; viewModel.Fim = DateTime.Today; viewModel.Veiculo = veiculo; return(View(viewModel)); } //try //{ var cliente = _context.Users.Single(c => string.Compare(c.Id, viewModel.ClienteId, StringComparison.Ordinal) == 0); //var veiculo = _context.Veiculos.Single(v => v.Id == viewModel.VeiculoId); var aluguer = new Aluguer { VeiculoId = viewModel.VeiculoId, Veiculo = veiculo, ClienteId = viewModel.ClienteId, Cliente = cliente, Inicio = viewModel.Inicio, Fim = viewModel.Fim, AluguerState_id = AluguerState.Pendente }; _context.Alugueres.Add(aluguer); _context.SaveChanges(); //} //catch (DbEntityValidationException e) //{ // foreach (var eve in e.EntityValidationErrors) // { // Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", // eve.Entry.Entity.GetType().Name, eve.Entry.State); // foreach (var ve in eve.ValidationErrors) // { // Debug.WriteLine("- Property: \"{0}\", Value: \"{1}\", Error: \"{2}\"", // ve.PropertyName, // eve.Entry.CurrentValues.GetValue<object>(ve.PropertyName), // ve.ErrorMessage); // } // } // throw; //} return(RedirectToAction("Details", new { id = aluguer.Id })); }