Add project files.
This commit is contained in:
311
Views/Panel/User.cshtml
Normal file
311
Views/Panel/User.cshtml
Normal file
@ -0,0 +1,311 @@
|
||||
@using boilerplate.Models
|
||||
@model User
|
||||
@{
|
||||
var User = Session["User"] as User;
|
||||
if (Model == null || User == null) { return; }
|
||||
ViewBag.Title = Model.User_Id == 0 ? "کاربر جدید" : Model.User_Name + " " + Model.User_Family;
|
||||
Layout = "~/Views/_PanelSideBar.cshtml";
|
||||
Functions functions = new Functions();
|
||||
|
||||
}
|
||||
<form autocomplete="off">
|
||||
<div class="row">
|
||||
<div class="col-md-8 form-group">
|
||||
<div class="row">
|
||||
<div class="col-12 form-group">
|
||||
<div class="card card-custom">
|
||||
<div class="card-body">
|
||||
<div class="form-group row align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="txtName">نام:</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input class="form-control" id="txtName" placeholder="نام ..." value="@Model.User_Name" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="txtFamily">نام خانوادگی:</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input class="form-control" id="txtFamily" placeholder="نام خانوادگی ..." value="@Model.User_Family" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="txtPhone">شماره موبایل:</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input class="form-control" id="txtPhone" placeholder="شماره موبایل ..." value="@Model.User_Phone" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="txtPassword">رمز عبور:</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<input class="form-control" id="txtPassword" placeholder="رمز عبور ..." />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="ddlRole">نوع کاربر:</label>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<select class="form-control" id="ddlRole">
|
||||
<option value="Admin" @(Model.User_Role == "Admin" ? "selected" : "")>مدیر</option>
|
||||
<option value="User" @(Model.User_Role == "User" ? "selected" : "")>کاربر</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row align-items-center">
|
||||
<div class="col-md-2">
|
||||
<label for="fuImage">تصویر:</label>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<input class="form-control" id="fuImage" type="file" accept="image/*" />
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<a href="~/Media/User/@Model.User_Image" target="_blank">
|
||||
<div class="symbol symbol-100 border">
|
||||
<img src="~/Media/User/@Model.User_Image" id="fuPreview" style="object-fit: cover;">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 form-group">
|
||||
<div class="row">
|
||||
<div class="col-12 form-group">
|
||||
<div class="card card-custom">
|
||||
<div class="card-header bg-secondary-o-100">
|
||||
<div class="card-title">
|
||||
<label>انتشار</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body align-items-center">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<label for="chkStatus">فعال:</label>
|
||||
</div>
|
||||
<div class="col">
|
||||
<span class="switch switch-outline switch-icon switch-sm switch-success">
|
||||
<label>
|
||||
<input type="checkbox" id="chkActive" @(Model.User_Status == 1 ? "checked" : "")>
|
||||
<span></span>
|
||||
</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="row">
|
||||
@if (Model.User_Id != 0)
|
||||
{
|
||||
if (User.User_Id != Model.User_Id && functions.HasAccess(User.User_Access, "ManageDeleteUser"))
|
||||
{
|
||||
<div class="col text-center">
|
||||
<a class="btn btn-danger btn-shadow btn-sm w-100 btns" onclick="Delete()">حذف</a>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
<div class="col text-center">
|
||||
<a class="btn btn-success btn-shadow btns @(Model.User_Id != 0 ? $"btn-sm {(User.User_Id == Model.User_Id ? "" : "w-100")}" : "")" onclick="Save()" id="btnSave">@(Model.User_Id == 0 ? "انتشار" : "ذخیره")</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 form-group" id="CategoryBlock">
|
||||
<div class="card card-custom">
|
||||
<div class="card-header bg-secondary-o-100">
|
||||
<div class="card-title">
|
||||
<label>دسترسی ها</label>
|
||||
</div>
|
||||
<div class="card-toolbar">
|
||||
<a class="btn btn-sm btn-icon btn-primary mx-1" onclick="$(`input[name='chkAccess']`).prop('checked', false)" data-toggle="tooltip" title="عدم علامت همه">
|
||||
<i class="fa fa-minus"></i>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-primary mx-1" onclick="$(`input[name='chkAccess']`).prop('checked', true)" data-toggle="tooltip" title="علامت زدن همه">
|
||||
<i class="fa fa-check"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body align-items-center">
|
||||
<div class="max-h-250px overflow-auto">
|
||||
<div class="checkbox-list mb-3">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" value="ManageDashboard" name="chkAccess">
|
||||
<span></span>
|
||||
آمار داشبورد
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox-list mb-3">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" value="ManageUser" name="chkAccess">
|
||||
<span></span>
|
||||
مدیریت کاربران
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox-list mb-3">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" value="ManageDeleteUser" name="chkAccess">
|
||||
<span></span>
|
||||
مدیریت حذف کاربران
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox-list mb-3">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" value="ManageSetting" name="chkAccess">
|
||||
<span></span>
|
||||
تنظیمات
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@section Script {
|
||||
<script>
|
||||
const Id = @Model.User_Id;
|
||||
|
||||
$("#UserList").addClass("menu-item-open");
|
||||
if (Id == 0) { $("#UserMenu").addClass("menu-item-active"); }
|
||||
|
||||
const UserAccess = "@Model.User_Access";
|
||||
if (UserAccess == "All") {
|
||||
$(`input[name="chkAccess"]`).prop("checked", true);
|
||||
}
|
||||
else {
|
||||
UserAccess.split(',').forEach(item => { $(`input[name="chkAccess"][value="${item}"]`).prop("checked", true); });
|
||||
}
|
||||
|
||||
$(window).bind('keydown', function (event) {
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
switch (String.fromCharCode(event.which).toLowerCase()) {
|
||||
case 's':
|
||||
event.preventDefault();
|
||||
$("#btnSave").click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#fuImage").on("change", function () {
|
||||
if (this.files.length) {
|
||||
try {
|
||||
let Image = this.files[0];
|
||||
if (Image.type.includes("image/")) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function () {
|
||||
$("#fuPreview").attr("src", reader.result);
|
||||
};
|
||||
reader.readAsDataURL(Image);
|
||||
}
|
||||
else {
|
||||
$(this).val(null);
|
||||
toastr.error('فایل انتخاب شده پشتیبانی نمی شود !');
|
||||
}
|
||||
} catch (e) { }
|
||||
}
|
||||
});
|
||||
|
||||
function Save() {
|
||||
let Phone = $("#txtPhone").val().trim();
|
||||
if (Phone.length) {
|
||||
let Access = "";
|
||||
if ($('input[name="chkAccess"]').length == $('input[name="chkAccess"]:checked').length) {
|
||||
Access = "All";
|
||||
}
|
||||
else if ($('input[name="chkAccess"]:checked').length) {
|
||||
$('input[name="chkAccess"]:checked').each(function () {
|
||||
if (Access) {
|
||||
Access += `,${this.value}`;
|
||||
}
|
||||
else {
|
||||
Access = this.value;
|
||||
}
|
||||
});
|
||||
}
|
||||
$("#btnSave").css("opacity", 0.5);
|
||||
$("#btnSave").attr("onclick", "");
|
||||
let model = {
|
||||
Auth: { UserId: UserId, Token: Token },
|
||||
Id: Id,
|
||||
Name: $("#txtName").val().trim(),
|
||||
Family: $("#txtFamily").val().trim(),
|
||||
Phone: Phone,
|
||||
Password: $("#txtPassword").val().trim(),
|
||||
Role: $("#ddlRole").val(),
|
||||
Status: $("#chkActive").prop("checked") ? 1 : 2,
|
||||
Access: Access
|
||||
};
|
||||
let formData = new FormData();
|
||||
formData.append("Model", JSON.stringify(model));
|
||||
formData.append("Image", $("#fuImage")[0].files[0]);
|
||||
let ajax = new XMLHttpRequest();
|
||||
ajax.addEventListener("load", function (event) {
|
||||
$("#btnSave").css("opacity", 1);
|
||||
let data = JSON.parse(event.target.responseText);
|
||||
if (data.Status == "Success") {
|
||||
toastr.success("ذخیره سازی با موفقیت انجام شد");
|
||||
setTimeout(function () {
|
||||
location.href = `../Panel/User/${data.Result}`;
|
||||
}, 1500);
|
||||
} else {
|
||||
$("#btnSave").attr("onclick", "Save()");
|
||||
console.log(data);
|
||||
toastr.warning("خطا هنگام ذخیره سازی اطلاعات");
|
||||
}
|
||||
}, false);
|
||||
ajax.addEventListener("error", function () {
|
||||
$("#btnSave").css("opacity", 1);
|
||||
$("#btnSave").attr("onclick", "Save()");
|
||||
toastr.error("خطا هنگام برقراری ارتباط با سرور");
|
||||
}, false);
|
||||
ajax.open("POST", "../api/User/Manage");
|
||||
ajax.send(formData);
|
||||
}
|
||||
else {
|
||||
toastr.warning("شماره موبایل را وارد کنید");
|
||||
}
|
||||
}
|
||||
|
||||
function Delete() {
|
||||
Swal.fire({
|
||||
title: "آیا از انجام این عملیات مطمئن هستید ؟",
|
||||
text: "این عملیات قابل برگشت نمی باشد !!!",
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
cancelButtonText: 'خیر',
|
||||
confirmButtonText: 'بله'
|
||||
}).then((result) => {
|
||||
if (result.value) {
|
||||
$.post("../api/User/Delete", { Id: Id, UserId: UserId, Token: Token }).done(function (data) {
|
||||
if (data.Status == "Success") {
|
||||
$(".btns").remove();
|
||||
toastr.success("حذف با موفقیت انجام شد");
|
||||
setTimeout(function () {
|
||||
location.href = "../Panel/Users";
|
||||
}, 1500);
|
||||
} else {
|
||||
toastr.warning("خطا هنگام برقراری ارتباط با سرور");
|
||||
}
|
||||
}).fail(function () {
|
||||
toastr.error("خطا هنگام برقراری ارتباط با سرور");
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
}
|
||||
Reference in New Issue
Block a user