using System; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using Abp.Auditing; using Abp.Authorization; using Abp.Domain.Repositories; using Abp.Localization; using Abp.Runtime.Caching; using Abp.Runtime.Session; using Abp.Threading; using ShwasherSys.Authorization.Permissions; using ShwasherSys.BaseSysInfo; using ShwasherSys.Models.Layout; using IwbZero; using IwbZero.Authorization.Permissions; using IwbZero.Navigation; using IwbZero.Setting; using ShwasherSys.Navigation; using ShwasherSys.NotificationInfo; using ShwasherSys.Views.Shared.New.SearchForm; namespace ShwasherSys.Controllers { [DisableAuditing, AllowAnonymous] public class LayoutController : ShwasherControllerBase { // private readonly IIwbNavigationManager _navigationManager; private readonly NavigationManager _navigationManager; private readonly ILanguageManager _languageManager; private readonly IRepository _sysFunctionRepository; public IRepository BulletinInfoRepository { get; } public LayoutController( //IIwbNavigationManager navigationManager, NavigationManager navigationManager, //ILocalizationManager localizationManager, IRepository sysFunctionRepository, ICacheManager cacheManager, ILanguageManager languageManager, IIwbPermissionManager permissionManager, IIwbSettingManager settingManager, IRepository bulletinInfoRepository) { _navigationManager = navigationManager; _languageManager = languageManager; BulletinInfoRepository = bulletinInfoRepository; _sysFunctionRepository = sysFunctionRepository; CacheManager = cacheManager; PermissionManager = permissionManager; SettingManager = settingManager; } /// /// 顶部导航栏 /// /// [ChildActionOnly] public PartialViewResult MainHeader() { ViewBag.SystemName = SettingManager.GetSettingValue(SettingNames.AdminSystemName); var model = new MainHeaderViewModel { UserInfos = GetCurrentUser() }; var bulletinInfos = BulletinInfoRepository.GetAllList(i=>i.ExpirationDate>=DateTime.Now).OrderByDescending(i=>i.PromulgatTime).ToList(); ViewBag.BulletinInfos = bulletinInfos; return PartialView("_MainHeader", model); } /// /// 左侧导航栏 /// /// /// [ChildActionOnly] public PartialViewResult SideBarNav(string activeMenuName = "") { var model = new SideBarNavViewModel { MainMenu = AsyncHelper.RunSync(() => _navigationManager.GetMenuAsync(AbpSession.ToUserIdentifier())), ActiveNames = new List() { "Pages" }, PageTitle = "
  • 主页
  • " }; if (!string.IsNullOrEmpty(activeMenuName)) { var activeMenu = PermissionManager.GetPermission(activeMenuName); var nameList = new List(); model.PageTitle = GetIconAndName(activeMenu, ref nameList); model.ActiveNames = nameList; } return PartialView("_SideBarNav", model); } private string GetIconAndName(Permission permission, ref List nameList, bool isFirst = true) { string iconName = ""; if (permission != null) { var fun = CacheManager.GetCache(IwbZeroConsts.SysFunctionItemCache).Get(permission.Name, () => _sysFunctionRepository.FirstOrDefault(a => a.PermissionName == permission.Name)); string icon = permission.Name == PermissionNames.Pages ? "icon-home" : fun.Icon; string name = permission.Name == PermissionNames.Pages ? "主页" : fun.FunctionName; string active = isFirst ? "active" : ""; string href = permission.Name == "Pages" ? "/" : "JavaScript:void(0)"; string icn = $"
  • {name}
  • "; if (permission.Name != "Pages") { nameList.Add(permission.Name); } iconName = GetIconAndName(permission.Parent, ref nameList, false) + icn; } return iconName; } /// /// 单条件搜索 /// /// /// /// [ChildActionOnly] public PartialViewResult ToolMenu(string pageName, object searchForm) { try { ViewBag.SearchFrom = (SearchFormViewModal)searchForm; } catch { try { ViewBag.SearchFrom = (SearchFormViewModel)searchForm; } catch { ViewBag.SearchFrom = null; } } if (string.IsNullOrEmpty(pageName)) { return PartialView("_ToolMenu"); } var permission = PermissionManager.GetPermission(pageName); List model = GetChildBtnPerms(permission); return PartialView("_ToolMenu",model); } /// /// 多条件搜索 /// /// /// /// [ChildActionOnly] public PartialViewResult ToolMenuWithMs(string pageName, object searchForm) { try { var mulitForm = (SearchFormViewModal)searchForm; mulitForm.IsSingle = false; ViewBag.SearchFrom = mulitForm; } catch { try { ViewBag.SearchFrom = (SearchFormViewModel)searchForm; } catch { ViewBag.SearchFrom = null; } } if (string.IsNullOrEmpty(pageName)) { return PartialView("_ToolMenuWithMs"); } var permission = PermissionManager.GetPermission(pageName); List model = GetChildBtnPerms(permission); return PartialView("_ToolMenuWithMs", model); } /// /// 获取用户操作按钮 /// /// /// private List GetChildBtnPerms(Permission permission) { List permissions = new List(); if (permission != null && permission.Children.Count > 0) { foreach (var p in permission.Children) { if (AsyncHelper.RunSync(() => PermissionChecker.IsGrantedAsync(p.Name))) { var sysFun = CacheManager.GetCache(IwbZeroConsts.SysFunctionItemCache).Get(p.Name, () => _sysFunctionRepository.FirstOrDefault(a => a.PermissionName == p.Name)); permissions.Add(new PermissionButtonViewModel(sysFun)); //if (p.Children.Count > 0) //{ // permissions.AddRange(GetChildBtnPerms(p)); //} } } } return permissions; } [ChildActionOnly] public PartialViewResult LanguageSelection() { var model = new LanguageSelectionViewModel { CurrentLanguage = _languageManager.CurrentLanguage, Languages = _languageManager.GetLanguages() }; return PartialView("_LanguageSelection", model); } } }