TableToolBarViewComponent.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Abp.Domain.Repositories;
  2. using Abp.Domain.Uow;
  3. using Abp.Runtime.Caching;
  4. using Microsoft.AspNetCore.Mvc;
  5. using VberAdmin.Web.Models.Search;
  6. using VberZero;
  7. using VberZero.BaseSystem;
  8. using VberZero.Session;
  9. namespace VberAdmin.Web.Views.Shared.Components.TableToolBar;
  10. public class TableToolBarViewComponent : VberAdminViewComponent
  11. {
  12. public TableToolBarViewComponent(IRepository<SysFunction, int?> funRepository, ICacheManager cacheManager, IUnitOfWorkManager unitOfWorkManager)
  13. {
  14. FunRepository = funRepository;
  15. CacheManager = cacheManager;
  16. _unitOfWorkManager = unitOfWorkManager;
  17. }
  18. private readonly IUnitOfWorkManager _unitOfWorkManager;
  19. private readonly IRepository<SysFunction, int?> FunRepository;
  20. protected readonly ICacheManager CacheManager;
  21. public async Task<IViewComponentResult> InvokeAsync(string activeMenu = "", object searchView = null)
  22. {
  23. ViewBag.ActiveMenu = activeMenu;
  24. var model = new TableToolBarViewModel();
  25. try
  26. {
  27. model.Search = (VmSearch)searchView;
  28. }
  29. catch
  30. {
  31. model.Search = null;
  32. }
  33. if (string.IsNullOrEmpty(activeMenu))
  34. {
  35. return View(model);
  36. }
  37. var permission = PermissionManager.GetPermissionOrNull(activeMenu);
  38. if (permission != null)
  39. {
  40. var userName = AbpSession.GetUserName();
  41. foreach (var child in permission.Children)
  42. {
  43. if (await PermissionChecker.IsGrantedAsync(child.Name))
  44. {
  45. var fun = await CacheManager.GetCache<string, SysFunction>(VzConsts.CacheFunction)
  46. .GetAsync(child.Name, async () =>
  47. {
  48. using var u = _unitOfWorkManager.Begin();
  49. var f = await FunRepository.FirstOrDefaultAsync(a => a.PermissionName == child.Name);
  50. await u.CompleteAsync();
  51. return f;
  52. });
  53. if (fun == null || fun.FunctionType != VzDefinition.FunctionType.Button || fun.Script.ToLower() == "none")
  54. {
  55. continue;
  56. }
  57. if (fun.Script != null && (fun.Script.ToLower().StartsWith("admin") ||
  58. fun.Script.ToLower().StartsWith("_admin")) &&
  59. userName != VberZero.BaseSystem.Users.User.AdminUserName && userName != VberZero.BaseSystem.Users.User.SystemUserName)
  60. {
  61. continue;
  62. }
  63. var menu = new TableToolMenuViewModel(fun)
  64. {
  65. DisplayName = L(fun.PermissionName?.Replace(".", "") ?? "none")
  66. };
  67. if (menu.Script.Contains("_"))
  68. {
  69. menu.Script = menu.Script.Substring(menu.Script.LastIndexOf("_", StringComparison.Ordinal));
  70. model.Menu.Add(menu);
  71. }
  72. else
  73. {
  74. model.SelectionMenu.Add(menu);
  75. }
  76. }
  77. }
  78. }
  79. return View(model);
  80. }
  81. }