public ActionResult Create(UsuGrupViewModel UsuGrupVM)
        {
            try
            {
                var usuario = new USUARIO();
                usuario.UsuarioId = UsuGrupVM.UsuarioId;
                usuario.NombreUsuario = UsuGrupVM.NombreUsuario;
                usuario.Nombre = UsuGrupVM.Nombre;
                usuario.Mail = UsuGrupVM.Mail;
                usuario.Clave = UsuGrupVM.Clave;
                usuario.Estado = UsuGrupVM.Estado;

                var gruposSeleccionados = UsuGrupVM.Grupos.Where(x => x.IsChecked).Select(x => x.ItemId).ToList();

                foreach (var grupo in oCatalogo.GRUPOSet.ToList())
                {
                    foreach (var ID in gruposSeleccionados)
                    {
                        if (grupo.GrupoId == ID)
                        {
                            usuario.GRUPO.Add(grupo);
                        }
                        else
                        {
                           // usuario.GRUPO.Remove(grupo);
                        }
                    }
                }

                oCatalogo.USUARIOSet.Add(usuario);
                oCatalogo.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {

                return View();
            }
        }
        //
        // GET: /Usuarios/Edit/5
        public ActionResult Edit(int id)
        {
            if (this.Session["LogedUserFullname"] != null)
            {
                var usuario = oCatalogo.USUARIOSet.Find(id);

                var UsuGrupVM = new UsuGrupViewModel();

                UsuGrupVM.UsuarioId = usuario.UsuarioId;
                UsuGrupVM.NombreUsuario = usuario.NombreUsuario;
                UsuGrupVM.Nombre = usuario.Nombre;
                UsuGrupVM.Estado = usuario.Estado;
                UsuGrupVM.Mail = usuario.Mail;
                UsuGrupVM.Clave = usuario.Clave;

                foreach (GRUPO grupo in oCatalogo.GRUPOSet)
                {
                    var grupoCheck = new CheckBoxListItem();
                    grupoCheck.ItemId = grupo.GrupoId;
                    grupoCheck.Descripcion = grupo.Descripcion;
                    grupoCheck.IsChecked = false;
                    UsuGrupVM.Grupos.Add(grupoCheck);

                    foreach (GRUPO grupoUsu in usuario.GRUPO)
                    {
                        if (grupo.GrupoId == grupoUsu.GrupoId)
                        {
                            grupoCheck.IsChecked = true;
                        }
                    }

                }

                //aca arranco para ver permisos de edicion

                var LogedUserFullName = this.Session["LogedUserFullname"];

                var UsuarioLogeado = oCatalogo.USUARIOSet.FirstOrDefault(a => a.NombreUsuario.Equals(LogedUserFullName.ToString()));

                List<PERFIL> perfiles = new List<PERFIL>();

                foreach (GRUPO grup in UsuarioLogeado.GRUPO)
                {
                    foreach (PERFIL perfil in oCatalogo.PERFILSet)
                    {
                        if (perfil.GRUPO == grup)
                        {
                            perfiles.Add(perfil);
                        }
                    }
                }

                string permiso = "no";
                string modificar = "no";
                foreach (PERFIL perfil in perfiles)
                {
                    if (perfil.VISTA.Nombre == "usuarios") // && perfil.PERMISO.Descripcion == "alta")
                    {
                        permiso = "si";
                        if (perfil.PERMISO.Descripcion == "modificar")
                        {
                            modificar = "si";
                        }
                    }

                }

                if (permiso == "si" && modificar == "si")
                {
                    return View(UsuGrupVM);
                }
                else
                {
                    return RedirectToAction("SinPermiso", "Home");
                }

                //return View(UsuGrupVM);
            }
            else
            {
                return RedirectToAction("Login", "Home", "Home");
            }
        }
        public ActionResult Edit(UsuGrupViewModel UsuGrupVM)
        {
            try
            {
                Models.USUARIO usuario;
                usuario = oCatalogo.USUARIOSet.FirstOrDefault(x => x.UsuarioId == UsuGrupVM.UsuarioId);//new USUARIO();
                usuario.UsuarioId = UsuGrupVM.UsuarioId;
                usuario.NombreUsuario = UsuGrupVM.NombreUsuario;
                usuario.Nombre = UsuGrupVM.Nombre;
                usuario.Mail = UsuGrupVM.Mail;
                usuario.Clave = UsuGrupVM.Clave;
                usuario.Estado = UsuGrupVM.Estado;

                var gruposSeleccionados = UsuGrupVM.Grupos.Where(x => x.IsChecked).Select(x => x.ItemId).ToList();

                foreach(var grupo in oCatalogo.GRUPOSet.ToList())
                {
                    foreach(var ID in gruposSeleccionados)
                    {
                        if(grupo.GrupoId == ID)
                        {
                            usuario.GRUPO.Add(grupo);
                        }
                        else
                        {
                            usuario.GRUPO.Remove(grupo);
                        }
                    }
                }

                oCatalogo.Entry(usuario).State = System.Data.Entity.EntityState.Modified;
                oCatalogo.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        //
        // GET: /Usuarios/Create
        public ActionResult Create()
        {
            if (this.Session["LogedUserFullname"] != null)
            {
                var UsuGrupVM = new UsuGrupViewModel();
                foreach (GRUPO grupo in oCatalogo.GRUPOSet)
                {
                    var grupoCheck = new CheckBoxListItem();
                    grupoCheck.ItemId = grupo.GrupoId;
                    grupoCheck.Descripcion = grupo.Descripcion;
                    grupoCheck.IsChecked = false;
                    UsuGrupVM.Grupos.Add(grupoCheck);

                }
                //aca arranco para ver permisos de alta

                var LogedUserFullName = this.Session["LogedUserFullname"];

                var UsuarioLogeado = oCatalogo.USUARIOSet.FirstOrDefault(a => a.NombreUsuario.Equals(LogedUserFullName.ToString()));

                List<PERFIL> perfiles = new List<PERFIL>();

                foreach (GRUPO grup in UsuarioLogeado.GRUPO)
                {
                    foreach (PERFIL perfil in oCatalogo.PERFILSet)
                    {
                        if (perfil.GRUPO == grup)
                        {
                            perfiles.Add(perfil);
                        }
                    }
                }

                string permiso = "no";
                string alta = "no";
                foreach (PERFIL perfil in perfiles)
                {
                    if (perfil.VISTA.Nombre == "usuarios")
                    {
                        permiso = "si";
                        if (perfil.PERMISO.Descripcion == "alta")
                        {
                            alta = "si";
                        }
                    }

                }

                if (permiso == "si" && alta == "si")
                {
                    return View(UsuGrupVM);
                }
                else
                {
                    return RedirectToAction("SinPermiso", "Home");
                }

                // return View(UsuGrupVM);
            }
            else
            {
                return RedirectToAction("Login");
            }
        }