示例#1
0
        //
        // GET: /Reserva/
        public ActionResult Crear(int id = 0)
        {
            ReservaModel model = new ReservaModel();

            //ViewBag.SesionId = new SelectList(db.SesionConjunto, "Id", "Id");
            return fillModelFor(model, id);
        }
示例#2
0
        public ActionResult Crear(ReservaModel reservamodel, string[] butacas)
        {
            bool error = false;
                if (!reservamodel.PermiteEnEfectivo && String.IsNullOrWhiteSpace(reservamodel.TarjetaCredito))
                {
                    ModelState.AddModelError("", "No se ha especificado un número de tarjeta de crédito.");
                    error = true;
                }
                if (butacas == null || butacas.Length == 0)
                {
                    ModelState.AddModelError("", "No se han seleccionado butacas.");
                    error = true;
                }

                if (error)
                    return fillModelFor(reservamodel, reservamodel.Sesion.Id);

                // Aquí se debería validar la tarjeta de crédito
                List<Reserva> reservas = new List<Reserva>();

                for (int i = 0; i < butacas.Length;i++ )
                {
                    String[] butaca = butacas[i].Split(':');

                    // Buscamos el usuario
                    Usuario user = db.UsuarioConjunto.FirstOrDefault(x => x.Login.Equals(User.Identity.Name));

                    //Buscamos la sesion completa
                    Sesion sesion = db.SesionConjunto.FirstOrDefault(x => x.Id.Equals(reservamodel.Sesion.Id));

                    //Añadimos el objeto al mapeador
                    Reserva reserva = new Reserva() {Fila=Int32.Parse(butaca[0]), Columna=Int32.Parse(butaca[1]), SesionId=reservamodel.Sesion.Id, UsuarioId=user.Id, Precio = sesion.PrecioCalculado, Sesion=sesion, Usuario=user};

                    // Si hay alguna butaca reservada ya cancelamos la operación
                    if (db.ReservaConjunto.FirstOrDefault(r => r.Fila == reserva.Fila && r.Columna == reserva.Columna && r.Sesion.Id == sesion.Id) != null)
                    {
                        foreach (Reserva nocompletada in reservas) // Borramos las reservas no completadas del contenedor
                            db.ReservaConjunto.Remove(nocompletada);

                        ModelState.AddModelError("", "Butaca ya reservada.");

                        return fillModelFor(reservamodel, reservamodel.Sesion.Id);
                    }

                    db.ReservaConjunto.Add(reserva);
                    reservas.Add(reserva);
                }

                db.SaveChanges();

                ReciboModel recibo = new ReciboModel();
                recibo.reservas = reservas;
                //recibo.FormaDePago = reservamodel.FormaDePago;
                TempData["recibo"] = recibo;

                return RedirectToAction("Recibo","Reserva");
        }
示例#3
0
        private ActionResult fillModelFor(ReservaModel model, int sesion)
        {
            //Seguridad
            Usuario user = db.UsuarioConjunto.FirstOrDefault(x => x.Login.Equals(User.Identity.Name));
            if (user != null && user.Rol >= 0)
            {
                if (user.Rol == 0)
                    model.PermiteEnEfectivo = false;
                else
                    model.PermiteEnEfectivo = true;

                model.Sesion = db.SesionConjunto.FirstOrDefault(x => x.Id.Equals(sesion));

                // Elemento temporal para construir la tabla de checkboxes
                model.Ocupacion = new Butaca[model.Sesion.Sala.Filas * model.Sesion.Sala.Columnas];

                int k = 0;
                for (int i = 0; i < model.Sesion.Sala.Filas; i++)
                    for (int j = 0; j < model.Sesion.Sala.Columnas; j++)
                    {
                        model.Ocupacion[k] = new Butaca();
                        model.Ocupacion[k].Fila = i;
                        model.Ocupacion[k].Columna = j;
                        model.Ocupacion[k].Ocupada = db.ReservaConjunto.FirstOrDefault(r => r.Fila == i && r.Columna == j && r.Sesion.Id == model.Sesion.Id) != null;
                        k++;
                    }
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }

            return View(model);
        }