Ejemplo n.º 1
0
        //desativar estado dependiendo si a llegado al restaurante o no
        public static void Desactivar2(WebRestauranteContext db)
        {
            var      MesasOcupada = new List <MesasOcupadas>();
            DateTime fecha        = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            DateTime Hora         = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds);

            MesasOcupada = db.MesasOcupadas.Where(t => t.Fecha_MesasO == fecha).ToList();
            MesasOcupada = MesasOcupada.Where(t => Hora > t.HoraSalida_MesasO).ToList();
            MesasOcupada = MesasOcupada.Where(t => t.Llegada_MesasO == false).ToList();
            MesasOcupada = MesasOcupada.Where(t => t.Estado_MesasO == true).ToList();
            if (MesasOcupada.Count() != 0)
            {
                foreach (var item in MesasOcupada)
                {
                    MesasOcupadas MO      = db.MesasOcupadas.Find(item.Cod_MesasO);
                    var           Detalle = db.DetalleMesasCliente.Where(t => t.Cod_MesasO == item.Cod_MesasO).ToList();
                    foreach (var item1 in Detalle)
                    {
                        DetalleMesasCliente DMC = db.DetalleMesasCliente.Find(item1.Id_DMC);
                        DMC.Estado_DMC      = false;
                        db.Entry(DMC).State = System.Data.Entity.EntityState.Modified;
                    }

                    MO.Estado_MesasO   = false;
                    db.Entry(MO).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }
            }
        }
Ejemplo n.º 2
0
        public ActionResult AnadirMenu(int?IdM, Guid IdC, int?IdMesaO, int?add)
        {
            var listMenu = new List <MenuList>();
            var addMenus = new AddMenu();

            try
            {
                if (add == null)
                {
                    if (IdC == null || IdM == null)
                    {
                        //return HttpNotFound();
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                    }
                    if (IdMesaO != null)
                    {
                        MesasOcupadas MO = db.MesasOcupadas.Find(IdMesaO);
                        addMenus.CPersona = Convert.ToInt32(MO.CPersonas_Mesas);
                        var DMO = db.DetalleMesasCliente.Where(t => t.Cod_MesasO == IdMesaO).ToList();
                        foreach (var item in DMO)
                        {
                            if (item.Cod_Cli != IdC || item.MesasOcupadas.Mesas.Cod_Mesa != IdM)
                            {
                                return(HttpNotFound());
                            }
                            if (item.PedidoM == true)
                            {
                                var MC = new MenuList
                                {
                                    checkbox = true,
                                    IdMenus  = item.Cod_Menu,
                                    cantidad = item.Cantidad_DMC,
                                    TMenu    = item.Menu.Cod_TMenu
                                };
                                listMenu.Add(MC);
                            }
                        }
                    }
                    addMenus.Menus     = db.Menus.Where(t => t.Estado_Menu == true).OrderBy(t => t.Cod_TMenu).ToList();
                    addMenus.TipoMenus = db.TipoMenus.Where(t => t.Estado_TMenu == true).ToList();
                    addMenus.IdCliente = IdC;
                    addMenus.Mesa      = db.Mesas.Find(IdM);
                    addMenus.IdMenu    = Convert.ToInt32(IdM);
                    addMenus.IdMesasO  = Convert.ToInt32(IdMesaO);
                    addMenus.checkbox  = listMenu;
                }
            }
            catch (Exception ex)
            {
                addMenus.Menus = db.Menus.OrderBy(t => t.Cod_TMenu).ToList();
                ModelState.AddModelError(string.Empty, ex.Message);
                addMenus.TipoMenus = db.TipoMenus.ToList();
                addMenus.IdCliente = IdC;
                addMenus.Mesa      = db.Mesas.Find(IdM);
                addMenus.IdMenu    = Convert.ToInt32(IdM);
                addMenus.checkbox  = listMenu;
                return(View(addMenus));
            }
            return(View(addMenus));
        }
