gehgassi_backend/gehGassi.Web/Views/User/_EditCustomer.cshtml

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);
}
}