Files
Dashboard_Exercise/Views/Panel/User.cshtml
2025-07-23 18:54:59 +03:30

312 lines
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@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>
}