Ejemplo n.º 3
0
        public static bool ingresar(WebRestauranteContext db, int IdM, Guid IdC, string[] selectedMenu, string[] DCantida, int?IdMesaO, string CPersona, bool?TR)
        {
            int horaS = DateTime.Now.TimeOfDay.Hours;

            horaS = horaS + 2;
            if (IdMesaO != 0)
            {
                var MO = db.MesasOcupadas.Find(IdMesaO);
                Reserva.DetalleMenuCliente(IdC, "," + MO.Cod_MesasO, MO.Reservada, db, SeparadorMenu.Menu(selectedMenu, DCantida), IdMesaO, TR);
                return(true);
            }
            else
            {
                Mover.Mesas(IdM, db);
                int A      = DateTime.Now.Year;
                var mesasO = new MesasOcupadas
                {
                    Cod_Mesa           = IdM,
                    Estado_MesasO      = true,
                    ConfirmarMesa      = true,
                    CPersonas_Mesas    = Convert.ToInt32(CPersona),
                    Fecha_MesasO       = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day),
                    HoraIngreso_MesasO = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds),
                    HoraSalida_MesasO  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, horaS, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds),
                    Llegada_MesasO     = true,
                    Reservada          = "Restaurante"
                };
                db.MesasOcupadas.Add(mesasO);
                db.SaveChanges();
                var codMesas = MesasOcupada.Lista(IdM, mesasO.Fecha_MesasO, db, mesasO.HoraIngreso_MesasO).Max(mo => mo.Cod_MesasO);
                Reserva.DetalleMenuCliente(IdC, "," + codMesas, "Restaurante-" + Ramdon.Numero(), db, SeparadorMenu.Menu(selectedMenu, DCantida), IdMesaO, TR);
                return(true);
            }
        }
