Esempio n. 1
0
        public ActionResult Detalles(DetalleView DetalleView, string id)
        {
            string aux = "";

            string[] ID  = id.Split(new char[] { ',' });
            var      DCM = new List <DetalleMesasCliente>();

            using (var transacion = db.Database.BeginTransaction())
            {
                try
                {
                    for (int i = 0; i < ID.Length; i++)
                    {
                        if (ID[i] != "")
                        {
                            DCM.Add(db.DetalleMesasCliente.Find(Convert.ToInt32(ID[i])));
                        }
                    }
                    decimal valor = 0;
                    foreach (var item in DCM)
                    {
                        int x = 0;
                        valor = valor + (item.Cantidad_DMC * item.Menu.Valor_Menu);
                        string[] s = aux.Split(new char[] { ',' });
                        for (int i = 0; i < s.Length; i++)
                        {
                            if (s[i] != "")
                            {
                                x = 0;
                                if (Convert.ToInt32(s[i]) == item.Cod_MesasO)
                                {
                                    x++;
                                }
                            }
                        }
                        if (x == 0)
                        {
                            aux = aux + "," + item.Cod_MesasO;
                        }
                    }
                    int consecutivo = Consecutivo.Numero(db);
                    var D           = new Documento
                    {
                        Cod_Cli           = DCM.FirstOrDefault().Cod_Cli,
                        Cod_TDoc          = 1,
                        Estado_Doc        = true,
                        Fecha_Doc         = DCM.FirstOrDefault().MesasOcupadas.Fecha_MesasO,
                        HoraIngreso_Doc   = DCM.FirstOrDefault().MesasOcupadas.HoraIngreso_MesasO,
                        HoraSalida_Doc    = hora,
                        NConfirmacion_Doc = DCM.FirstOrDefault().NConfirmacion_DMC,
                        Valor_Doc         = valor,
                        Consecutivo       = consecutivo
                    };
                    db.Documento.Add(D);
                    db.SaveChanges();
                    int idD = db.Documento.Where(t => (t.NConfirmacion_Doc == D.NConfirmacion_Doc) && (t.HoraSalida_Doc == D.HoraSalida_Doc) && (t.Id_Doc == D.Id_Doc)).Max(x => x.Id_Doc);
                    foreach (var item in DCM)
                    {
                        var DC = new DetalleDocumento
                        {
                            Id_DMC = item.Id_DMC,
                            Id_Doc = idD
                        };
                        var ADMC = db.DetalleMesasCliente.Find(item.Id_DMC);
                        ADMC.Estado_DMC = false;
                        ADMC.MesasOcupadas.Estado_MesasO  = false;
                        ADMC.MesasOcupadas.Llegada_MesasO = false;
                        db.Entry(ADMC).State = EntityState.Modified;
                        db.DetalleDocumento.Add(DC);
                    }
                    db.SaveChanges();
                    transacion.Commit();

                    var edetalles = new EDetalles
                    {
                        D       = 0,
                        IdC     = DCM.FirstOrDefault().Cod_Cli,
                        IdMesaO = DCM.FirstOrDefault().Cod_MesasO,
                        IdM     = DCM.FirstOrDefault().MesasOcupadas.Cod_Mesa,
                        NC      = DCM.FirstOrDefault().NConfirmacion_DMC,
                        F       = true,
                        Add     = aux
                    };
                    return(RedirectToAction("Detalles", edetalles));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                    transacion.Rollback();
                    throw;
                }
            }
            //return View();
        }
Esempio n. 2
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));
        }