108 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@namespace Oqtane.Modules.Admin.Roles
 | 
						|
@inherits ModuleBase
 | 
						|
@inject NavigationManager NavigationManager
 | 
						|
@inject IRoleService RoleService
 | 
						|
@inject IStringLocalizer<Edit> Localizer
 | 
						|
@inject IStringLocalizer<SharedResources> SharedLocalizer
 | 
						|
 | 
						|
<form @ref="form" class="@(validated ? "was-validated" : "needs-validation")" novalidate>
 | 
						|
    <div class="container">
 | 
						|
        <div class="row mb-1 align-items-center">
 | 
						|
            <Label Class="col-sm-3" For="name" HelpText="Name Of The Role" ResourceKey="Name">Name:</Label>
 | 
						|
            <div class="col-sm-9">
 | 
						|
                <input id="name" class="form-control" @bind="@_name" maxlength="256" required />
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
        <div class="row mb-1 align-items-center">
 | 
						|
            <Label Class="col-sm-3" For="description" HelpText="A Short Description Of The Role Which Describes Its Purpose" ResourceKey="Description">Description:</Label>
 | 
						|
            <div class="col-sm-9">
 | 
						|
                <textarea id="description" class="form-control" @bind="@_description" rows="5" maxlength="256" required></textarea>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
        <div class="row mb-1 align-items-center">
 | 
						|
            <Label Class="col-sm-3" For="isautoassigned" HelpText="Indicates Whether Or Not New Users Are Automatically Assigned To This Role" ResourceKey="AutoAssigned">Auto Assigned?</Label>
 | 
						|
            <div class="col-sm-9">
 | 
						|
                <select id="isautoassigned" class="form-select" @bind="@_isautoassigned" required>
 | 
						|
                    <option value="True">@SharedLocalizer["Yes"]</option>
 | 
						|
                    <option value="False">@SharedLocalizer["No"]</option>
 | 
						|
                </select>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
        <br /><br />
 | 
						|
        <button type="button" class="btn btn-success" @onclick="SaveRole">@SharedLocalizer["Save"]</button>
 | 
						|
        <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink>
 | 
						|
        <br /><br />
 | 
						|
        <AuditInfo CreatedBy="@_createdby" CreatedOn="@_createdon" ModifiedBy="@_modifiedby" ModifiedOn="@_modifiedon"></AuditInfo>
 | 
						|
    </div>
 | 
						|
</form>
 | 
						|
 | 
						|
@code {
 | 
						|
    private ElementReference form;
 | 
						|
    private bool validated = false;
 | 
						|
 | 
						|
    private int _roleid;
 | 
						|
    private string _name = string.Empty;
 | 
						|
    private string _description = string.Empty;
 | 
						|
    private string _isautoassigned = "False";
 | 
						|
    private string _createdby;
 | 
						|
    private DateTime _createdon;
 | 
						|
    private string _modifiedby;
 | 
						|
    private DateTime _modifiedon;
 | 
						|
 | 
						|
    public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit;
 | 
						|
 | 
						|
    protected override async Task OnInitializedAsync()
 | 
						|
    {
 | 
						|
        try
 | 
						|
        {
 | 
						|
            _roleid = Int32.Parse(PageState.QueryString["id"]);
 | 
						|
            var role = await RoleService.GetRoleAsync(_roleid);
 | 
						|
            if (role != null)
 | 
						|
            {
 | 
						|
                _name = role.Name;
 | 
						|
                _description = role.Description;
 | 
						|
                _isautoassigned = role.IsAutoAssigned.ToString();
 | 
						|
                _createdby = role.CreatedBy;
 | 
						|
                _createdon = role.CreatedOn;
 | 
						|
                _modifiedby = role.ModifiedBy;
 | 
						|
                _modifiedon = role.ModifiedOn;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        catch (Exception ex)
 | 
						|
        {
 | 
						|
            await logger.LogError(ex, "Error Loading Role {RoleId} {Error}", _roleid, ex.Message);
 | 
						|
            AddModuleMessage(Localizer["Error.LoadRole"], MessageType.Error);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    private async Task SaveRole()
 | 
						|
    {
 | 
						|
        validated = true;
 | 
						|
        var interop = new Interop(JSRuntime);
 | 
						|
        if (await interop.FormValid(form))
 | 
						|
        {
 | 
						|
            var role = await RoleService.GetRoleAsync(_roleid);
 | 
						|
            role.Name = _name;
 | 
						|
            role.Description = _description;
 | 
						|
            role.IsAutoAssigned = (_isautoassigned != null && Boolean.Parse(_isautoassigned));
 | 
						|
            role.IsSystem = false;
 | 
						|
 | 
						|
            try
 | 
						|
            {
 | 
						|
                role = await RoleService.UpdateRoleAsync(role);
 | 
						|
                await logger.LogInformation("Role Saved {Role}", role);
 | 
						|
                NavigationManager.NavigateTo(NavigateUrl());
 | 
						|
            }
 | 
						|
            catch (Exception ex)
 | 
						|
            {
 | 
						|
                await logger.LogError(ex, "Error Saving Role {Role} {Error}", role, ex.Message);
 | 
						|
                AddModuleMessage(Localizer["Error.SaveRole"], MessageType.Error);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |