Example #1
0
        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));
                }
            }
        }
Example #2
0
        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));
        }