예제 #1
0
        public ActionResult SelectDia(int?id)
        {
            var      menus    = new List <Menu>();
            var      lisCDias = new List <CDias>();
            var      HomeView = new HomeView();
            DateTime Fecha    = DateTime.Now.Date.Date;
            var      listDias = db.Dias.ToList();

            if (id != null)
            {
                var daymenu = db.DayMenu.Where(dm => dm.Cod_Dia == id).ToList();
                foreach (var item in daymenu)
                {
                    var Menus = db.Menus.Find(item.Cod_Menu);
                    menus.Add(Menus);
                }
            }
            foreach (var item in listDias)
            {
                var Cdias = new CDias
                {
                    Cantidad = db.DayMenu.Where(t => t.Cod_Dia == item.Cod_Dia).Count(),
                    IdDia    = item.Cod_Dia
                };
                lisCDias.Add(Cdias);
            }
            ViewBag.SeleDia    = id;
            HomeView.Menu      = new Menu();
            HomeView.Menus     = menus;
            HomeView.Dias      = listDias;
            HomeView.CantidadD = lisCDias;
            ViewBag.CMesas     = CantidadMesas.CMesas(db);
            return(View("Index", HomeView));
        }
        // GET: MesasOcupadas/Create
        public ActionResult Create(bool?C)
        {
            ViewBag.CMesas   = CantidadMesas.CMesas(db);
            ViewBag.Cod_Mesa = new SelectList(db.Mesas, "Cod_Mesa", "Numero_Mesa");
            var reservaView = new ReservaView();

            reservaView.Clientes      = new Clientes();
            reservaView.MesasOcupadas = new MesasOcupadas();
            return(View(reservaView));
        }
        public async Task <ActionResult> Create(ReservaView ReservaView, string RCM)
        {
            string   idMesa    = "";
            Guid     IdCliente = new Guid();
            int      codMesas  = 0;
            int      CMesas    = db.Mesas.ToList().Count();
            var      addr      = new AddR();
            DateTime hora      = DateTime.Now;

            if (RCM == "Reservar con menu")
            {
                RCM = Convert.ToString("1");
            }
            else
            {
                RCM = null;
            }
            if (ReservaView.MesasOcupadas.Fecha_MesasO < DateTime.Now.Date)
            {
                ModelState.AddModelError(string.Empty, "Ingrese una fecha mayor o igual ala actual");
                ViewBag.Error  = true;
                ViewBag.CMesas = CantidadMesas.CMesas(db);
                return(View(ReservaView));
            }
            //if (db.Restaurantes.FirstOrDefault().HoraCierre < TiempoEspera.Salida(ReservaView.MesasOcupadas.HoraIngreso_MesasO, db))
            //{
            //    ModelState.AddModelError(string.Empty, "Ingrese una fecha mayor posterior ala actual, por que el restaurante cierra alas "+ db.Restaurantes.FirstOrDefault().HoraCierre.ToString("hh:mm:ss"));
            //    ViewBag.Error = true;
            //    ViewBag.CMesas = CantidadMesas.CMesas(db);
            //    return View(ReservaView);
            //}
            if (ReservaView.MesasOcupadas.HoraIngreso_MesasO.TimeOfDay.Hours <= hora.TimeOfDay.Hours &&
                ReservaView.MesasOcupadas.HoraIngreso_MesasO.TimeOfDay.Minutes <= hora.TimeOfDay.Minutes &&
                DateTime.Now.Date == ReservaView.MesasOcupadas.Fecha_MesasO)
            {
                ModelState.AddModelError(string.Empty, "Ingrese una hora mayor ala actual");
                ViewBag.Error  = true;
                ViewBag.CMesas = CantidadMesas.CMesas(db);
                return(View(ReservaView));
            }
            if (ReservaView.MesasOcupadas.CPersonas_Mesas <= 0)
            {
                ModelState.AddModelError(string.Empty, "Ingrese una cantidad de personas mayor a cero");
                ViewBag.Error  = true;
                ViewBag.CMesas = CantidadMesas.CMesas(db);
                return(View(ReservaView));
            }
            if (ModelState.IsValid)
            {
                using (var transacion = db.Database.BeginTransaction())
                {
                    try
                    {
                        int cantida = CantidadMesas.CMesa(ReservaView.MesasOcupadas.Fecha_MesasO, ReservaView.MesasOcupadas.HoraIngreso_MesasO, db);
                        int i2      = 1;
                        if ((ReservaView.MesasOcupadas.CPersonas_Mesas % 4) == 0)
                        {
                            IdCliente = Cliente.idCliente(ReservaView.Clientes.Correo_Cli, ReservaView.Clientes.Nombres_Cli, ReservaView.Clientes.Apellidos_Cli, ReservaView.Clientes.Telefono_Cli, db);
                            int CRMesas = (ReservaView.MesasOcupadas.CPersonas_Mesas / 4);
                            if (CRMesas > cantida && ReservaView.MesasOcupadas.Fecha_MesasO == DateTime.Now.Date)
                            {
                                ModelState.AddModelError(string.Empty, string.Format("No hay mesas suficiente para hacer su reserva, por favor seleciones una fecha posterior a esta {0} y maximo de {1} persona", ReservaView.MesasOcupadas.Fecha_MesasO.ToString("dd/MM/yyyy"), (CMesas * 4)));
                                ViewBag.Error  = true;
                                ViewBag.CMesas = CantidadMesas.CMesas(db);
                                return(View(ReservaView));
                            }
                            else if (CRMesas > cantida && ReservaView.MesasOcupadas.Fecha_MesasO > DateTime.Now.Date)
                            {
                                ModelState.AddModelError(string.Empty, string.Format("No hay mesas suficiente para hacer su reserva, maximo de {0}", (CMesas * 4)));
                                ViewBag.Error  = true;
                                ViewBag.CMesas = CantidadMesas.CMesas(db);
                                return(View(ReservaView));
                            }
                            for (int i = 1; i <= CMesas; i++)
                            {
                                if (i2 <= CRMesas)
                                {
                                    var Nmesa = ("M " + i);
                                    var mesa  = db.Mesas.Where(m => m.Numero_Mesa == Nmesa).ToList();
                                    foreach (var item in mesa)
                                    {
                                        int valor = MesasOcupada.Lista(item.Cod_Mesa, ReservaView.MesasOcupadas.Fecha_MesasO, db, ReservaView.MesasOcupadas.HoraIngreso_MesasO).Count();
                                        if (valor == 0)
                                        {
                                            //int HoraS = ReservaView.MesasOcupadas.HoraIngreso_MesasO.TimeOfDay.Hours;
                                            //HoraS = HoraS + 2;
                                            var mesasO = new MesasOcupadas
                                            {
                                                Cod_Mesa           = item.Cod_Mesa,
                                                Estado_MesasO      = true,
                                                ConfirmarMesa      = false,
                                                Reservada          = "PaginaWeb",
                                                CPersonas_Mesas    = ReservaView.MesasOcupadas.CPersonas_Mesas,
                                                Fecha_MesasO       = ReservaView.MesasOcupadas.Fecha_MesasO,
                                                HoraIngreso_MesasO = ReservaView.MesasOcupadas.HoraIngreso_MesasO,
                                                HoraSalida_MesasO  = TiempoEspera.Salida(ReservaView.MesasOcupadas.HoraIngreso_MesasO, db)
                                                                     //HoraSalida_MesasO = new DateTime(ReservaView.MesasOcupadas.HoraIngreso_MesasO.Year, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Month, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Day,
                                                                     //                                  HoraS, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Minute, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Second)
                                            };
                                            db.MesasOcupadas.Add(mesasO);
                                            db.SaveChanges();
                                            codMesas = MesasOcupada.Lista(item.Cod_Mesa, ReservaView.MesasOcupadas.Fecha_MesasO, db, ReservaView.MesasOcupadas.HoraIngreso_MesasO).Max(mo => mo.Cod_MesasO);
                                            idMesa   = codMesas + "," + idMesa;
                                            i2++;
                                        }
                                    }
                                }
                                else
                                {
                                    i = CMesas;
                                }
                            }
                        }
                        else
                        {
                            IdCliente = Cliente.idCliente(ReservaView.Clientes.Correo_Cli, ReservaView.Clientes.Nombres_Cli, ReservaView.Clientes.Apellidos_Cli, ReservaView.Clientes.Telefono_Cli, db);
                            int CRMesas = (ReservaView.MesasOcupadas.CPersonas_Mesas / 4) + 1;
                            if (CRMesas >= cantida && ReservaView.MesasOcupadas.Fecha_MesasO == DateTime.Now.Date)
                            {
                                ModelState.AddModelError(string.Empty, string.Format("No hay mesas suficiente para hacer su reserva, por favor seleciones una fecha posterior a esta {0}", ReservaView.MesasOcupadas.Fecha_MesasO.ToString("dd/MM/yyyy")));
                                ViewBag.Error  = true;
                                ViewBag.CMesas = CantidadMesas.CMesas(db);
                                return(View(ReservaView));
                            }
                            else if (CRMesas > cantida && ReservaView.MesasOcupadas.Fecha_MesasO > DateTime.Now.Date)
                            {
                                ModelState.AddModelError(string.Empty, string.Format("No hay mesas suficiente para hacer su reserva, maximo de {0} personas", (CMesas * 4)));
                                ViewBag.Error  = true;
                                ViewBag.CMesas = CantidadMesas.CMesas(db);
                                return(View(ReservaView));
                            }
                            for (int i = 1; i <= CMesas; i++)
                            {
                                if (i2 <= CRMesas)
                                {
                                    var Nmesa = ("M " + i);
                                    var mesa  = db.Mesas.Where(m => m.Numero_Mesa == Nmesa).ToList();
                                    foreach (var item in mesa)
                                    {
                                        int codMesa = item.Cod_Mesa;
                                        int valor   = MesasOcupada.Lista(item.Cod_Mesa, ReservaView.MesasOcupadas.Fecha_MesasO, db, ReservaView.MesasOcupadas.HoraIngreso_MesasO).Count();
                                        if (valor == 0)
                                        {
                                            //int HoraS = ReservaView.MesasOcupadas.HoraIngreso_MesasO.TimeOfDay.Hours;
                                            //HoraS = HoraS + 2;
                                            var mesasO = new MesasOcupadas
                                            {
                                                Cod_Mesa           = item.Cod_Mesa,
                                                Estado_MesasO      = true,
                                                ConfirmarMesa      = false,
                                                Reservada          = "PaginaWeb",
                                                CPersonas_Mesas    = ReservaView.MesasOcupadas.CPersonas_Mesas,
                                                Fecha_MesasO       = ReservaView.MesasOcupadas.Fecha_MesasO,
                                                HoraIngreso_MesasO = ReservaView.MesasOcupadas.HoraIngreso_MesasO,
                                                HoraSalida_MesasO  = TiempoEspera.Salida(ReservaView.MesasOcupadas.HoraIngreso_MesasO, db)
                                                                     //HoraSalida_MesasO = new DateTime(ReservaView.MesasOcupadas.HoraIngreso_MesasO.Year, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Month, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Day,
                                                                     //                                  HoraS, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Minute, ReservaView.MesasOcupadas.HoraIngreso_MesasO.Second)
                                            };
                                            db.MesasOcupadas.Add(mesasO);
                                            db.SaveChanges();
                                            codMesas = MesasOcupada.Lista(item.Cod_Mesa, ReservaView.MesasOcupadas.Fecha_MesasO, db, ReservaView.MesasOcupadas.HoraIngreso_MesasO).Max(mo => mo.Cod_MesasO);
                                            idMesa   = codMesas + "," + idMesa;
                                            i2++;
                                        }
                                    }
                                }
                                else
                                {
                                    i = CMesas;
                                }
                            }
                        }
                        string[] MenuCantidad = new string[db.Menus.Count()];
                        int      IdMesasO     = 0;
                        string   ramdo        = Ramdon.Numero();
                        Reserva.DetalleMenuCliente(IdCliente, "," + idMesa, "PaginaWeb-" + ramdo, db, SeparadorMenu.Menu(MenuCantidad, MenuCantidad), IdMesasO, null);
                        addr = new AddR
                        {
                            add      = RCM,
                            CPersona = ReservaView.MesasOcupadas.CPersonas_Mesas.ToString(),
                            IdC      = IdCliente,
                            IdM      = codMesas,
                            IdMesaO  = codMesas,
                            NCF      = "PaginaWeb-" + ramdo
                        };
                        if (RCM == null)
                        {
                            await SendEmail.ConfirmarReserva(IdCliente, "PaginaWeb-" + ramdo, db);

                            transacion.Commit();
                        }
                        else
                        {
                            transacion.Commit();
                            return(RedirectToAction("MenuVista", "Menus", addr));
                        }
                        return(RedirectToAction("ConReserva", "MesasOcupadas", addr));
                    }
                    catch (Exception ex)
                    {
                        ViewBag.CMesas = CantidadMesas.CMesas(db);
                        transacion.Rollback();
                        ModelState.AddModelError(string.Empty, "Error al Reservar " + ex.Message);
                        ViewBag.Error = true;
                        return(View(ReservaView));
                    }
                }
            }
            ViewBag.CMesas = CantidadMesas.CMesas(db);
            return(View(ReservaView));
        }
