public ActionResult Create() { ViajeEditViewModel viajeVm = new ViajeEditViewModel { Autos = _dbContext.Autos.Where(a => a.Disponible).ToList(), Clientes = CargarListaClientes() }; return(View(viajeVm)); }
public ActionResult Create(ViajeEditViewModel viajeVm) { if (!ModelState.IsValid) { viajeVm.Autos = _dbContext.Autos.Where(a => a.Disponible).ToList(); viajeVm.Clientes = CargarListaClientes(); return(View(viajeVm)); } Viaje viaje = new Viaje { ViajeId = viajeVm.ViajeId, AutoId = viajeVm.AutoId, UsuarioId = viajeVm.UsuarioId, FechaHoraSalida = viajeVm.FechaHoraSalida, Estado = EstadoViaje.EnProceso }; if (_dbContext.Viajes.Any(v => v.UsuarioId == viaje.UsuarioId && v.Estado == EstadoViaje.EnProceso)) { viajeVm.Autos = _dbContext.Autos.Where(a => a.Disponible).ToList(); viajeVm.Clientes = CargarListaClientes(); ModelState.AddModelError(string.Empty, "Error: Usuario con viaje sin terminar..."); return(View(viajeVm)); } using (var tran = _dbContext.Database.BeginTransaction()) { try { _dbContext.Viajes.Add(viaje); var autoEnViaje = _dbContext.Autos.SingleOrDefault(a => a.AutoId == viaje.AutoId); if (autoEnViaje == null) { viajeVm.Autos = _dbContext.Autos.Where(a => a.Disponible).ToList(); viajeVm.Clientes = CargarListaClientes(); ModelState.AddModelError(String.Empty, "Joder... estamos en problemas"); return(View(viajeVm)); } autoEnViaje.Disponible = false; _dbContext.Entry(autoEnViaje).State = EntityState.Modified; _dbContext.SaveChanges(); tran.Commit(); TempData["Msg"] = "Viaje guardado..."; return(RedirectToAction("Index")); } catch (Exception ex) { viajeVm.Autos = _dbContext.Autos.Where(a => a.Disponible).ToList(); viajeVm.Clientes = CargarListaClientes(); ModelState.AddModelError(String.Empty, "Error al intentar guardar un viaje..."); tran.Rollback(); return(View(viajeVm)); } } }