184 lines
12 KiB
Plaintext
184 lines
12 KiB
Plaintext
@using gehGassi.Domain.Roles
|
|
@using gehGassi.Permissions
|
|
@using gehGassi.Web.Helper
|
|
@using Microsoft.AspNetCore.Builder
|
|
@using Microsoft.AspNetCore.Mvc.Localization
|
|
@using Microsoft.Extensions.Options
|
|
@model gehGassi.Web.Models.ApplicationUserVm
|
|
@inject IViewLocalizer Localizer
|
|
@inject IOptions<RequestLocalizationOptions> Options
|
|
@{
|
|
bool loadJs = ViewBag.LoadJs ?? false;
|
|
ViewData["Title"] = Localizer["Button_Edit"];
|
|
var cultureItems = Options.Value.SupportedCultures.Select(c => new SelectListItem { Value = c.Name, Text = c.NativeName }).ToList();
|
|
var timeZoneList = TimeZoneInfo.GetSystemTimeZones().Select(t => new SelectListItem { Text = t.DisplayName, Value = t.Id, Selected = Model != null && t.Id == Model.TimeZoneId }).ToList();
|
|
List<ApplicationRole> rolesList = ViewBag.Roles;
|
|
var roles = rolesList.Select(c => new SelectListItem { Value = c.Name, Text = c.Name }).ToList();
|
|
List<PermissionDisplay> permssions = (List<PermissionDisplay>)ViewBag.Permissions;
|
|
}
|
|
|
|
<section id="userEditCustomerContainer">
|
|
<div>
|
|
<div id="pageTitleAdd" style="display: none;">@ViewData["Title"]: @Model.UserName</div>
|
|
<form cb-preventsubmit id="frmEditUserCustomer" class="form" asp-controller="User" asp-action="EditCustomer" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#userEditCustomerContainer">
|
|
<div asp-validation-summary="ModelOnly"></div>
|
|
<input type="hidden" asp-for="Id" class="validateAlways" />
|
|
<input type="hidden" asp-for="RegistrationDate" />
|
|
<input type="hidden" asp-for="LastLoginDate" />
|
|
<input type="hidden" asp-for="Permissions" />
|
|
<input type="hidden" asp-for="CustomerId" />
|
|
<input type="hidden" asp-for="AppUserId" />
|
|
<input type="hidden" asp-for="Photo" />
|
|
|
|
<div id="tabContainer">
|
|
<div class="e-tab-header">
|
|
<div>@Localizer["User_Tab_Details"]</div>
|
|
<div>@Localizer["User_Tab_Permissions"]</div>
|
|
</div>
|
|
<div class="e-content">
|
|
<div class="pt-3 ">
|
|
<div class="row">
|
|
<div class="col-md-4 col-12" style="margin-right: 25px;">
|
|
<label asp-for="Photo"></label>
|
|
<div class="text-center">
|
|
@if (!string.IsNullOrWhiteSpace(Model.Photo))
|
|
{
|
|
<img id="photoImage" class="img-fluid upload-image-container" style="height: auto !important; min-height: 200px;" src="/file/documents/@Model.Photo" alt="" />
|
|
}
|
|
else
|
|
{
|
|
<img id="photoImage" class="img-fluid upload-image-container" style="height: auto !important; min-height: 200px;" alt="" />
|
|
}
|
|
</div>
|
|
<div class="text-center">
|
|
<span asp-validation-for="Photo" class="invalid-feedback"></span>
|
|
</div>
|
|
<div class="text-center mt-2">
|
|
<button type="button" id="btnUploadImage" class="btn btn-primary btn-sm"><i class="fa fa-fw fa-edit"></i></button>
|
|
<button type="button" id="btnDeleteImage" class="btn btn-primary btn-sm" style="display: none;"><i class="fa fa-fw fa-trash"></i></button>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-7 col-12">
|
|
<div class="row mb-3">
|
|
<div class="col-sm-12">
|
|
<label class="form-label" asp-for="UserName"></label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
|
|
<input asp-for="UserName" class="form-control" readonly="readonly"/>
|
|
<span asp-validation-for="UserName" class="invalid-feedback"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-3">
|
|
<div class="col-sm-6">
|
|
<label class="form-label" asp-for="FirstName"></label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa fa-fw fa-signature"></i></span>
|
|
<input asp-for="FirstName" class="form-control" />
|
|
<span asp-validation-for="FirstName" class="invalid-feedback"></span>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<label class="form-label" asp-for="LastName"></label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa fa-fw fa-signature"></i></span>
|
|
<input asp-for="LastName" class="form-control" />
|
|
<span asp-validation-for="LastName" class="invalid-feedback"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-3">
|
|
<div class="col-12">
|
|
<label class="form-label" asp-for="PreferredLanguage"></label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa fa-fw fa-globe"></i></span>
|
|
<select asp-for="PreferredLanguage" asp-items="@cultureItems" class="form-control"></select>
|
|
<span asp-validation-for="PreferredLanguage" class="invalid-feedback"></span>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="row mb-3">
|
|
<div class="col-12">
|
|
<label class="form-label" asp-for="TimeZoneId"></label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa fa-fw fa-clock"></i></span>
|
|
<select asp-for="TimeZoneId" asp-items="@timeZoneList" class="form-control"></select>
|
|
<span asp-validation-for="TimeZoneId" class="invalid-feedback"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="pt-3 ">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="row mb-2">
|
|
<label class="form-label" asp-for="Roles"></label>
|
|
<div class="input-group">
|
|
<select asp-for="Roles" asp-items="@roles" class="form-control" multiple="multiple"></select>
|
|
<span asp-validation-for="Roles" class="invalid-feedback"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="accordion">
|
|
<div id="card">
|
|
@{ var counter = 0;}
|
|
@foreach (var permissionGroup in permssions.GroupBy(c => c.GroupName).OrderBy(c => c.Key))
|
|
{
|
|
counter += 1;
|
|
<div class="card-header" id="group_@counter" style="padding: 0;">
|
|
<h5 class="mb-0">
|
|
<button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#collapse_@counter" aria-expanded="true" aria-controls="collapseOne">@permissionGroup.Key</button>
|
|
</h5>
|
|
</div>
|
|
<div id="collapse_@counter" class="collapse show" aria-labelledby="headingOne">
|
|
<div class="card-body white">
|
|
<div class="row">
|
|
@foreach (var permission in permissionGroup)
|
|
{
|
|
<div class="col-auto">
|
|
<div class="custom-control custom-checkbox" style="white-space: nowrap;">
|
|
<input type="hidden" asp-for="@Model.PermissionVms[GetIndex(permission.Permission)].Permission" />
|
|
<input type="checkbox" class="custom-control-input" asp-for="@Model.PermissionVms[GetIndex(permission.Permission)].Granted" data-permission="@permission.Permission">
|
|
<label class="custom-control-label" asp-for="@Model.PermissionVms[GetIndex(permission.Permission)].Granted">@permission.ShortName <i class="fa fa-fw fa-info-circle" data-toggle="tooltip" data-placement="top" title="@permission.Description" style="cursor: pointer"></i></label>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-row button-row">
|
|
<div class="col-12">
|
|
<div>
|
|
<button type="button" id="btnEditUser" class="btn btn-primary">@Localizer["Button_Save"]</button>
|
|
<button type="button" id="btnEditUserCancel" class="btn btn-primary">@Localizer["Button_Cancel"]</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
@Html.Hidden("jsGetPermissionsForRole", Url.Action("GetPermissionsForRoleCustomer", "User"))
|
|
@Html.Hidden("jsUploadUrl", Url.Action("UploadTempFile", "User", new { uid = Model.Id }))
|
|
@Html.Hidden("jsRemoveUrl", Url.Action("RemoveTempFile", "User"))
|
|
<system-js url="~/scripts/Views/User/editCustomer.js" fresh-import="true"></system-js>
|
|
</section>
|
|
@functions
|
|
{
|
|
|
|
public int GetIndex(Permission permission)
|
|
{
|
|
return Model.PermissionVms.FindIndex(c => c.Permission == permission);
|
|
}
|
|
|
|
}
|