Improved RecycleBin with PageModules
This commit is contained in:
		| @ -2,43 +2,100 @@ | ||||
| @inherits ModuleBase | ||||
| @inject NavigationManager NavigationManager | ||||
| @inject IPageModuleService PageModuleService | ||||
| @inject IModuleService ModuleService | ||||
| @inject IPageService PageService | ||||
|  | ||||
| @*Add TabControl with Pages and Modules tabs*@ | ||||
| <h3>Pages</h3> | ||||
| @if (pageModules.Count == 0) | ||||
| { | ||||
|     <p>No deleted pages</p> | ||||
| } | ||||
| else | ||||
| { | ||||
|     <Pager Items="@pageModules"> | ||||
|         <Header> | ||||
|             <th>Name</th> | ||||
|             <th>Deletion audit</th> | ||||
|             <th> </th> | ||||
|             <th> </th> | ||||
|         </Header> | ||||
|         <Row> | ||||
|             <td>@context.Name</td> | ||||
|             <td>@context.DeletedBy - @context.DeletedOn</td> | ||||
|             <td><button @onclick="@(() => Restore(context))" class="btn btn-info" title="Restore">Restore</button></td> | ||||
|             <td><button @onclick="@(() => Delete(context.PageId))" class="btn btn-danger">Delete</button></td> | ||||
|         </Row> | ||||
|     </Pager> | ||||
| } | ||||
| <TabControl> | ||||
|     <TabPage Text="Pages"> | ||||
|         @if (pages.Count == 0) | ||||
|         { | ||||
|             <br/> | ||||
|             <p>No deleted pages</p> | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             <Pager Items="@pages"> | ||||
|                 <Header> | ||||
|                     <th>Name</th> | ||||
|                     <th>Deletion Audit</th> | ||||
|                     <th> </th> | ||||
|                     <th> </th> | ||||
|                 </Header> | ||||
|                 <Row> | ||||
|                     <td>@context.Name</td> | ||||
|                     <td>@context.DeletedBy - @context.DeletedOn</td> | ||||
|                     <td><button @onclick="@(() => RestorePage(context))" class="btn btn-info" title="Restore">Restore</button></td> | ||||
|                     <td><button @onclick="@(() => DeletePage(context.PageId))" class="btn btn-danger">Delete</button></td> | ||||
|                 </Row> | ||||
|             </Pager> | ||||
|         } | ||||
|     </TabPage> | ||||
|     <TabPage Text="Page Modules"> | ||||
|         @if (pageModules.Count == 0) | ||||
|         { | ||||
|             <br/> | ||||
|             <p>No deleted modules in pages</p> | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             <Pager Items="@pageModules"> | ||||
|                 <Header> | ||||
|                     <th>Page Name</th> | ||||
|                     <th>Control Title</th> | ||||
|                     <th>Deletion Audit</th> | ||||
|                     <th> </th> | ||||
|                     <th> </th> | ||||
|                 </Header> | ||||
|                 <Row> | ||||
|                     <td>@PageState.Pages.Find(item => item.PageId == context.PageId).Name</td> | ||||
|                     <td>@context.Title</td> | ||||
|                     <td>@context.DeletedBy - @context.DeletedOn</td> | ||||
|                     <td><button @onclick="@(() => RestorePageModule(context))" class="btn btn-info" title="Restore">Restore</button></td> | ||||
|                     <td><button @onclick="@(() => DeletePageModule(context.PageModuleId, context.ModuleId))" class="btn btn-danger">Delete</button></td> | ||||
|                 </Row> | ||||
|             </Pager> | ||||
|         } | ||||
|     </TabPage> | ||||
| </TabControl> | ||||
|  | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } | ||||
|  | ||||
|     List<Page> pageModules = new List<Page>(); | ||||
|     bool loadentities { get; set; } | ||||
|  | ||||
|     List<Page> pages { get; set; } | ||||
|     List<PageModule> pageModules { get; set; } | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         pages = new List<Page>(); | ||||
|         pageModules = new List<PageModule>(); | ||||
|  | ||||
|         loadentities = true; | ||||
|  | ||||
|         await LoadEntities(); | ||||
|     } | ||||
|  | ||||
|     protected override void OnParametersSet() | ||||
|     { | ||||
|         pageModules = PageState.Pages.Where(item => item.IsDeleted).ToList(); | ||||
|         pages = PageState.Pages.Where(item => item.IsDeleted).ToList(); | ||||
|     } | ||||
|  | ||||
|     private async Task Restore(Page Page) | ||||
|     private async Task LoadEntities() | ||||
|     { | ||||
|         if (loadentities) | ||||
|         { | ||||
|             pageModules.Clear(); | ||||
|             foreach (var module in PageState.Modules.Where(item => item.IsDeleted)) | ||||
|             { | ||||
|                 var pageModule = await PageModuleService.GetPageModuleAsync(module.PageModuleId); | ||||
|                 pageModules.Add(pageModule); | ||||
|             } | ||||
|             loadentities = false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task RestorePage(Page Page) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
| @ -52,11 +109,52 @@ else | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task Delete(int PageId) | ||||
|     private async Task DeletePage(int PageId) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             var deletedPageModules = PageState.Modules.Where(item => item.PageId == PageId); | ||||
|             await PageService.DeletePageAsync(PageId); | ||||
|             foreach (var module in deletedPageModules) | ||||
|             { | ||||
|                 await ModuleService.DeleteModuleAsync(module.ModuleId); | ||||
|             } | ||||
|             NavigationManager.NavigateTo(NavigateUrl("admin/recyclebin", Reload.Site)); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task RestorePageModule(PageModule PageModule) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             PageModule.IsDeleted = false; | ||||
|             await PageModuleService.UpdatePageModuleAsync(PageModule); | ||||
|             loadentities = true; | ||||
|             await LoadEntities(); | ||||
|             NavigationManager.NavigateTo(NavigateUrl("admin/recyclebin", Reload.Site)); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task DeletePageModule(int PageModuleId, int ModuleId) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             await PageModuleService.DeletePageModuleAsync(PageModuleId); | ||||
|             if (PageState.Modules.Count(item => item.ModuleId == ModuleId) == 1) | ||||
|             { | ||||
|                 await ModuleService.DeleteModuleAsync(ModuleId); | ||||
|             } | ||||
|             PageState.Modules.RemoveAt(PageState.Modules.FindIndex(item => item.ModuleId == ModuleId)); | ||||
|             loadentities = true; | ||||
|             await LoadEntities(); | ||||
|             NavigationManager.NavigateTo(NavigateUrl("admin/recyclebin", Reload.Site)); | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Emanuele Filardo
					Emanuele Filardo