Ejemplo n.º 4
0
        public static void Mesas(int IdM, WebRestauranteContext db)
        {
            var      MesasO = new List <MesasOcupadas>();
            var      Mover  = new List <MesasOcupadas>();
            DateTime Fecha  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            DateTime hora1  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds);
            int      H      = DateTime.Now.TimeOfDay.Hours;

            H = H + 1;
            DateTime hora2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, H, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds);

            MesasO = db.MesasOcupadas.Where(t => t.Fecha_MesasO == Fecha).ToList();
            MesasO = MesasO.Where(t => (t.HoraIngreso_MesasO <= hora2 && hora1 < t.HoraIngreso_MesasO) || t.HoraSalida_MesasO >= hora1).ToList();
            MesasO = MesasO.Where(t => t.Cod_Mesa == IdM).ToList();
            foreach (var item in MesasO)
            {
                Mover = db.MesasOcupadas.Where(t => t.Fecha_MesasO == Fecha).ToList();
                Mover = Mover.Where(t => (t.HoraIngreso_MesasO <= hora2 && hora1 < t.HoraIngreso_MesasO) || t.HoraSalida_MesasO >= hora1).ToList();
                for (int i = 1; i <= db.Mesas.Count(); i++)
                {
                    var Mover1 = Mover.Where(t => t.Cod_Mesa == i).ToList();
                    if (Mover1.Count == 0)
                    {
                        MesasOcupadas MO = db.MesasOcupadas.Find(item.Cod_MesasO);
                        MO.Cod_Mesa        = i;
                        db.Entry(MO).State = System.Data.Entity.EntityState.Modified;
                        db.SaveChanges();
                        i = db.Mesas.Count();
                    }
                }
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            MesasOcupadas mesasOcupadas = db.MesasOcupadas.Find(id);

            db.MesasOcupadas.Remove(mesasOcupadas);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit(MesasOcupadas mesasOcupadas)
 {
     if (ModelState.IsValid)
     {
         db.Entry(mesasOcupadas).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.Cod_Mesa = new SelectList(db.Mesas, "Cod_Mesa", "Numero_Mesa", mesasOcupadas.Cod_Mesa);
     return(View(mesasOcupadas));
 }
        // GET: MesasOcupadas/Delete/5
        public ActionResult Delete(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MesasOcupadas mesasOcupadas = db.MesasOcupadas.Find(id);

            if (mesasOcupadas == null)
            {
                return(HttpNotFound());
            }
            return(View(mesasOcupadas));
        }
        // GET: MesasOcupadas/Edit/5
        public ActionResult Edit(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MesasOcupadas mesasOcupadas = db.MesasOcupadas.Find(id);

            if (mesasOcupadas == null)
            {
                return(HttpNotFound());
            }
            ViewBag.Cod_Mesa = new SelectList(db.Mesas, "Cod_Mesa", "Numero_Mesa", mesasOcupadas.Cod_Mesa);
            return(View(mesasOcupadas));
        }
Ejemplo n.º 9
0
        public static List <MesasOcupadas> Lista(Guid IdC, int IdM, WebRestauranteContext db, DateTime fecha, DateTime hora)
        {
            var lista = new List <MesasOcupadas>();

            foreach (var item in db.Mesas.ToList())
            {
                var MesasOcupada  = db.MesasOcupadas.Where(mo => mo.Cod_Mesa == item.Cod_Mesa).ToList();
                var MesasODate    = MesasOcupada.Where(mo => (mo.Fecha_MesasO >= fecha)).ToList();
                var MesasOHora    = MesasODate.Where(mo => ((mo.HoraIngreso_MesasO <= hora) || (mo.HoraSalida_MesasO >= hora))).ToList();
                var MesasOcupadas = MesasOHora.Where(mo => mo.Estado_MesasO == true).ToList();
                if (MesasOcupadas.Count > 0)
                {
                    string Mo = MesasOcupadas.Where(t => t.Cod_Mesa == IdM).Select(t => t.Reservada).FirstOrDefault();
                    foreach (var item1 in MesasOcupadas)
                    {
                        if (item1.Reservada != Mo)
                        {
                            if (item1.Llegada_MesasO == true)
                            {
                                var mo = new MesasOcupadas
                                {
                                    Cod_Mesa           = item1.Cod_Mesa,
                                    Cod_MesasO         = item1.Cod_MesasO,
                                    ConfirmarMesa      = item1.ConfirmarMesa,
                                    CPersonas_Mesas    = item1.CPersonas_Mesas,
                                    Estado_MesasO      = item1.Estado_MesasO,
                                    Fecha_MesasO       = item1.Fecha_MesasO,
                                    HoraIngreso_MesasO = item1.HoraIngreso_MesasO,
                                    HoraSalida_MesasO  = item1.HoraSalida_MesasO,
                                    Llegada_MesasO     = item1.Llegada_MesasO,
                                    Reservada          = item1.Reservada
                                };
                                lista.Add(mo);
                            }
                        }
                    }
                }
            }
            return(lista);
        }
Ejemplo n.º 10
0
        public ActionResult DetalleReserva(string Idr, Guid Idc)
        {
            var DetalleReserva = new DetalleReserva();
            int CMesas         = 0;
            var Idreserva      = db.DetalleMesasCliente.Where(r => r.Cod_Cli == Idc && r.NConfirmacion_DMC == Idr).ToList();

            foreach (var item in Idreserva)
            {
                MesasOcupadas mesasOcupadas = db.MesasOcupadas.Find(item.Cod_MesasO);
                if (mesasOcupadas.ConfirmarMesa == true)
                {
                    return(HttpNotFound());
                    //return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                mesasOcupadas.ConfirmarMesa   = true;
                db.Entry(mesasOcupadas).State = EntityState.Modified;
                db.SaveChanges();
                DetalleReserva.MesasOcupada = mesasOcupadas;
                CMesas++;
            }
            ViewBag.CMesas         = CMesas;
            DetalleReserva.Cliente = db.Clientes.Find(Idc);
            return(View(DetalleReserva));
        }
Ejemplo n.º 11
0
        public ActionResult Desactivar(Guid idD, int?page)
        {
            page = (page ?? 1);
            var  reservas = new List <ListadoReserva>();
            Guid id       = new Guid();
            var  mesaso   = db.DetalleMesasCliente.Where(drm => drm.Cod_Cli == idD).ToList();

            foreach (var item in mesaso)
            {
                MesasOcupadas mesa = db.MesasOcupadas.Find(item.Cod_MesasO);
                mesa.Estado_MesasO   = false;
                db.Entry(mesa).State = EntityState.Modified;
                db.SaveChanges();
            }
            DateTime fecha         = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            var      Fmesasocupada = db.MesasOcupadas.Where(mo => (mo.Fecha_MesasO == fecha)).ToList();
            var      Hmesasocupada = Fmesasocupada.Where(mo => ((new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds) >= mo.HoraIngreso_MesasO) ||
                                                                (new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds) <= mo.HoraSalida_MesasO))).ToList();
            var Fmesasocupadas = db.MesasOcupadas.Where(mo => (mo.Fecha_MesasO > fecha && mo.Estado_MesasO == true)).ToList();
            var Filtro         = Hmesasocupada.Where(mo => mo.Estado_MesasO == true).ToList();

            foreach (var item in Filtro)
            {
                var  idreserva = db.DetalleMesasCliente.Where(drm => drm.Cod_MesasO == item.Cod_MesasO).ToList();
                Guid idd       = idreserva.FirstOrDefault().Cod_Cli;
                var  cliente   = db.Clientes.Find(idd);
                if (idreserva.FirstOrDefault().Cod_Cli != id)
                {
                    id = idreserva.FirstOrDefault().Cod_Cli;
                    var    Creserva = db.DetalleMesasCliente.Where(drm => drm.Cod_Cli == idd).Count();
                    string Nombre   = string.Format("{0} {1}", cliente.Nombres_Cli, cliente.Apellidos_Cli);
                    var    reserva  = new ListadoReserva
                    {
                        Nombre       = Nombre,
                        Cpersonas    = item.CPersonas_Mesas,
                        Cmesas       = Creserva,
                        Fecha        = item.Fecha_MesasO,
                        HoraI        = item.HoraIngreso_MesasO,
                        Confirmacion = item.ConfirmarMesa,
                        IdCliente    = idd
                    };
                    reservas.Add(reserva);
                }
            }
            foreach (var item in Fmesasocupadas)
            {
                var  idreserva = db.DetalleMesasCliente.Where(drm => drm.Cod_MesasO == item.Cod_MesasO).ToList();
                Guid idd       = idreserva.FirstOrDefault().Cod_Cli;
                var  cliente   = db.Clientes.Find(idd);
                if (idreserva.FirstOrDefault().Cod_Cli != id)
                {
                    id = idreserva.FirstOrDefault().Cod_Cli;
                    var    Creserva = db.DetalleMesasCliente.Where(drm => drm.Cod_Cli == idd).Count();
                    string Nombre   = string.Format("{0} {1}", cliente.Nombres_Cli, cliente.Apellidos_Cli);
                    var    reserva  = new ListadoReserva
                    {
                        Nombre       = Nombre,
                        Cpersonas    = item.CPersonas_Mesas,
                        Cmesas       = Creserva,
                        Fecha        = item.Fecha_MesasO,
                        HoraI        = item.HoraIngreso_MesasO,
                        Confirmacion = item.ConfirmarMesa,
                        IdCliente    = idd
                    };
                    reservas.Add(reserva);
                }
            }
            var Reserva = reservas.OrderBy(r => r.Fecha).ToList();

            return(View("ListadoReserva", Reserva.ToPagedList((int)page, 5)));
        }
Ejemplo n.º 12
0
        public ActionResult Detalles(int?IdM, Guid?IdC, int?IdMesaO, string NC, int?D, bool?F, string Add)
        {
            var     Cliente = new Clientes(); var edetalle = new EDetalles();
            var     DCM = new List <DetalleMesasCliente>();
            var     listMesasO = new List <MesasOcupadas>();
            var     addMesasO = new List <MesasOcupadas>();
            var     ListMenu = new List <Menu>();
            var     TipoDocumento = new TipoDocumento();
            var     Detalle = new DetalleView();
            int     imesas = 0, imenu = 0;
            decimal Valor = 0;
            string  aux   = "";

            using (var transacion = db.Database.BeginTransaction())
            {
                try
                {
                    if (Add != null)
                    {
                        string   aux2 = "";
                        string[] x    = Add.Split(new char[] { ',' });
                        for (int i = 0; i < x.Length; i++)
                        {
                            if (x[i] != "")
                            {
                                int add = Convert.ToInt32(x[i]);
                                if (add < 0)
                                {
                                    string[] x2 = x[i].Split(new char[] { '-' });
                                    aux2 = aux2 + "," + x2[1];
                                }
                            }
                        }
                        if (aux2 != "")
                        {
                            string[] x3 = aux2.Split(new char[] { ',' });
                            for (int i = 0; i < x3.Length; i++)
                            {
                                if (x3[i] != "")
                                {
                                    string[] x4 = Add.Split(new char[] { ',' });
                                    Add = "";
                                    for (int i1 = 0; i1 < x4.Length; i1++)
                                    {
                                        if (x4[i1] != "")
                                        {
                                            if (x4[i1] != x3[i] && Convert.ToInt32(x4[i1]) > 0)
                                            {
                                                Add = Add + "," + x4[i1];
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (Add != "")
                        {
                            var      DCM2 = new List <DetalleMesasCliente>();
                            string[] s    = Add.Split(new char[] { ',' });
                            for (int i = 0; i < s.Length; i++)
                            {
                                if (s[i] != "")
                                {
                                    int add = Convert.ToInt32(s[i]);
                                    if (add > 0)
                                    {
                                        DCM2 = db.DetalleMesasCliente.Where(t => t.Cod_MesasO == add).ToList();
                                        foreach (var item in DCM2)
                                        {
                                            if ((item.Estado_DMC == true) || (F != null))
                                            {
                                                DetalleMesasCliente a = db.DetalleMesasCliente.Find(item.Id_DMC);
                                                DCM.Add(a);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (F == null)
                    {
                        var DCM1 = new List <DetalleMesasCliente>();
                        DCM1 = db.DetalleMesasCliente.Where(t => t.Cod_Cli == IdC && t.NConfirmacion_DMC == NC).ToList();
                        foreach (var item in DCM1)
                        {
                            if ((item.Estado_DMC == true) || (F != null))
                            {
                                DetalleMesasCliente a = db.DetalleMesasCliente.Find(item.Id_DMC);
                                DCM.Add(a);
                            }
                        }
                    }
                    if (DCM.Count() != 0)
                    {
                        int i = 0, i1 = 0;
                        foreach (var item in DCM)
                        {
                            DateTime hora = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds);
                            if (item.MesasOcupadas.Fecha_MesasO == DateTime.Now.Date && hora >= item.MesasOcupadas.HoraIngreso_MesasO)
                            {
                                if (item.Cantidad_DMC != 0)
                                {
                                    Menu M = db.Menus.Find(item.Cod_Menu);
                                    Valor = Valor + (M.Valor_Menu * item.Cantidad_DMC);
                                    ListMenu.Add(M);
                                }
                                if (i1 != item.MesasOcupadas.CPersonas_Mesas)
                                {
                                    i1 = item.MesasOcupadas.CPersonas_Mesas;
                                    i  = i + item.MesasOcupadas.CPersonas_Mesas;
                                }
                                if (listMesasO.Where(t => t.Cod_MesasO == item.Cod_MesasO).Count() == 0)
                                {
                                    MesasOcupadas MO = db.MesasOcupadas.Find(item.Cod_MesasO);
                                    imesas++;
                                    aux = aux + " - " + MO.Mesas.Numero_Mesa;
                                    listMesasO.Add(MO);
                                }
                                //if (Cliente.Cod_Cli == 0 && TipoDocumento.Cod_TDoc == 0)
                                //{
                                //    Cliente = db.Clientes.Find(item.Cod_Cli);
                                //    TipoDocumento = db.TipoDocumentoes.Find(item.Cod_TDoc);

                                //}
                                if (item.PedidoM == true)
                                {
                                    imenu++;
                                }
                                if (item.Cod_MesasO == IdMesaO)
                                {
                                    Detalle.Fecha = item.MesasOcupadas.Fecha_MesasO;
                                    Detalle.HoraI = item.MesasOcupadas.HoraIngreso_MesasO;
                                    Detalle.Horas = item.MesasOcupadas.HoraSalida_MesasO;
                                    Cliente       = db.Clientes.Find(item.Cod_Cli);
                                    TipoDocumento = db.TipoDocumentoes.Find(item.Cod_TDoc);
                                }
                            }
                            else
                            {
                                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                            }
                        }
                        addMesasO = AddMesas.Lista(IdC.Value, IdM.Value, db, fecha, hora);
                        var quitar = addMesasO.Where(t => t.Reservada == NC).ToList();
                        foreach (var item in quitar)
                        {
                            var r = addMesasO.Single(t => t.Cod_MesasO == item.Cod_MesasO);
                            if (r != null)
                            {
                                addMesasO.Remove(r);
                            }
                        }
                        if (F == null)
                        {
                            edetalle = new EDetalles
                            {
                                D       = D.Value,
                                F       = false,
                                IdC     = IdC.Value,
                                IdM     = IdM.Value,
                                IdMesaO = IdMesaO.Value,
                                NC      = NC,
                                Add     = Add
                            };
                        }
                        else
                        {
                            edetalle = new EDetalles
                            {
                                D       = D.Value,
                                F       = true,
                                IdC     = IdC.Value,
                                IdM     = IdM.Value,
                                IdMesaO = IdMesaO.Value,
                                NC      = NC,
                                Add     = Add
                            };
                        }
                        Detalle.Cmesas       = imesas;
                        Detalle.Nmesas       = aux;
                        Detalle.Cmenu        = imenu;
                        Detalle.Cpersonas    = i;
                        Detalle.Confirmacion = listMesasO.FirstOrDefault().ConfirmarMesa;
                        Detalle.Detalle      = D.Value;
                        Detalle.addMesasO    = addMesasO;
                        Detalle.Mesas        = db.Mesas.ToList();
                        Detalle.ValorTotal   = Valor;
                        Detalle.EDetalles    = edetalle;
                        Detalle.consecutivo  = Consecutivo.Numero(db);
                        if (F == null)
                        {
                            Detalle.F = false;
                        }
                        else
                        {
                            Detalle.F = F.Value;
                        }
                        transacion.Commit();
                    }
                    else
                    {
                        return(HttpNotFound());
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                    ViewBag.Error = true;
                }
            }
            Detalle.Cliente              = Cliente;
            Detalle.TipoDocumento        = TipoDocumento;
            Detalle.Menus                = ListMenu.OrderBy(t => t.Cod_TMenu).ToList();
            Detalle.DetalleMesasClientes = DCM;
            return(View(Detalle));
        }
Ejemplo n.º 13
0
        public static void DetalleMenuCliente(Guid IdCliente, string idMesas, string Nconfirma, WebRestauranteContext db, string[] MenuCantidad, int?IdMesaO, bool?TR)
        {
            string[] idMesa = idMesas.Split(new char[] { ',' });
            foreach (var item in idMesa)
            {
                if (item != "")
                {
                    if (IdMesaO == 0)
                    {
                        if (MenuCantidad != null)
                        {
                            foreach (var item1 in MenuCantidad)
                            {
                                string[] id = item1.Split(new char[] { ',' });
                                if (id[0] != "")
                                {
                                    int cod = Convert.ToInt32(item);

                                    var detalle = new DetalleMesasCliente
                                    {
                                        Cod_MesasO        = cod,
                                        Cod_Cli           = IdCliente,
                                        NConfirmacion_DMC = Nconfirma,
                                        Cantidad_DMC      = Convert.ToInt32(id[1]),
                                        Cod_Menu          = Convert.ToInt32(id[0]),
                                        Estado_DMC        = true,
                                        Cod_TDoc          = 1,
                                        PedidoM           = true
                                    };
                                    db.DetalleMesasCliente.Add(detalle);
                                    MesasOcupadas x = db.MesasOcupadas.Find(cod);
                                    x.Reservada       = Nconfirma;
                                    x.Llegada_MesasO  = true;
                                    db.Entry(x).State = EntityState.Modified;
                                    db.SaveChanges();
                                }
                            }
                        }
                        else
                        {
                            int cod = Convert.ToInt32(item);

                            var detalle = new DetalleMesasCliente
                            {
                                Cod_MesasO        = cod,
                                Cod_Cli           = IdCliente,
                                NConfirmacion_DMC = Nconfirma,
                                Cantidad_DMC      = Convert.ToInt32(0),
                                Cod_Menu          = Convert.ToInt32(1),
                                Estado_DMC        = true,
                                Cod_TDoc          = 1,
                                PedidoM           = false
                            };
                            db.DetalleMesasCliente.Add(detalle);
                            MesasOcupadas x = db.MesasOcupadas.Find(cod);
                            x.Reservada       = Nconfirma;
                            db.Entry(x).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        int i      = 0;
                        int id_DMC = 0;
                        var CMC    = db.DetalleMesasCliente.Where(t => t.Cod_MesasO == IdMesaO).ToList();
                        foreach (var iten in CMC)
                        {
                            var D = db.DetalleMesasCliente.Find(iten.Id_DMC);
                            id_DMC = iten.Id_DMC;
                            db.DetalleMesasCliente.Remove(D);
                            db.SaveChanges();
                        }
                        if (MenuCantidad != null)
                        {
                            var R = db.DetalleMesasCliente.Where(T => T.Id_DMC == id_DMC).ToList();
                            foreach (var item1 in MenuCantidad)
                            {
                                string[] id = item1.Split(new char[] { ',' });
                                if (id[0] != "")
                                {
                                    int cod = Convert.ToInt32(item);

                                    var detalle = new DetalleMesasCliente
                                    {
                                        Cod_MesasO        = cod,
                                        Cod_Cli           = IdCliente,
                                        NConfirmacion_DMC = Nconfirma,
                                        Cantidad_DMC      = Convert.ToInt32(id[1]),
                                        Cod_Menu          = Convert.ToInt32(id[0]),
                                        Estado_DMC        = true,
                                        Cod_TDoc          = 1,
                                        PedidoM           = true
                                    };
                                    db.DetalleMesasCliente.Add(detalle);
                                    if (i == 0)
                                    {
                                        var mo = db.MesasOcupadas.Where(t => t.Cod_MesasO == cod || t.Reservada == Nconfirma).ToList();
                                        foreach (var item2 in mo)
                                        {
                                            MesasOcupadas x = db.MesasOcupadas.Find(item2.Cod_MesasO);
                                            x.Reservada = Nconfirma;
                                            if (TR != true)
                                            {
                                                x.Llegada_MesasO = true;
                                            }
                                            db.Entry(x).State = EntityState.Modified;
                                            db.SaveChanges();
                                            i++;
                                        }
                                    }
                                }
                            }
                            db.SaveChanges();
                        }
                        else
                        {
                            int cod = Convert.ToInt32(item);

                            var detalle = new DetalleMesasCliente
                            {
                                Cod_MesasO        = cod,
                                Cod_Cli           = IdCliente,
                                NConfirmacion_DMC = Nconfirma,
                                Cantidad_DMC      = Convert.ToInt32(0),
                                Cod_Menu          = Convert.ToInt32(1),
                                Estado_DMC        = true,
                                Cod_TDoc          = 1,
                                PedidoM           = false
                            };
                            db.DetalleMesasCliente.Add(detalle);
                            MesasOcupadas x = db.MesasOcupadas.Find(cod);
                            x.Reservada       = Nconfirma;
                            db.Entry(x).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                    }
                }
            }
        }
        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));
        }