public void PopulateTreeModulosEmpty()
        {
            ModuloRepository moduloRepository = new ModuloRepository();
            StringBuilder    sb    = new StringBuilder();
            var listModulosSistema = moduloRepository.GetAll(p => p.Parent).OrderBy(o => o.Descripcion);

            var menuVM = MenuViewModel.CreateVM(null, listModulosSistema.ToList());


            foreach (var menuItem in menuVM)
            {
                sb.Append("<li>");
                sb.Append("<p  >");
                sb.Append(" <span class='icon'><i class='" + menuItem.Class + "'></i></span>");
                sb.Append(" <label class='control-label'>" + menuItem.Descripcion + "</label>");
                sb.Append("</p>");

                if (menuItem.URL != string.Empty && menuItem.URL != null)
                {
                    var checked_edit = "";
                    var checked_view = "";

                    if (menuItem.MenuId == 28 || menuItem.MenuId == 50)
                    {
                        checked_edit = "checked";
                        checked_view = "checked";
                    }
                    sb.Append("<div style='float:right; margin-right:150px'><input " + checked_edit + " name='chk_EDIT_" + menuItem.MenuId + "'   type='checkbox'  ></input></div>");
                    sb.Append("<div style='float:right; margin-right:180px'><input " + checked_view + " name='chk_VIEW_" + menuItem.MenuId + "'   type='checkbox' ></input></div>");
                }


                if (menuItem.Children.Count() > 0)
                {
                    sb.Append("<ul class='sub'>");
                }

                #region Sub Menu 1° Nivel
                foreach (var child in menuItem.Children)
                {
                    sb.Append("<li>");
                    if (child.URL != string.Empty && child.URL != null)
                    {
                        sb.Append("<p>");
                    }
                    else
                    {
                        sb.Append("<p >");
                    }

                    sb.Append("<span class='icon'><i class='" + (child.Class != null && child.Class != string.Empty ? child.Class : "") + "'></i></span>");
                    sb.Append(" <label class='control-label'>" + child.Descripcion + "</label>");
                    if (child.URL != string.Empty && child.URL != null)
                    {
                        sb.Append("<div style='float:right; margin-right:150px'><input name='chk_EDIT_" + child.MenuId + "'   type='checkbox' ></input></div>");
                        sb.Append("<div style='float:right; margin-right:180px'><input name='chk_VIEW_" + child.MenuId + "'   type='checkbox' ></input></div>");
                    }
                    sb.Append("</p>");

                    if (child.Children.Count() > 0)
                    {
                        sb.Append("<ul class='sub'>");
                    }

                    #region Sub Menu 2° Nivel
                    foreach (var subchild in child.Children)
                    {
                        sb.Append("<li>");
                        if (subchild.URL != string.Empty && subchild.URL != null)
                        {
                            sb.Append("<span >");
                        }
                        else
                        {
                            sb.Append("<span >");
                        }

                        sb.Append("<span class='icon'><i class='" + (subchild.Class != null && subchild.Class != string.Empty ? subchild.Class : "") + "'></i></span>");
                        sb.Append(" <label class='control-label'>" + subchild.Descripcion + "</label>");

                        if (subchild.URL != string.Empty && subchild.URL != null)
                        {
                            sb.Append("<div style='float:right; margin-right:150px'><input name='chk_EDIT_" + subchild.MenuId + "'   type='checkbox' ></input></div>");
                            sb.Append("<div style='float:right; margin-right:180px'><input name='chk_VIEW_" + subchild.MenuId + "'   type='checkbox' ></input></div>");
                        }


                        sb.Append("</span>");

                        if (subchild.Children.Count() > 0)
                        {
                            sb.Append("<ul class='sub'>");
                        }

                        #region Sub Menu 3° Nivel
                        foreach (var subsubchild in subchild.Children)
                        {
                            sb.Append("<li>");
                            if (subsubchild.URL != string.Empty && subsubchild.URL != null)
                            {
                                sb.Append("<span >");
                            }
                            else
                            {
                                sb.Append("<span >");
                            }

                            sb.Append("<span class='icon'><i class='" + (subsubchild.Class != null && subsubchild.Class != string.Empty ? subsubchild.Class : "") + "'></i></span>");
                            sb.Append(" <label class='control-label'>" + subsubchild.Descripcion + "</label>");

                            if (subsubchild.URL != string.Empty && subsubchild.URL != null)
                            {
                                sb.Append("<div style='float:right; margin-right:150px'><input name='chk_EDIT_" + subsubchild.MenuId + "'   type='checkbox' ></input></div>");
                                sb.Append("<div style='float:right; margin-right:180px'><input name='chk_VIEW_" + subsubchild.MenuId + "'   type='checkbox' ></input></div>");
                            }


                            sb.Append("</span>");
                            sb.Append("</li>");
                        }
                        #endregion

                        if (subchild.Children.Count() > 0)
                        {
                            sb.Append("</ul>");
                        }
                        sb.Append("</li>");
                    }
                    #endregion

                    if (child.Children.Count() > 0)
                    {
                        sb.Append("</ul>");
                    }
                    sb.Append("</li>");
                }
                #endregion

                if (menuItem.Children.Count() > 0)
                {
                    sb.Append("</ul>");
                }
                sb.Append("</li>");
            }



            ViewBag.Modulos = sb.ToString();
        }