예제 #4
0
        public ActionResult Index()
        {
            var listDias = new List <Models.Dias>();
            var HomeView = new HomeView();

            using (var transacion = db.Database.BeginTransaction())
            {
                try
                {
                    string correo   = WebConfigurationManager.AppSettings["mailAccount"];
                    var    clientes = db.Clientes.ToList();
                    var    cliente  = clientes.Where(t => t.Correo_Cli == correo);
                    var    listaDT  = db.TipoDocumentoes.ToList();
                    listDias = db.Dias.ToList();
                    if (listDias.Count() == 0 && cliente.Count() == 0 && listaDT.Count() == 0)
                    {
                        Cliente.idCliente(WebConfigurationManager.AppSettings["mailAccount"], "NRestaurante", "PRestaurante", "3177965608", db);
                        ClasesUtil.Dias.listaDias(db);
                        TipoDocumentos.ListaTD(db);
                        listDias = db.Dias.ToList();
                    }
                    var menus    = new List <Menu>();
                    var lisCDias = new List <CDias>();
                    var Dia      = DateTime.Now.DayOfWeek;
                    switch (Dia)
                    {
                    case DayOfWeek.Sunday:
                        var Sunday = db.DayMenu.Where(dm => dm.Cod_Dia == 7).ToList();
                        foreach (var item in Sunday)
                        {
                            var Menus = db.Menus.Find(item.Cod_Menu);
                            menus.Add(Menus);
                        }
                        ViewBag.CMesas = CantidadMesas.CMesas(db);

                        break;

                    case DayOfWeek.Monday:
                        var Monday = db.DayMenu.Where(dm => dm.Cod_Dia == 1).ToList();
                        foreach (var item in Monday)
                        {
                            var Menus = db.Menus.Find(item.Cod_Menu);
                            menus.Add(Menus);
                        }
                        ViewBag.CMesas = CantidadMesas.CMesas(db);
                        break;

                    case DayOfWeek.Tuesday:
                        var Tuesday = db.DayMenu.Where(dm => dm.Cod_Dia == 2).ToList();
                        foreach (var item in Tuesday)
                        {
                            var Menus = db.Menus.Find(item.Cod_Menu);
                            menus.Add(Menus);
                        }
                        ViewBag.CMesas = CantidadMesas.CMesas(db);
                        break;

                    case DayOfWeek.Wednesday:
                        var Wednesday = db.DayMenu.Where(dm => dm.Cod_Dia == 3).ToList();
                        ViewBag.CWednesday = db.DayMenu.Where(dm => dm.Cod_Dia == 3).Count();
                        ViewBag.Wednesday  = "Miercoles";
                        foreach (var item in Wednesday)
                        {
                            var Menus = db.Menus.Find(item.Cod_Menu);
                            menus.Add(Menus);
                        }
                        ViewBag.CMesas = CantidadMesas.CMesas(db);
                        break;

                    case DayOfWeek.Thursday:
                        var Thursday = db.DayMenu.Where(dm => dm.Cod_Dia == 4).ToList();
                        foreach (var item in Thursday)
                        {
                            var Menus = db.Menus.Find(item.Cod_Menu);
                            menus.Add(Menus);
                        }
                        ViewBag.CMesas = CantidadMesas.CMesas(db);
                        break;

                    case DayOfWeek.Friday:
                        var Friday = db.DayMenu.Where(dm => dm.Cod_Dia == 5).ToList();
                        foreach (var item in Friday)
                        {
                            var Menus = db.Menus.Find(item.Cod_Menu);
                            menus.Add(Menus);
                        }
                        ViewBag.CMesas = CantidadMesas.CMesas(db);
                        break;

                    case DayOfWeek.Saturday:
                        var Saturday = db.DayMenu.Where(dm => dm.Cod_Dia == 6).ToList();
                        foreach (var item in Saturday)
                        {
                            var Menus = db.Menus.Find(item.Cod_Menu);
                            menus.Add(Menus);
                        }
                        ViewBag.CMesas = CantidadMesas.CMesas(db);
                        break;

                    default:
                        break;
                    }
                    var listaD = db.Dias.ToList();
                    foreach (var item in listaD)
                    {
                        var Cdias = new CDias
                        {
                            Cantidad = db.DayMenu.Where(t => t.Cod_Dia == item.Cod_Dia).Count(),
                            IdDia    = item.Cod_Dia
                        };
                        lisCDias.Add(Cdias);
                    }
                    HomeView.Menu      = new Menu();
                    HomeView.Menus     = menus;
                    HomeView.Dias      = listDias;
                    HomeView.CantidadD = lisCDias;
                    transacion.Commit();
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                    transacion.Rollback();
                }
            }
            return(View(HomeView));
        }