Browse Source

CmsKit - Implement Page Update Handling for MenuItems

pull/9261/head
Enis Necipoğlu 5 years ago
parent
commit
c42bd46d81
  1. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs
  2. 31
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/PageChangedHandler.cs

1
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs

@ -119,7 +119,6 @@ namespace Volo.CmsKit.Admin.Menus
{
return MenuAdminAppService.UpdateMenuItemAsync(menuId, menuItemId, input);
}
[HttpGet]
[Route("lookup/pages")]

31
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Menus/PageChangedHandler.cs

@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events;
@ -7,20 +8,38 @@ using Volo.CmsKit.Pages;
namespace Volo.CmsKit.Menus
{
public class PageChangedHandler: ILocalEventHandler<EntityCreatedEventData<Page>>,
public class PageChangedHandler: ILocalEventHandler<EntityUpdatedEventData<Page>>,
ITransientDependency
{
protected IMenuRepository MenuRepository { get; }
public PageChangedHandler(IMenuRepository menuRepository)
protected MenuManager MenuManager { get; }
public PageChangedHandler(
IMenuRepository menuRepository,
MenuManager menuManager)
{
MenuRepository = menuRepository;
MenuManager = menuManager;
}
public Task HandleEventAsync(EntityCreatedEventData<Page> eventData)
public async Task HandleEventAsync(EntityUpdatedEventData<Page> eventData)
{
// TODO: Find a way to get affected MenuItems.
throw new NotImplementedException();
// TODO: Write a repository query.
var allMenus = await MenuRepository.GetListAsync(includeDetails: true);
var affectedMenus = allMenus
.Where(menu => menu.Items.Any(x => x.PageId == eventData.Entity.Id))
.ToArray();
var affectedMenuItems =
affectedMenus.SelectMany(sm => sm.Items).Where(mItem => mItem.PageId == eventData.Entity.Id);
foreach (var menuItem in affectedMenuItems)
{
MenuManager.SetPageUrl(menuItem, eventData.Entity);
}
await MenuRepository.UpdateManyAsync(affectedMenus);
}
}
}
Loading…
Cancel
Save