modified all admin UIs to position action buttons on the left side of grids and implemented ActionDialog throughout rather than dedicated delete components
This commit is contained in:
		| @ -1,115 +0,0 @@ | ||||
| @namespace Oqtane.Modules.Admin.Users | ||||
| @inherits ModuleBase | ||||
| @inject NavigationManager NavigationManager | ||||
| @inject IUserService UserService | ||||
| @inject IProfileService ProfileService | ||||
| @inject ISettingService SettingService | ||||
|  | ||||
| @if (!string.IsNullOrWhiteSpace(username)) | ||||
| { | ||||
|     <table class="table table-borderless"> | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label for="Name" class="control-label">Username: </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <input class="form-control" @bind="@username" disabled /> | ||||
|             </td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label for="Name" class="control-label">Email: </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <input class="form-control" @bind="@email" disabled /> | ||||
|             </td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label for="Name" class="control-label">Full Name: </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <input class="form-control" @bind="@displayname" disabled /> | ||||
|             </td> | ||||
|         </tr> | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <label for="Name" class="control-label">Is Deleted? </label> | ||||
|             </td> | ||||
|             <td> | ||||
|                 <select class="form-control" @bind="@isdeleted" disabled> | ||||
|                     <option value="True">Yes</option> | ||||
|                     <option value="False">No</option> | ||||
|                 </select> | ||||
|             </td> | ||||
|         </tr> | ||||
|     </table> | ||||
|     <button type="button" class="btn btn-primary" @onclick="DeleteUser">Delete</button> | ||||
|     <NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink> | ||||
|     <br /> | ||||
|     <br /> | ||||
|     <AuditInfo CreatedBy="@createdby" CreatedOn="@createdon" ModifiedBy="@modifiedby" ModifiedOn="@modifiedon" DeletedBy="@deletedby" DeletedOn="@deletedon"></AuditInfo> | ||||
| } | ||||
|  | ||||
| @code { | ||||
|     public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } | ||||
|  | ||||
|     int userid; | ||||
|     string username = ""; | ||||
|     string email = ""; | ||||
|     string displayname = ""; | ||||
|     string createdby; | ||||
|     DateTime createdon; | ||||
|     string modifiedby; | ||||
|     DateTime modifiedon; | ||||
|     string deletedby; | ||||
|     DateTime? deletedon; | ||||
|     string isdeleted; | ||||
|  | ||||
|     protected override async Task OnInitializedAsync() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             userid = Int32.Parse(PageState.QueryString["id"]); | ||||
|             User user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); | ||||
|             if (user != null) | ||||
|             { | ||||
|                 username = user.Username; | ||||
|                 email = user.Email; | ||||
|                 displayname = user.DisplayName; | ||||
|                 createdby = user.CreatedBy; | ||||
|                 createdon = user.CreatedOn; | ||||
|                 modifiedby = user.ModifiedBy; | ||||
|                 modifiedon = user.ModifiedOn; | ||||
|                 deletedby = user.DeletedBy; | ||||
|                 deletedon = user.DeletedOn; | ||||
|                 isdeleted = user.IsDeleted.ToString(); | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage("Error Loading User", MessageType.Error); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private async Task DeleteUser() | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             User user = await UserService.GetUserAsync(userid, PageState.Site.SiteId); | ||||
|             if (user != null) | ||||
|             { | ||||
|                 await UserService.DeleteUserAsync(userid); | ||||
|                 await logger.LogInformation("User Deleted {UserId}", userid); | ||||
|                 NavigationManager.NavigateTo(NavigateUrl()); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Loading User {UserId} {Error}", userid, ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -1,6 +1,7 @@ | ||||
| @namespace Oqtane.Modules.Admin.Users | ||||
| @inherits ModuleBase | ||||
| @inject IUserRoleService UserRoleService | ||||
| @inject IUserService UserService | ||||
|  | ||||
| @if (userroles == null) | ||||
| { | ||||
| @ -8,20 +9,20 @@ | ||||
| } | ||||
| else | ||||
| { | ||||
|     <ActionLink Action="Add" Text="Add User" Style="float: right; margin: 10px;" /> | ||||
|     <ActionLink Action="Add" Text="Add User" /> | ||||
|  | ||||
|     <Pager Items="@userroles"> | ||||
|         <Header> | ||||
|             <th> </th> | ||||
|             <th> </th> | ||||
|             <th> </th> | ||||
|             <th>Name</th> | ||||
|             <th> </th> | ||||
|             <th> </th> | ||||
|             <th> </th> | ||||
|         </Header> | ||||
|         <Row> | ||||
|             <td>@context.User.DisplayName</td> | ||||
|             <td><ActionLink Action="Edit" Parameters="@($"id=" + context.UserId.ToString())" /></td> | ||||
|             <td><ActionLink Action="Delete" Parameters="@($"id=" + context.UserId.ToString())" Class="btn btn-danger" /></td> | ||||
|             <td><ActionDialog Header="Delete User" Message="@("Are You Sure You Wish To Delete " + context.User.DisplayName + "?")" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteUser(context))" /></td> | ||||
|             <td><ActionLink Action="Roles" Parameters="@($"id=" + context.UserId.ToString())" /></td> | ||||
|             <td>@context.User.DisplayName</td> | ||||
|         </Row> | ||||
|     </Pager> | ||||
| } | ||||
| @ -36,4 +37,23 @@ else | ||||
|         userroles = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId); | ||||
|         userroles = userroles.Where(item => item.Role.Name == Constants.RegisteredRole).ToList(); | ||||
|     } | ||||
|  | ||||
|     private async Task DeleteUser(UserRole UserRole) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             User user = await UserService.GetUserAsync(UserRole.UserId, PageState.Site.SiteId); | ||||
|             if (user != null) | ||||
|             { | ||||
|                 await UserService.DeleteUserAsync(user.UserId); | ||||
|                 await logger.LogInformation("User Deleted {User}", UserRole.User); | ||||
|                 StateHasChanged(); | ||||
|             } | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             await logger.LogError(ex, "Error Deleting User {User} {Error}", UserRole.User, ex.Message); | ||||
|             AddModuleMessage(ex.Message, MessageType.Error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker