Add project files.
This commit is contained in:
131
Views/Panel/Index.cshtml
Normal file
131
Views/Panel/Index.cshtml
Normal file
@ -0,0 +1,131 @@
|
||||
@using boilerplate.Models
|
||||
@{
|
||||
ViewBag.Title = ViewBag.PageTitle;
|
||||
Layout = "~/Views/_PanelSideBar.cshtml";
|
||||
var User = Session["User"] as User;
|
||||
if (User == null) { return; }
|
||||
bool HasAccess(string Access) => new Functions().HasAccess(User.User_Access, Access);
|
||||
}
|
||||
|
||||
<h2>@ViewBag.PageTitle</h2>
|
||||
|
||||
|
||||
@if (HasAccess("ManageDashboard"))
|
||||
{
|
||||
@section Heads {
|
||||
<link href="~/Content/Panel/plugins/custom/fullcalendar/fullcalendar.bundle.rtl.css?v=7.0.6" rel="stylesheet" type="text/css" />
|
||||
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
|
||||
}
|
||||
<style>
|
||||
.text-gray-75 {
|
||||
color: #3F4254;
|
||||
}
|
||||
</style><div class="row">
|
||||
<div class="col-sm-12 form-group">
|
||||
<div class="card card-custom">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 form-group">
|
||||
<div class="card card-custom wave wave-animate-slow wave-primary mb-8 mb-lg-0">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center p-5">
|
||||
<div class="mr-6">
|
||||
<i class="fa fa-network-wired text-primary icon-3x"></i>
|
||||
</div>
|
||||
<div class="d-flex flex-column">
|
||||
<a href="~/panel/Groups" class="text-gray text-hover-primary font-weight-bold font-size-h4 mb-3">@ViewBag.Groups</a>
|
||||
<div class="text-gray-75">مجموعه ها</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 form-group">
|
||||
<div class="card card-custom wave wave-animate-slow wave-primary mb-8 mb-lg-0">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center p-5">
|
||||
<div class="mr-6">
|
||||
<i class="fa fa-people-group text-primary icon-3x"></i>
|
||||
</div>
|
||||
<div class="d-flex flex-column">
|
||||
<a href="~/panel/Units" class="text-gray text-hover-primary font-weight-bold font-size-h4 mb-3">@ViewBag.Units</a>
|
||||
<div class="text-gray-75">واحد ها</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 form-group">
|
||||
<div class="card card-custom wave wave-animate-slow wave-primary mb-8 mb-lg-0">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center p-5">
|
||||
<div class="mr-6">
|
||||
<i class="fa fa-address-card text-primary icon-3x"></i>
|
||||
</div>
|
||||
<div class="d-flex flex-column">
|
||||
<a href="~/panel/HrList" class="text-gray text-hover-primary font-weight-bold font-size-h4 mb-3">@ViewBag.Hr</a>
|
||||
<div class="text-gray-75">منابع انسانی</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 form-group">
|
||||
<div class="card card-custom wave wave-animate-slow wave-primary mb-8 mb-lg-0">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center p-5">
|
||||
<div class="mr-6">
|
||||
<i class="fa fa-comments text-primary icon-3x"></i>
|
||||
</div>
|
||||
<div class="d-flex flex-column">
|
||||
<a href="~/panel/Chats" class="text-gray text-hover-primary font-weight-bold font-size-h4 mb-3">
|
||||
تالار گفتگو
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@*<div class="col-lg-4 form-group">
|
||||
<div class="card card-custom wave wave-animate-slow wave-primary mb-8 mb-lg-0">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center p-5">
|
||||
<div class="mr-6">
|
||||
<i class="fa fa-meet text-primary icon-3x"></i>
|
||||
</div>
|
||||
<div class="d-flex flex-column">
|
||||
<a href="~/panel/Meetings/0" class="text-gray text-hover-primary font-weight-bold font-size-h4 mb-3">
|
||||
جلسات
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>*@
|
||||
<div class="col-lg-6 form-group">
|
||||
<div class="card card-custom wave wave-animate-slow wave-primary mb-8 mb-lg-0">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center p-5">
|
||||
<div class="mr-6">
|
||||
<i class="flaticon2-settings text-primary icon-3x"></i>
|
||||
</div>
|
||||
<div class="d-flex flex-column">
|
||||
<a href="~/panel/setting" class="text-gray text-hover-primary font-weight-bold font-size-h4 mb-3">
|
||||
تنظیمات
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
}
|
||||
@section Script{
|
||||
}
|
||||
158
Views/Panel/Login.cshtml
Normal file
158
Views/Panel/Login.cshtml
Normal file
@ -0,0 +1,158 @@
|
||||
@{
|
||||
ViewBag.Title = "ورود";
|
||||
Layout = "~/Views/_LayoutAdmin.cshtml";
|
||||
}
|
||||
<div class="d-flex flex-center flex-row-fluid bgi-size-cover bgi-position-top bgi-no-repeat" style="background-image: url('../assets/media/bg/bg-3.jpg');">
|
||||
<div class="login-form text-center p-7 position-relative overflow-hidden w-50">
|
||||
<div class="d-flex flex-center mb-15">
|
||||
<a href="#">
|
||||
<img src="~/Media/logo.png" class="max-h-75px" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="login-signin">
|
||||
<div class="mb-20">
|
||||
<h3>ورود به پنل مدیریت</h3>
|
||||
<div class="text-muted font-weight-bold">شماره تلفن خود را وارد کنید</div>
|
||||
</div>
|
||||
<form class="form fv-plugins-bootstrap fv-plugins-framework" id="kt_sign_in_form">
|
||||
@if (!Response.IsRequestBeingRedirected)
|
||||
{
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
<div class="form-group mb-5 fv-plugins-icon-container">
|
||||
<input class="form-control h-auto form-control-solid py-4 px-8" id="txtPhone" type="text" placeholder="شماره همراه ..." name="Username" maxlength="11">
|
||||
<div class="fv-plugins-message-container"></div>
|
||||
</div>
|
||||
<div class="form-group mb-5 fv-plugins-icon-container">
|
||||
<input class="form-control h-auto form-control-solid py-4 px-8" id="txtCode" type="password" placeholder="کد تایید" name="Password">
|
||||
<div class="fv-plugins-message-container"></div>
|
||||
</div>
|
||||
<a id="SaveBtn" class="btn btn-primary font-weight-bold px-9 py-4 my-3 mx-4" onclick="Login()">ارسال کد تایید</a>
|
||||
<a id="SaveBtn" class="btn btn-primary font-weight-bold px-9 py-4 my-3 mx-4" onclick="LoginPass()">ورود با پسورد</a>
|
||||
<input type="hidden"><div></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section Script{
|
||||
<script src="~/siteassets/js/bootstrap.js"></script>
|
||||
<script src="~/siteassets/js/notyf.min.js"></script>
|
||||
|
||||
<script>
|
||||
const Return = '@ViewBag.Return';
|
||||
|
||||
$("#txtPhone").keydown(function (e) {
|
||||
if (e.keyCode == 13) {
|
||||
$("#SaveBtn").click();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
function LoginPass() {
|
||||
let Username = $("input[name=Username]").val();
|
||||
let Password = $("input[name=Password]").val();
|
||||
if (Username.length && Password.length) {
|
||||
$("#kt_sign_in_submit").removeAttr("onclick");
|
||||
$("#kt_sign_in_submit").css("opacity", 0.5);
|
||||
$.post("../Panel/Login", $("#kt_sign_in_form").serialize(), function (data) {
|
||||
if (data.Status == "Success") {
|
||||
location.href = "../Panel/Index";
|
||||
}
|
||||
else {
|
||||
$("#kt_sign_in_submit").attr("onclick", "Login()");
|
||||
if (data.Status == "Error") {
|
||||
toastr.warning("خطا هنگام برقراری ارتباط با سرور");
|
||||
}
|
||||
else if (data.Status == "Block") {
|
||||
toastr.warning("شما دسترسی ورود به پنل را ندارید");
|
||||
}
|
||||
else {
|
||||
toastr.warning("اطلاعات وارد شده صحیح نمی باشد");
|
||||
}
|
||||
}
|
||||
}).fail(function () {
|
||||
$("#kt_sign_in_submit").attr("onclick", "Login()");
|
||||
toastr.error("خطا هنگام برقراری ارتباط با سرور");
|
||||
}).always(function () {
|
||||
$("#kt_sign_in_submit").css("opacity", 1);
|
||||
});
|
||||
}
|
||||
else {
|
||||
toastr.warning("نام کاربری و رمز عبور را وارد کنید");
|
||||
}
|
||||
}
|
||||
|
||||
function Login() {
|
||||
var Phone = $("#txtPhone").val();
|
||||
if (Phone.length != 11) {
|
||||
toastr.error('شماره موبایل به درستی وارد نشده !!!');
|
||||
} else {
|
||||
$("#SaveBtn").css("opacity", 0.5);
|
||||
$("#SaveBtn").attr("onclick", "");
|
||||
$.post("../api/User/Login", { Phone: Phone }, function (data) {
|
||||
if (data.Status == "OK") {
|
||||
toastr.success('کد فعال سازی ارسال شد !!!');
|
||||
$("#txtPhone").prop("disabled", true);
|
||||
$(".lvl-2").fadeIn();
|
||||
$("#SaveBtn").attr("onclick", "Submit()");
|
||||
$("#SaveBtn").text("ورود به پنل");
|
||||
//setTimeout(function () {
|
||||
// let RedirectUrl = Return == '' ? '' : `&Return=${Return}`;
|
||||
// location.href = "Verify?Phone=" + Phone + RedirectUrl;
|
||||
//}, 2500);
|
||||
}
|
||||
else {
|
||||
$("#SaveBtn").attr("onclick", "Login()");
|
||||
toastr.error('خطا هنگام برقراری ارتباط با سرور !!!');
|
||||
}
|
||||
}).fail(function (xhr) {
|
||||
console.error("Error:", xhr.responseText);
|
||||
toastr.error('خطا هنگام برقراری ارتباط با سرور !!!');
|
||||
$("#SaveBtn").attr("onclick", "Login()");
|
||||
}).always(function () {
|
||||
$("#SaveBtn").css("opacity", 1);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function Submit() {
|
||||
var Phone = $("#txtPhone").val();
|
||||
var Code = $("#txtCode").val();
|
||||
if (Code.length == 5) {
|
||||
$.post("../api/User/CheckCode", { Phone: Phone, Code: Code }, function (data) {
|
||||
if (data.Status == "Success") {
|
||||
//$("#SaveBtn").attr("onclick", "");
|
||||
$.get("@Url.Action("Complete", "Panel")", { User: data.Id, Token: data.Token, Phone: Phone })
|
||||
.done(function () {
|
||||
toastr.success('ورود با موفقیت انجام شد !!!');
|
||||
setTimeout(function () {
|
||||
if (Return == '') {
|
||||
location.href = "Index";
|
||||
} else {
|
||||
location.href = Return;
|
||||
}
|
||||
}, 2500);
|
||||
})
|
||||
.fail(function (xhr, status, error) {
|
||||
// Handle error here
|
||||
console.error("Request failed: ", status, error);
|
||||
toastr.error('There was an error while processing your request.');
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
||||
toastr.error('کد وارد شده صحیح نمی باشد');
|
||||
}
|
||||
}).fail(function () {
|
||||
|
||||
toastr.error('خطا هنگام برقراری ارتباط با سرور !!!');
|
||||
}).always(function () {
|
||||
});
|
||||
} else {
|
||||
|
||||
toastr.error('کد تایید را وارد کنید.');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
}
|
||||
322
Views/Panel/Setting.cshtml
Normal file
322
Views/Panel/Setting.cshtml
Normal file
@ -0,0 +1,322 @@
|
||||
@using boilerplate.Models
|
||||
@using Newtonsoft.Json
|
||||
@model Setting
|
||||
@{
|
||||
ViewBag.Title = "تنظیمات";
|
||||
Layout = "~/Views/_PanelSideBar.cshtml";
|
||||
var Socials = JsonConvert.DeserializeObject<List<SocialModel>>(Model.Setting_Social);
|
||||
}
|
||||
<style>
|
||||
.dataTables_scrollHeadInner, .select2-container {
|
||||
width: 100% !important;
|
||||
}
|
||||
</style>
|
||||
<div class="card card-custom">
|
||||
<div class="card-header card-header-tabs-line">
|
||||
<div class="card-toolbar">
|
||||
<ul class="nav nav-tabs nav-bold nav-tabs-line">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" data-toggle="tab" href="#Tab_Panel_1">
|
||||
<span class="nav-text">عمومی</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_2">
|
||||
<span class="nav-text">تصاویر</span>
|
||||
</a>
|
||||
</li>
|
||||
@*<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_3">
|
||||
<span class="nav-text">سئو</span>
|
||||
</a>
|
||||
</li>*@
|
||||
@*<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_4">
|
||||
<span class="nav-text">فوتر سایت</span>
|
||||
</a>
|
||||
</li>*@
|
||||
@*<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_5">
|
||||
<span class="nav-text">شبکه های اجتماعی</span>
|
||||
</a>
|
||||
</li>*@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_6">
|
||||
<span class="nav-text">اس ام اس</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_7">
|
||||
<span class="nav-text">اطلاعات فاکتور</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card-toolbar">
|
||||
<a class="btn btn-success font-weight-bold" onclick="Save()" id="btnSave">ذخیره</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form autocomplete="off">
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade show active" id="Tab_Panel_1" role="tabpanel" aria-labelledby="Tab_Panel_1">
|
||||
<div class="row">
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtName">نام سایت:</label>
|
||||
<input class="form-control" id="txtName" value="@Model.Setting_Name" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtTitle">عنوان سایت:</label>
|
||||
<input class="form-control" id="txtTitle" value="@Model.Setting_Title" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtHeader">تگ های اضافی هدر (استایل، اسکریپت، ...):</label>
|
||||
<textarea class="form-control" id="txtHeader" rows="7" dir="ltr">@HttpUtility.UrlDecode(Model.Setting_Header)</textarea>
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtFooter">تگ های اضافی فوتر (اسکریپت، ...):</label>
|
||||
<textarea class="form-control" id="txtFooter" rows="7" dir="ltr">@HttpUtility.UrlDecode(Model.Setting_Footer)</textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="Tab_Panel_2" role="tabpanel" aria-labelledby="Tab_Panel_2">
|
||||
<div class="row">
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="fuImage">لوگو:</label>
|
||||
<input class="form-control" id="fuImage" type="file" accept=".png" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group">
|
||||
<a class="mt-2 float-left" href="~/Media/logo.png?v=1" target="_blank">
|
||||
<img src="~/Media/logo.png?v=1" class="img-thumbnail" style="width: 200px; background-color: #222222;" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="fuIcon">فاوآیکون:</label>
|
||||
<input class="form-control" id="fuIcon" type="file" accept=".ico" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group">
|
||||
<a class="mt-2 float-left" href="~/Media/favicon.ico?v=1" target="_blank">
|
||||
<img src="~/Media/favicon.ico?v=1" class="img-thumbnail" style="width: 50px;" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="Tab_Panel_3" role="tabpanel" aria-labelledby="Tab_Panel_3">
|
||||
<div class="row">
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtDescription">توضیحات سئو:</label>
|
||||
<textarea class="form-control" id="txtDescription" rows="3" placeholder="لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است">@Model.Setting_Description</textarea>
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="ddlKeywords">کلمات کلیدی سئو:</label>
|
||||
<select class="form-control w-100" id="ddlKeywords" multiple>
|
||||
@if (!string.IsNullOrEmpty(Model.Setting_Keywords))
|
||||
{
|
||||
foreach (var item in Model.Setting_Keywords.Split(','))
|
||||
{
|
||||
<option value="@item" selected>@item</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
</div>
|
||||
</div>
|
||||
@*<div class="tab-pane fade" id="Tab_Panel_4" role="tabpanel" aria-labelledby="Tab_Panel_4">
|
||||
<div class="row">
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtDescriptionFooter">توضیحات فوتر:</label>
|
||||
<textarea class="form-control" id="txtDescriptionFooter" rows="3" placeholder="لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است">@Model.DescriptionFooter</textarea>
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
</div>
|
||||
</div>*@
|
||||
<div class="tab-pane fade" id="Tab_Panel_5" role="tabpanel" aria-labelledby="Tab_Panel_5">
|
||||
<div class="row">
|
||||
@foreach (var item in Socials)
|
||||
{
|
||||
<div class="col-md-12 form-group">
|
||||
<div class="row form-group">
|
||||
<label class="col-md-2 col-form-label"><i class="@item.Icon vertical-middle"></i> @item.Value</label>
|
||||
<div class="col-6 col-md-3">
|
||||
<input class="form-control placeholder-right" id="txtSocialTitle_@item.Key" placeholder="عنوان را وارد نمایید" value="@item.Title" />
|
||||
</div>
|
||||
<div class="col-6 col-md-3">
|
||||
<input class="form-control placeholder-right" id="txtSocialLink_@item.Key" placeholder="لینک را وارد نمایید" value="@item.Link" />
|
||||
</div>
|
||||
<div class="col-2 col-md-1">
|
||||
<input type="hidden" class="Socials" value="@JsonConvert.SerializeObject(item)" />
|
||||
<span class="switch switch-sm switch-success">
|
||||
<label>
|
||||
<input type="checkbox" id="chkSocial_@item.Key" @(item.Checked ? "checked" : "")>
|
||||
<span></span>
|
||||
</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="Tab_Panel_6" role="tabpanel" aria-labelledby="Tab_Panel_6">
|
||||
<div class="row">
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtSmsUsername">نام کاربری:</label>
|
||||
<input class="form-control" id="txtSmsUsername" dir="ltr" value="@Model.Setting_Username" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtSmsPassword">رمز عبور:</label>
|
||||
<input class="form-control" id="txtSmsPassword" dir="ltr" value="@Model.Setting_Password" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtSmsFromNumber">ارسال سریع از خط:</label>
|
||||
<input class="form-control" id="txtSmsFromNumber" dir="ltr" value="@Model.Setting_FromNumber" />
|
||||
<span class="text-muted" style="font-size: 13px;">برای اتصال به پنل پیامکی، می توانید از <a href="http://sms.avinpayamak.ir" target="_blank">این لینک</a> استفاده کنید</span>
|
||||
<br />
|
||||
<span class="text-muted d-block mt-2" style="font-size: 13px;">ترجیحا از شماره <span class="text-primary" dir="ltr">+983000505</span> برای ارسال استفاده کنید و حتما شماره باید در پنل شما فعال باشد</span>
|
||||
</div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="SmsPaternLogin">پترن ارسال کد ورود:</label>
|
||||
<input class="form-control" id="txtSmsPaternLogin" dir="ltr" value="@Model.Setting_PaternLogin" />
|
||||
<span class="text-muted d-block mt-2" style="font-size: 13px;">متن پترن جهت ثبت: کد احراز هویت شما در سایت : %verification-code%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade" id="Tab_Panel_7" role="tabpanel" aria-labelledby="Tab_Panel_6">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtaddress">آدرس شرکت:</label>
|
||||
<input class="form-control" id="txtaddress" value="@Model.Setting_Address" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtpostcode">کد پستی:</label>
|
||||
<input class="form-control" id="txtpostcode" value="@Model.Setting_PostCode" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtphone">شماره تماس:</label>
|
||||
<input class="form-control" id="txtphone" value="@Model.Setting_Phone" />
|
||||
</div>
|
||||
<div class="col-md-6 form-group"></div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label for="txtwebsite">وبسایت:</label>
|
||||
<input class="form-control" id="txtwebsite" value="@Model.Setting_Website" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="col-12 form-group d-none" id="ProgressSection">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-striped" id="Progress" role="progressbar" style="width: 0%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100">0%</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@section Script {
|
||||
<script>
|
||||
$("#SettingMenu").addClass("menu-item-active");
|
||||
|
||||
$(document).ready(function () {
|
||||
$("#ddlKeywords").select2({ placeholder: 'تایپ کنید و اینتر بزنید ...', tags: true });
|
||||
//KTLayoutAsideToggle.getToggle().toggleOn();
|
||||
});
|
||||
|
||||
$(window).bind('keydown', function (event) {
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
switch (String.fromCharCode(event.which).toLowerCase()) {
|
||||
case 's':
|
||||
event.preventDefault();
|
||||
$("#btnSave").click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function Save() {
|
||||
|
||||
// Proceed with the rest of the function if validation passes
|
||||
let SocialList = [];
|
||||
$(".Socials").each(function () {
|
||||
let item = JSON.parse($(this).val());
|
||||
item.Title = $(`#txtSocialTitle_${item.Key}`).val().trim();
|
||||
item.Link = $(`#txtSocialLink_${item.Key}`).val().trim();
|
||||
item.Checked = $(`#chkSocial_${item.Key}`).prop("checked");
|
||||
SocialList.push(item);
|
||||
});
|
||||
|
||||
let model = {
|
||||
Auth: { UserId: UserId, Token: Token },
|
||||
Id: @Model.Setting_Id,
|
||||
Name: $("#txtName").val().trim(),
|
||||
Title: $("#txtTitle").val().trim(),
|
||||
Description: $("#txtDescription").val().trim(),
|
||||
Keywords: $("#ddlKeywords").val().join(','),
|
||||
Header: escape($("#txtHeader").val().trim()),
|
||||
Footer: escape($("#txtFooter").val().trim()),
|
||||
Socials: SocialList,
|
||||
SmsUsername: $("#txtSmsUsername").val().trim(),
|
||||
SmsPassword: $("#txtSmsPassword").val().trim(),
|
||||
SmsFromNumber: $("#txtSmsFromNumber").val().trim(),
|
||||
SmsPaternLogin: $("#txtSmsPaternLogin").val().trim(),
|
||||
|
||||
address: $("#txtaddress").val().trim(),
|
||||
postcode: $("#txtpostcode").val().trim(),
|
||||
phone: $("#txtphone").val().trim(),
|
||||
website: $("#txtwebsite").val().trim(),
|
||||
};
|
||||
|
||||
$("#btnSave").css("opacity", 0.5);
|
||||
$("#btnSave").removeAttr("onclick");
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append("Model", JSON.stringify(model));
|
||||
formData.append("Logo", $("#fuImage")[0].files[0]);
|
||||
formData.append("Icon", $("#fuIcon")[0].files[0]);
|
||||
|
||||
let ajax = new XMLHttpRequest();
|
||||
ajax.upload.addEventListener("progress", function (event) {
|
||||
let percent = parseInt((event.loaded / event.total) * 100);
|
||||
$("#Progress").css("width", `${percent}%`);
|
||||
$("#Progress").text(`${percent.toFixed()}%`);
|
||||
}, false);
|
||||
|
||||
ajax.addEventListener("load", function (event) {
|
||||
$("#ProgressSection").addClass('d-none');
|
||||
$("#btnSave").css("opacity", 1);
|
||||
let data = JSON.parse(event.target.responseText);
|
||||
if (data.Status == "Success") {
|
||||
toastr.success("ذخیره سازی با موفقیت انجام شد");
|
||||
setTimeout(function () {
|
||||
location.reload();
|
||||
}, 1500);
|
||||
} else {
|
||||
$("#btnSave").attr("onclick", "Save()");
|
||||
toastr.warning("خطا هنگام ذخیره سازی اطلاعات");
|
||||
}
|
||||
}, false);
|
||||
|
||||
ajax.addEventListener("error", function () {
|
||||
$("#ProgressSection").addClass('d-none');
|
||||
$("#btnSave").css("opacity", 1);
|
||||
$("#btnSave").attr("onclick", "Save()");
|
||||
toastr.error("خطا هنگام برقراری ارتباط با سرور");
|
||||
}, false);
|
||||
|
||||
ajax.open("post", "@Url.Action("SaveSettings", "Panel")");
|
||||
ajax.send(formData);
|
||||
$("#ProgressSection").removeClass('d-none');
|
||||
}
|
||||
</script>
|
||||
}
|
||||
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>
|
||||
}
|
||||
136
Views/Panel/Users.cshtml
Normal file
136
Views/Panel/Users.cshtml
Normal file
@ -0,0 +1,136 @@
|
||||
@using boilerplate.Models
|
||||
@model List<UserModel>
|
||||
@{
|
||||
ViewBag.Title = "کاربران";
|
||||
Layout = "~/Views/_PanelSideBar.cshtml";
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card card-custom">
|
||||
<div class="card-header flex-wrap border-0 pt-6 pb-0">
|
||||
<div class="card-title">
|
||||
<h3 class="card-label">@ViewBag.Title</h3>
|
||||
</div>
|
||||
<div class="card-toolbar">
|
||||
<a class="btn btn-primary font-weight-bolder" href="Panel/User/0">
|
||||
<span class="svg-icon svg-icon-md m-0">
|
||||
جدید
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" viewBox="0 0 24 24" version="1.1">
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<rect x="0" y="0" width="24" height="24" />
|
||||
<circle fill="#000000" opacity="0.3" cx="12" cy="12" r="10" />
|
||||
<path d="M11,11 L11,7 C11,6.44771525 11.4477153,6 12,6 C12.5522847,6 13,6.44771525 13,7 L13,11 L17,11 C17.5522847,11 18,11.4477153 18,12 C18,12.5522847 17.5522847,13 17,13 L13,13 L13,17 C13,17.5522847 12.5522847,18 12,18 C11.4477153,18 11,17.5522847 11,17 L11,13 L7,13 C6.44771525,13 6,12.5522847 6,12 C6,11.4477153 6.44771525,11 7,11 L11,11 Z" fill="#000000" />
|
||||
</g>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-separate text-center table-vertical-center table-hover table-head-custom table-checkable" id="DatatableList">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ردیف</th>
|
||||
<th>نام و نام خانوادگی</th>
|
||||
<th>شماره موبایل</th>
|
||||
<th>کد</th>
|
||||
<th>وضعیت</th>
|
||||
<th>نقش</th>
|
||||
<th>تاریخ ایجاد</th>
|
||||
<th>مدیریت</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@try
|
||||
{
|
||||
int Counter = 0;
|
||||
foreach (var item in Model)
|
||||
{
|
||||
Counter++;
|
||||
<tr id="RowSection_@item.Id">
|
||||
<td>@Counter</td>
|
||||
<td>@item.Name @item.Family</td>
|
||||
<td>@item.Phone</td>
|
||||
<td>@item.Code</td>
|
||||
<td>
|
||||
@if (item.Status == 0)
|
||||
{
|
||||
<span class="label label-xl label-secondary label-pill label-inline">در انتظار احرازهویت</span>
|
||||
}
|
||||
else if (item.Status == 1)
|
||||
{
|
||||
<span class="label label-xl label-success label-pill label-inline">فعال</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="label label-xl label-warning label-pill label-inline">غیرفعال</span>
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
@if (item.Role == "User")
|
||||
{
|
||||
<span class="label label-xl label-info label-pill label-inline">کاربر</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="label label-xl label-success label-pill label-inline">مدیر</span>
|
||||
}
|
||||
</td>
|
||||
<td dir="ltr">@item.CreatedDate</td>
|
||||
<td>
|
||||
<a class="btn btn-success btn-sm mb-1" href="~/Panel/User/@item.Id">مدیریت</a>
|
||||
@if (item.Role == "User")
|
||||
{
|
||||
<a class="btn btn-info btn-sm mb-1" onclick="Login(@item.Id)">ورود به پنل</a>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@section Script {
|
||||
<script>
|
||||
$("#UserList").addClass("menu-item-open");
|
||||
$("#UsersMenu").addClass("menu-item-active");
|
||||
|
||||
$(document).ready(function () {
|
||||
$("#DatatableList").DataTable({
|
||||
order: [[0, 'asc']],
|
||||
scrollX: true,
|
||||
language: { url: 'Media/datatables.json' },
|
||||
columnDefs: [{ targets: [0, 3, 4], type: "num" }]
|
||||
});
|
||||
});
|
||||
|
||||
function Login(Id) {
|
||||
Swal.fire({
|
||||
title: "آیا مایل به ورود به پنل کاربر مورد نظر هستید ؟",
|
||||
text: "",
|
||||
icon: "info",
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
cancelButtonText: 'خیر',
|
||||
confirmButtonText: 'بله'
|
||||
}).then((result) => {
|
||||
if (result.value) {
|
||||
$.post(`../Admin/PanelLogin/User/${Id}`).done(function (data) {
|
||||
if (data.Status == "Success") {
|
||||
location.href = "../Panel/Index";
|
||||
} else {
|
||||
toastr.warning("خطا هنگام برقراری ارتباط با سرور");
|
||||
}
|
||||
}).fail(function () {
|
||||
toastr.error("خطا هنگام برقراری ارتباط با سرور");
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
}
|
||||
Reference in New Issue
Block a user