public ActionResult Finish(ViajeFinishViewModel viajeVm) { if (!ModelState.IsValid) { return(View(viajeVm)); } Viaje viajeEnProceso = _dbContext.Viajes .SingleOrDefault(v => v.ViajeId == viajeVm.ViajeId); viajeEnProceso.Estado = EstadoViaje.Finalizado; viajeEnProceso.FechaHoraLlegada = viajeVm.FechaHoraLlegada; viajeEnProceso.Costo = viajeVm.Costo; using (var tran = _dbContext.Database.BeginTransaction()) { try { _dbContext.Entry(viajeEnProceso).State = EntityState.Modified; var autoEnViaje = _dbContext.Autos .SingleOrDefault(a => a.AutoId == viajeEnProceso.AutoId); autoEnViaje.Disponible = true; _dbContext.Entry(autoEnViaje).State = EntityState.Modified; _dbContext.SaveChanges(); tran.Commit(); TempData["Msg"] = "Viaje finalizado"; return(RedirectToAction("Index")); } catch (Exception ex) { ModelState.AddModelError(string.Empty, "Error al intentar finalizar un viaje"); tran.Rollback(); return(View(viajeVm)); } } }
public ActionResult Finish(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Viaje viajeEnProceso = _dbContext.Viajes .Include(v => v.Auto) .Include(v => v.Usuario) .SingleOrDefault(v => v.ViajeId == id); if (viajeEnProceso == null || viajeEnProceso.Estado != EstadoViaje.EnProceso) { return(HttpNotFound("Código de viaje erróneo o viaje no En Proceso")); } ViajeFinishViewModel viajeVm = new ViajeFinishViewModel() { ViajeId = viajeEnProceso.ViajeId, MovilId = viajeEnProceso.Auto.MovilId, Cliente = viajeEnProceso.Usuario.NombreApellido, FechaHoraSalida = viajeEnProceso.FechaHoraSalida, EstadoViaje = viajeEnProceso.Estado }; return(View(viajeVm)); }