예제 #1
0
        public ActionResult Create()
        {
            ViajeEditViewModel viajeVm = new ViajeEditViewModel
            {
                Autos    = _dbContext.Autos.Where(a => a.Disponible).ToList(),
                Clientes = CargarListaClientes()
            };

            return(View(viajeVm));
        }
예제 #2
0
        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));
                }
            }
        }