//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(); } } }
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)); }
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); } }
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)); }
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); }
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)); }
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))); }
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)); }
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)); }