Exemple #2
0
        public static IHtmlString DrawMenuItems(this HtmlHelper html)
        {
            StringBuilder sb = new StringBuilder();

            var currenUser   = AuthenticationFactory.CreateAuthentication().GetUser();
            var currenModulo = GetBaseController(html).GetCurrenModulo();

            currenUser.RolesEmpresa = AppSession.RolesEmpresa;
            //  currenUser.UsuarioRolClientes = AppSession.RolesCliente;
            //var listModulosSistema = moduloRepository.GetFiltered(o=>o.Visible, p=>p.Parent).OrderBy(o=>o.Descripcion);
            var listModulosSistema = moduloRepository.GetModulosUser(currenUser.RolesEmpresa, AppSession.Modulos);
            var menuVM             = MenuViewModel.CreateVM(null, listModulosSistema.ToList());

            //   var listModulosPermiso = usuarioRepository.GetRolesEmpresaByUsuarioId(currenUser.UserID).Select(o=>o.Rol.ModulosPermiso);

            //foreach (var ob in listModulosPermiso)
            //{
            //    foreach (var modulo in ob.GroupBy(o => o.Modulo_Id).Select(group => group.First()))
            //    {

            //  //      menuVM.Where(o => o.Children.se == modulo.Modulo_Id).Any();

            //    }
            //}

            string classExpand        = "class='hasSub current'";
            string classAExpand       = "class='expand rotateOut'";
            string classSubExpandShow = "class='sub expand show'";
            string classCurrent       = "class='current'";

            foreach (var menuItem in menuVM)
            {
                if (IsInCurrentModulo(currenModulo, menuItem.MenuId))
                {
                    sb.Append("<li " + classExpand + ">");

                    sb.Append("<a href='#' " + classAExpand + ">");
                }
                else
                {
                    sb.Append("<li >");
                    sb.Append("<a href='#'>");
                }
                sb.Append(" <span class='icon'><i class='" + menuItem.Class + "'></i></span>");
                sb.Append(" <span class='txt'>" + menuItem.Descripcion + "</span>");
                sb.Append("</a>");

                if (menuItem.Children.Count() > 0)
                {
                    if (IsInCurrentModulo(currenModulo, menuItem.MenuId))
                    {
                        sb.Append("<ul " + classSubExpandShow + " >");
                    }
                    else
                    {
                        sb.Append("<ul class='sub'>");
                    }

                    #region Sub Menu 1° Nivel
                    foreach (var child in menuItem.Children)
                    {
                        if (currenModulo.Id == menuItem.MenuId)
                        {
                            sb.Append("<li " + classCurrent + " >");
                        }
                        else
                        {
                            sb.Append("<li>");
                        }

                        if (child.URL != string.Empty && child.URL != null)
                        {
                            if (child.URL.ToUpper().StartsWith("HTTP"))
                            {
                                if (IsInCurrentModulo(currenModulo, child.MenuId))
                                {
                                    sb.Append("<a href='" + child.URL + "' " + classExpand + " >");
                                }
                                else
                                {
                                    sb.Append("<a href='" + child.URL + "'>");
                                }
                            }
                            else
                            {
                                if (IsInCurrentModulo(currenModulo, child.MenuId))
                                {
                                    sb.Append("<a href='/" + child.URL + "' " + classExpand + " >");
                                }
                                else
                                {
                                    sb.Append("<a href='/" + child.URL + "'>");
                                }
                            }
                        }
                        else
                        if (IsInCurrentModulo(currenModulo, child.MenuId))
                        {
                            sb.Append("<a href='#'>");
                        }
                        else
                        {
                            sb.Append("<a href='#' " + classExpand + " >");
                        }

                        sb.Append("<span class='icon'><i class='" + (child.Class != null && child.Class != string.Empty ? child.Class : "") + "'></i></span>");
                        sb.Append(" <span class='txt'>" + child.Descripcion + "</span>");
                        sb.Append("</a>");

                        //if(child.Children.Count() > 0)
                        //    sb.Append("<ul class='sub'>");

                        if (child.Children.Count() > 0)
                        {
                            if (IsInCurrentModulo(currenModulo, child.MenuId))
                            {
                                sb.Append("<ul " + classSubExpandShow + " >");
                            }
                            else
                            {
                                sb.Append("<ul class='sub'>");
                            }
                        }

                        #region Sub Menu 2° Nivel
                        foreach (var subchild in child.Children)
                        {
                            //   sb.Append("<li>");
                            if (currenModulo.Id == menuItem.MenuId)
                            {
                                sb.Append("<li " + classCurrent + " >");
                            }
                            else
                            {
                                sb.Append("<li>");
                            }

                            if (subchild.URL != string.Empty && subchild.URL != null)
                            {
                                if (subchild.URL.ToUpper().StartsWith("HTTP"))
                                {
                                    if (IsInCurrentModulo(currenModulo, subchild.MenuId))
                                    {
                                        sb.Append("<a href='" + subchild.URL + "' " + classExpand + " >");
                                    }
                                    else
                                    {
                                        sb.Append("<a href='" + subchild.URL + "'>");
                                    }
                                }
                                else
                                {
                                    if (IsInCurrentModulo(currenModulo, subchild.MenuId))
                                    {
                                        sb.Append("<a href='/" + subchild.URL + "' " + classExpand + " >");
                                    }
                                    else
                                    {
                                        sb.Append("<a href='/" + subchild.URL + "'>");
                                    }
                                }
                            }
                            else
                            if (IsInCurrentModulo(currenModulo, subchild.MenuId))
                            {
                                sb.Append("<a href='#'>");
                            }
                            else
                            {
                                sb.Append("<a href='#' " + classExpand + " >");
                            }

                            sb.Append("<span class='icon'><i class='" + (subchild.Class != null && subchild.Class != string.Empty ? subchild.Class : "") + "'></i></span>");
                            sb.Append(" <span class='txt'>" + subchild.Descripcion + "</span>");
                            sb.Append("</a>");

                            //if (subchild.Children.Count() > 0)
                            //    sb.Append("<ul class='sub'>");

                            if (subchild.Children.Count() > 0)
                            {
                                if (IsInCurrentModulo(currenModulo, subchild.MenuId))
                                {
                                    sb.Append("<ul " + classSubExpandShow + " >");
                                }
                                else
                                {
                                    sb.Append("<ul class='sub'>");
                                }
                            }

                            #region Sub Menu 3° Nivel
                            foreach (var subsubchild in subchild.Children)
                            {
                                //   sb.Append("<li>");
                                if (currenModulo.Id == subsubchild.MenuId)
                                {
                                    sb.Append("<li " + classCurrent + " >");
                                }
                                else
                                {
                                    sb.Append("<li>");
                                }

                                if (subsubchild.URL != string.Empty && subsubchild.URL != null)
                                {
                                    if (subsubchild.URL.ToUpper().StartsWith("HTTP"))
                                    {
                                        if (IsInCurrentModulo(currenModulo, subsubchild.MenuId))
                                        {
                                            sb.Append("<a href='" + subsubchild.URL + "' " + classExpand + " >");
                                        }
                                        else
                                        {
                                            sb.Append("<a href='" + subsubchild.URL + "'>");
                                        }
                                    }
                                    else
                                    {
                                        if (IsInCurrentModulo(currenModulo, subsubchild.MenuId))
                                        {
                                            sb.Append("<a href='/" + subsubchild.URL + "' " + classExpand + " >");
                                        }
                                        else
                                        {
                                            sb.Append("<a href='/" + subsubchild.URL + "'>");
                                        }
                                    }
                                }

                                else
                                if (IsInCurrentModulo(currenModulo, subsubchild.MenuId))
                                {
                                    sb.Append("<a href='#'>");
                                }
                                else
                                {
                                    sb.Append("<a href='#' " + classExpand + " >");
                                }

                                sb.Append("<span class='icon'><i class='" + (subsubchild.Class != null && subsubchild.Class != string.Empty ? subsubchild.Class : "") + "'></i></span>");
                                sb.Append(" <span class='txt'>" + subsubchild.Descripcion + "</span>");
                                sb.Append("</a>");

                                sb.Append("</li>");
                            }
                            #endregion

                            if (subchild.Children.Count() > 0)
                            {
                                sb.Append("</ul>");
                            }
                            sb.Append("</li>");
                        }

                        #endregion

                        if (child.Children.Count() > 0)
                        {
                            sb.Append("</ul>");
                        }
                        sb.Append("</li>");
                    }
                    #endregion

                    if (menuItem.Children.Count() > 0)
                    {
                        sb.Append("</ul>");
                    }
                    sb.Append("</li>");
                }
            }

            //foreach (var ob in listRolEmpresa.Select(o => o.Rol.ModulosPermiso))
            //{
            //    foreach (var modulo in ob.GroupBy(o=>o.Modulo_Id).Select(group => group.First()))
            //    {
            //       var moduloSistema= listModulosSistema.Where(o => o.Id == modulo.Modulo_Id).FirstOrDefault();
            //       var result = moduloSistema.Parent.
            //    }
            //}

            return(new HtmlString(sb.ToString()));
        }