add changes for create employee bugs

This commit is contained in:
MahanCh
2025-03-17 18:46:43 +03:30
parent 44d5af811b
commit 79cfad0c13
11 changed files with 350 additions and 191 deletions

View File

@@ -216,7 +216,7 @@
<div class="stepBtnHolder2">
<div class="stepBtnFirst d-flex gap-2 justify-content-center">
<button type="button" class="stepBtn" id="prevStep6">مرحله قبل</button>
<button type="button" class="stepBtn disable" id="nextStep6">مرحله بعد</button>
<button type="button" class="stepBtn disable" id="nextStep6">پایان</button>
</div>
<div class="w-100 d-flex gap-2 mt-2 justify-content-center">
<button type="button" class="stepBtn cancelButton">انصراف</button>
@@ -276,12 +276,14 @@
<script>
var antiForgeryToken = $('@Html.AntiForgeryToken()').val();
var saveEmployeeURL = `@Url.Page("/Company/Employees/EmployeeList", "CreateEmployee")`;
var saveUrlRollCall = `@Url.Page("/Company/RollCall/EmployeeUploadPicture", "CreateEmployee")`;
var saveEmployeeURL = `@Url.Page("/Company/Employees/EmployeeList", "CreateEmployee")`; // EmployeeList Handler
var saveUrlRollCall = `@Url.Page("/Company/RollCall/EmployeeUploadPicture", "CreateEmployee")`; // RollCall Handler
var saveHomeUrl = `@Url.Page("/Index", "CreateEmployee")`; // Home Handler
// list of roll call group
var workshopSettingListAjax = `@Url.Page("/Company/Employees/EmployeeList", "WorkshopSettingList")`;
var workshopSettingListAjaxRollCall = `@Url.Page("/Company/RollCall/EmployeeUploadPicture", "WorkshopSettingList")`;
var workshopSettingListAjax = `@Url.Page("/Company/Employees/EmployeeList", "WorkshopSettingList")`; // EmployeeList Handler
var workshopSettingListAjaxRollCall = `@Url.Page("/Company/RollCall/EmployeeUploadPicture", "WorkshopSettingList")`; // RollCall Handler
var workshopSettingListAjaxHome = `@Url.Page("/Index", "WorkshopSettingList")`; // Home Handler
// @* var workshopSettingEmployeeSelecting = @Html.Raw(Json.Serialize(Model.EmployeeSettings)); *@
</script>

View File

@@ -202,7 +202,7 @@
<div class="col-6">
<button class="btn-create w-100" onclick="openCreateLeftWorkEmployeeModal()">
<span>افزودن ترک کار</span>
<span>اعلام ترک کار</span>
</button>
</div>
@@ -247,7 +247,7 @@
<path d="M11 13.75L11 8.25" stroke-width="1.5" stroke="white" stroke-linecap="round" />
<path d="M13.75 11L8.25 11" stroke-width="1.5" stroke="white" stroke-linecap="round" />
</svg>
<span>افزودن ترک کار</span>
<span>اعلام ترک کار</span>
</button>
</div>

View File

@@ -27,17 +27,17 @@
<div class="col-12 my-1">
<span class="spanTitleText">شماره کارت</span>
<input type="text" class="form-control" id="CardNumber" placeholder="شماره کارت را وارد نمائید" style="direction: ltr">
<input type="text" class="form-control" id="CardNumber" placeholder="شماره کارت را وارد نمائید" pattern="[0-9]*" inputmode="numeric" style="direction: ltr">
</div>
<div class="col-12 my-1 position-relative">
<span class="spanTitleText">شماره شبا</span>
<input class="form-control" id="ShebaNumber" placeholder="شماره شبا را وارد نمائید" style="direction: ltr"/>
<input class="form-control" id="ShebaNumber" placeholder="شماره شبا را وارد نمائید" pattern="[0-9]*" inputmode="numeric" style="direction: ltr" />
</div>
<div class="col-12 my-1">
<span class="spanTitleText">شماره حساب</span>
<input class="form-control" id="BankAccountNumber" placeholder="شماره حساب را وارد نمائید" style="direction: ltr"/>
<input class="form-control" id="BankAccountNumber" placeholder="شماره حساب را وارد نمائید" pattern="[0-9]*" inputmode="numeric" style="direction: ltr" />
</div>
@@ -84,7 +84,9 @@
</div>
<script>
var getDetailsAjaxUrl = `@Url.Page("/Company/Employees/EmployeeList", "DetailsAjax")`;
var bankListAjax = `@Url.Page("/Company/Employees/EmployeeList", "BankListAjax")`;
// var getDetailsAjaxUrl = `@Url.Page("/Company/Employees/EmployeeList", "DetailsAjax")`;
var bankListAjax = `@Url.Page("/Company/Employees/EmployeeList", "BankListAjax")`; // EmployeeList Handler
var bankListAjaxHome = `@Url.Page("/Index", "BankListAjax")`; // Home Handler
</script>
<script src="~/assetsclient/pages/employees/js/createbankinfomodal.js?ver=@clientVersion"></script>

View File

@@ -13,6 +13,16 @@
#select2-sematSelect-results {
height: 130px;
}
@@media (min-width: 768px) {
.custom-ps-md-3 {
padding-right: 0.80rem !important;
}
.custom-pe-md-3 {
padding-left: 0.80rem !important;
}
}
</style>
<div class="row p-0">
@@ -22,22 +32,22 @@
<div id="defaultPersonnelCode">@Model.PersonnelCode</div>
</div>
</div>
<div class="col-12 form-personal my-1">
<div class="col-6 col-md-12 pe-1 custom-pe-md-3 form-personal my-1">
<div class="input-group shadow-none disable">
<label class="input-group-text d-flex justify-content-center align-items-center" for="nationalCodeStep2">کد ملی</label>
<input class="form-control text-center" name="Command.NationalCode" id="nationalCodeStep2" style="direction: ltr">
<input class="form-control text-center" name="Command.NationalCode" pattern="[0-9]*" inputmode="numeric" id="nationalCodeStep2" style="direction: ltr">
</div>
<div class="valid-feedback">
کد ملی را وارد کنید
</div>
</div>
<div class="col-12 form-personal my-1">
<div class="col-6 col-md-12 ps-1 custom-ps-md-3 form-personal my-1">
<div class="input-group shadow-none disable">
<label class="input-group-text d-flex justify-content-center align-items-center" for="birthDateStep2">تاریخ تولد</label>
<input class="form-control text-center" name="Command.BirthDate" id="birthDateStep2" style="direction: ltr">
<input class="form-control text-center" name="Command.BirthDate" pattern="[0-9]*" inputmode="numeric" id="birthDateStep2" style="direction: ltr">
</div>
<div class="valid-feedback">
تاریخ تولد را وارد کنید
@@ -46,95 +56,97 @@
<div class="position-relative validateLoading">
<div class="col-12 ">
<div class="card border p-2">
<div class="row ">
<div class="col-12 my-1 checkByNationalCode disable disablemightBeNullDB1">
<span class="spanTitleText">ملیت</span>
<div class="select-alert select-alert-nationality">
<select class="form-select select2Option" aria-label="انتخاب ..." name="Command.Nationality" id="NationalitySelect">
<option value="ایرانی" selected="selected">ایرانی</option>
<option value="غیر ایرانی">غیر ایرانی</option>
</select>
</div>
</div>
<div class="row">
<div class="col-12 ">
<div class="card border p-2">
<div class="row ">
<div class="col-12 my-1 checkByNationalCode disable disablemightBeNullDB1">
<span class="spanTitleText">ملیت</span>
<div class="select-alert select-alert-nationality">
<select class="form-select select2Option" aria-label="انتخاب ..." name="Command.Nationality" id="NationalitySelect">
<option value="ایرانی" selected="selected">ایرانی</option>
<option value="غیر ایرانی">غیر ایرانی</option>
</select>
</div>
</div>
<div class="col-lg-6 col-6 form-personal checkByNationalCode disable mightBeNullDB2 my-1">
<div class="input-group">
<label class="input-group-text d-flex justify-content-center align-items-center">جنسیت</label>
<div class="inputGroup-sizing-marriage d-flex align-items-center justify-content-center">
<input class="form-check-input genderStatus" type="radio" id="gender1" name="Command.Gender" value="مرد" required>
<label class="form-check-label ms-1" for="gender1">
آقا
</label>
<input class="form-check-input genderStatus" type="radio" id="gender2" name="Command.Gender" value="زن" required>
<label class="form-check-label ms-1" for="gender2">
خانم
</label>
<div class="invalid-feedback">
وضیعت جنسیت را مشخص کنید
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-6 form-personal checkByNationalCode disable mightBeNullDB2 my-1">
<div class="input-group">
<label class="input-group-text d-flex justify-content-center align-items-center">جنسیت</label>
<div class="inputGroup-sizing-marriage d-flex align-items-center justify-content-center">
<input class="form-check-input genderStatus" type="radio" id="gender1" name="Command.Gender" value="مرد" required>
<label class="form-check-label ms-1" for="gender1">
آقا
</label>
<input class="form-check-input genderStatus" type="radio" id="gender2" name="Command.Gender" value="زن" required>
<label class="form-check-label ms-1" for="gender2">
خانم
</label>
<div class="invalid-feedback">
وضیعت جنسیت را مشخص کنید
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-6 checkByNationalCode disable mightBeNullDB3 form-personal my-1" style="padding-right: 0;">
<div class="input-group validMariage">
<label class="input-group-text d-flex justify-content-center align-items-center">وضیعت تاهل</label>
<div class="inputGroup-sizing-marriage d-flex align-items-center justify-content-center">
<input class="form-check-input maritalStatus" type="radio" id="marriage1" name="Command.MaritalStatus" value="متاهل" required>
<label class="form-check-label ms-1" for="marriage1">
متاهل
</label>
<input class="form-check-input maritalStatus" type="radio" id="marriage2" name="Command.MaritalStatus" value="مجرد" required>
<label class="form-check-label ms-1" for="marriage2">
مجرد
</label>
<div class="invalid-feedback">
وضیعت تاهل را مشخص کنید
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-12 checkByNationalCode mightBeNullDB4 disable">
<div class="col-12 my-1">
<span class="spanTitleText">نام پرسنل</span>
<input type="text" class="form-control" id="firstName" name="Command.FirstName" />
</div>
</div>
<div class="col-12 checkByNationalCode mightBeNullDB5 disable">
<div class="col-12 my-1">
<span class="spanTitleText">نام خانوادگی پرسنل</span>
<input type="text" id="lastName" class="form-control" name="Command.LastName" />
</div>
</div>
<div class="col-12 checkByNationalCode checkByHistoryCode2 mightBeNullDB6 disable">
<div class="col-12 my-1">
<span class="spanTitleText">تاریخ شروع بکار</span>
<input type="text" class="form-control startLeftWorkDate text-center" id="startWork" name="Command.StartLeftWork" style="direction: ltr" />
</div>
</div>
<div class="col-lg-6 col-6 checkByNationalCode disable mightBeNullDB3 form-personal my-1" style="padding-right: 0;">
<div class="input-group validMariage">
<label class="input-group-text d-flex justify-content-center align-items-center">وضیعت تاهل</label>
<div class="inputGroup-sizing-marriage d-flex align-items-center justify-content-center">
<input class="form-check-input maritalStatus" type="radio" id="marriage1" name="Command.MaritalStatus" value="متاهل" required>
<label class="form-check-label ms-1" for="marriage1">
متاهل
</label>
<input class="form-check-input maritalStatus" type="radio" id="marriage2" name="Command.MaritalStatus" value="مجرد" required>
<label class="form-check-label ms-1" for="marriage2">
مجرد
</label>
<div class="invalid-feedback">
وضیعت تاهل را مشخص کنید
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-12 checkByNationalCode checkByHistoryCode2 mightBeNullDB6 disable">
<div class="col-12 my-1">
<span class="spanTitleText">انتخاب سمت</span>
<div class="sematValid" style="border-radius: 7px;">
<select class="form-select JobSelect2Option" aria-label="انتخاب سمت ..." id="sematSelect" name="Command.JobId">
<option value="0">انتخاب سمت ...</option>
</select>
</div>
</div>
</div>
<div class="spinner-loading loading" style="display: none;">
<span class="spinner-border spinner-border-sm text-white" role="status" aria-hidden="true"></span>
<div class="col-6 col-md-12 pe-1 custom-pe-md-3 checkByNationalCode mightBeNullDB4 disable">
<div class="col-12 my-1">
<span class="spanTitleText">نام پرسنل</span>
<input type="text" class="form-control" id="firstName" name="Command.FirstName" />
</div>
</div>
<div class="col-6 col-md-12 ps-1 custom-ps-md-3 checkByNationalCode mightBeNullDB5 disable">
<div class="col-12 my-1">
<span class="spanTitleText">نام خانوادگی پرسنل</span>
<input type="text" id="lastName" class="form-control" name="Command.LastName" />
</div>
</div>
<div class="col-6 col-md-12 pe-1 custom-pe-md-3 checkByNationalCode checkByHistoryCode2 mightBeNullDB6 disable">
<div class="col-12 my-1">
<span class="spanTitleText">تاریخ شروع بکار</span>
<input type="text" class="form-control startLeftWorkDate text-center" pattern="[0-9]*" inputmode="numeric" id="startWork" name="Command.StartLeftWork" style="direction: ltr" />
</div>
</div>
<div class="col-6 col-md-12 ps-1 custom-ps-md-3 checkByNationalCode checkByHistoryCode2 mightBeNullDB6 disable">
<div class="col-12 my-1">
<span class="spanTitleText">انتخاب سمت</span>
<div class="sematValid" style="border-radius: 7px;">
<select class="form-select JobSelect2Option" aria-label="انتخاب سمت ..." id="sematSelect" name="Command.JobId">
<option value="0">انتخاب سمت ...</option>
</select>
</div>
</div>
</div>
<div class="spinner-loading loading" style="display: none;">
<span class="spinner-border spinner-border-sm text-white" role="status" aria-hidden="true"></span>
</div>
</div>
</div>

View File

@@ -30,18 +30,17 @@
<div class="col-12 form-personal my-1">
<div class="input-group shadow-none">
<label class="input-group-text d-flex justify-content-center align-items-center custom-size" for="nationalCode">کد ملی</label>
<input class="form-control text-center" id="nationalCode" style="direction: ltr">
<input class="form-control text-center" id="nationalCode" pattern="[0-9]*" inputmode="numeric" style="direction: ltr">
</div>
<div class="valid-feedback">
کد ملی را وارد کنید
</div>
</div>
<div class="col-12 form-personal my-1">
<div class="input-group shadow-none">
<label class="input-group-text d-flex justify-content-center align-items-center custom-size" for="birthDate">تاریخ تولد</label>
<input class="form-control text-center" id="birthDate" style="direction: ltr">
<input class="form-control text-center" id="birthDate" pattern="[0-9]*" inputmode="numeric" style="direction: ltr">
</div>
<div class="valid-feedback">
تاریخ تولد را وارد کنید

View File

@@ -17,7 +17,7 @@
</div>
<div class="text-start mx-1 pdTitle">
<div class="d-flex align-items-center justify-content-between">
<div>عکس پرسنل <span> *</span></div>
<div>عکس پرسنل @* <span> *</span> *@</div>
<div class="resultMessage">
</div>
@@ -48,7 +48,7 @@
</div>
<div class="text-start mx-1 pdTitle">
<div class="d-flex align-items-center justify-content-between">
<div>کارت ملی رو <span> *</span></div>
<div>کارت ملی رو @* <span> *</span> *@</div>
<div class="resultMessage">
<div></div>
</div>
@@ -80,7 +80,7 @@
</div>
<div class="text-start mx-1 pdTitle">
<div class="d-flex align-items-center justify-content-between">
<div>کارت ملی پشت <span> *</span></div>
<div>کارت ملی پشت @* <span> *</span> *@</div>
<div class="resultMessage">
<div></div>
</div>
@@ -108,7 +108,7 @@
</div>
<div class="text-start mx-1 pdTitle">
<div class="d-flex align-items-center justify-content-between">
<div>کارت پایان خدمت <span id="requiredStar"> *</span></div>
<div>کارت پایان خدمت @* <span id="requiredStar"> *</span> *@</div>
<div class="resultMessage">
<div></div>
</div>
@@ -137,7 +137,7 @@
<div class="text-start mx-1 pdTitle">
<div class="d-flex align-items-center justify-content-between">
<div>شناسنامه صفحه اول <span>*</span></div>
<div>شناسنامه صفحه اول@* <span>*</span> *@</div>
<div class="resultMessage">
<div></div>
</div>

View File

@@ -116,4 +116,4 @@
var hasErrorPic1 = false;
var hasErrorPic2 = false;
</script>
<script src="~/assetsclient/pages/employees/js/modaluploadimagepersonnel.js"></script>
<script src="~/assetsclient/pages/employees/js/modaluploadimagepersonnel.js?ver=@clientVersion"></script>

View File

@@ -2,11 +2,11 @@
@using _0_Framework.Application
@model ServiceHost.Areas.Client.Pages.IndexModel
@{
string clientVersion = _0_Framework.Application.Version.StyleVersion;
<link href="~/AssetsClient/css/table-style.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/table-responsive.css?ver=@clientVersion" rel="stylesheet" />
string clientVersion = _0_Framework.Application.Version.StyleVersion;
<link href="~/AssetsClient/css/table-style.css?ver=@clientVersion" rel="stylesheet" />
<link href="~/AssetsClient/css/table-responsive.css?ver=@clientVersion" rel="stylesheet" />
<style>
<style>
.btn-download-android {
width: 100%;
height: 76px;
@@ -115,57 +115,58 @@
</div>
}
<div class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
<button class="btn loadingButton" style="border-radius: 10px !important;" onclick="location.href='#showmodal=@Url.Page("./Company/Employees/EmployeeList", "CreateEmployee")';">
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin: 0 0 0 10px;">
<path d="M12 10C14.2091 10 16 8.20914 16 6C16 3.79086 14.2091 2 12 2C9.79086 2 8 3.79086 8 6C8 8.20914 9.79086 10 12 10Z" fill="#23A8A8" />
<path opacity="0.5" d="M18.0947 15.0312C17.6699 15 17.1487 15 16.5 15C14.8501 15 14.0251 15 13.5126 15.5126C13 16.0251 13 16.8501 13 18.5C13 19.6663 13 20.4204 13.1811 20.9433C12.7971 20.9806 12.4025 21 12 21C8.13401 21 5 19.2091 5 17C5 14.7909 8.13401 13 12 13C14.6134 13 16.8924 13.8184 18.0947 15.0312Z" fill="#C4E8E8" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.5 22C14.8501 22 14.0251 22 13.5126 21.4874C13 20.9749 13 20.1499 13 18.5C13 16.8501 13 16.0251 13.5126 15.5126C14.0251 15 14.8501 15 16.5 15C18.1499 15 18.9749 15 19.4874 15.5126C20 16.0251 20 16.8501 20 18.5C20 20.1499 20 20.9749 19.4874 21.4874C18.9749 22 18.1499 22 16.5 22ZM17.0833 16.9444C17.0833 16.6223 16.8222 16.3611 16.5 16.3611C16.1778 16.3611 15.9167 16.6223 15.9167 16.9444V17.9167H14.9444C14.6223 17.9167 14.3611 18.1778 14.3611 18.5C14.3611 18.8222 14.6223 19.0833 14.9444 19.0833H15.9167V20.0556C15.9167 20.3777 16.1778 20.6389 16.5 20.6389C16.8222 20.6389 17.0833 20.3777 17.0833 20.0556V19.0833H18.0556C18.3777 19.0833 18.6389 18.8222 18.6389 18.5C18.6389 18.1778 18.3777 17.9167 18.0556 17.9167H17.0833V16.9444Z" fill="#23A8A8" />
</svg>
<p class="btn-title text-nowrap m-0">ثبت پرسنل جدید</p>
<div class="spinner-loading loading rounded-0" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
</div>
</button>
</div>
</div>
</div>
</div>
<div Permission="@SubAccountPermissionHelper.AddEmployeePermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
<button class="btn loadingButton" style="border-radius: 10px !important;" onclick="location.href='#showmodal=@Url.Page("./Index", "CreateEmployee")';">
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin: 0 0 0 10px;">
<path d="M12 10C14.2091 10 16 8.20914 16 6C16 3.79086 14.2091 2 12 2C9.79086 2 8 3.79086 8 6C8 8.20914 9.79086 10 12 10Z" fill="#23A8A8" />
<path opacity="0.5" d="M18.0947 15.0312C17.6699 15 17.1487 15 16.5 15C14.8501 15 14.0251 15 13.5126 15.5126C13 16.0251 13 16.8501 13 18.5C13 19.6663 13 20.4204 13.1811 20.9433C12.7971 20.9806 12.4025 21 12 21C8.13401 21 5 19.2091 5 17C5 14.7909 8.13401 13 12 13C14.6134 13 16.8924 13.8184 18.0947 15.0312Z" fill="#C4E8E8" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.5 22C14.8501 22 14.0251 22 13.5126 21.4874C13 20.9749 13 20.1499 13 18.5C13 16.8501 13 16.0251 13.5126 15.5126C14.0251 15 14.8501 15 16.5 15C18.1499 15 18.9749 15 19.4874 15.5126C20 16.0251 20 16.8501 20 18.5C20 20.1499 20 20.9749 19.4874 21.4874C18.9749 22 18.1499 22 16.5 22ZM17.0833 16.9444C17.0833 16.6223 16.8222 16.3611 16.5 16.3611C16.1778 16.3611 15.9167 16.6223 15.9167 16.9444V17.9167H14.9444C14.6223 17.9167 14.3611 18.1778 14.3611 18.5C14.3611 18.8222 14.6223 19.0833 14.9444 19.0833H15.9167V20.0556C15.9167 20.3777 16.1778 20.6389 16.5 20.6389C16.8222 20.6389 17.0833 20.3777 17.0833 20.0556V19.0833H18.0556C18.3777 19.0833 18.6389 18.8222 18.6389 18.5C18.6389 18.1778 18.3777 17.9167 18.0556 17.9167H17.0833V16.9444Z" fill="#23A8A8" />
</svg>
<p class="btn-title text-nowrap m-0">ثبت پرسنل جدید</p>
<div class="spinner-loading loading rounded-0" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
</div>
</button>
</div>
</div>
</div>
</div>
<div class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
<button class="btn loadingButton" style="border-radius: 10px !important;" onclick="AjaxUrlContentModal('/Client/Company/Employees/EmployeeList?handler=CreateLeftWorkEmployee')">
<div Permission="@SubAccountPermissionHelper.LeftWorkEmployeePermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
<button class="btn loadingButton" style="border-radius: 10px !important;" onclick="AjaxUrlContentModal('/Client/Index?handler=CreateLeftWorkEmployee')">
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin: 0 0 0 10px;">
<path d="M12 10C14.2091 10 16 8.20914 16 6C16 3.79086 14.2091 2 12 2C9.79086 2 8 3.79086 8 6C8 8.20914 9.79086 10 12 10Z" fill="#23A8A8" />
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.5 22C14.8501 22 14.0251 22 13.5126 21.4874C13 20.9749 13 20.1499 13 18.5C13 16.8501 13 16.0251 13.5126 15.5126C14.0251 15 14.8501 15 16.5 15C18.1499 15 18.9749 15 19.4874 15.5126C20 16.0251 20 16.8501 20 18.5C20 20.1499 20 20.9749 19.4874 21.4874C18.9749 22 18.1499 22 16.5 22ZM15.3569 16.532C15.1291 16.3042 14.7598 16.3042 14.532 16.532C14.3042 16.7598 14.3042 17.1291 14.532 17.3569L15.675 18.5L14.532 19.6431C14.3042 19.8709 14.3042 20.2402 14.532 20.468C14.7598 20.6958 15.1291 20.6958 15.3569 20.468L16.5 19.325L17.6431 20.468C17.8709 20.6958 18.2402 20.6958 18.468 20.468C18.6958 20.2402 18.6958 19.8709 18.468 19.6431L17.325 18.5L18.468 17.3569C18.6958 17.1291 18.6958 16.7598 18.468 16.532C18.2402 16.3042 17.8709 16.3042 17.6431 16.532L16.5 17.675L15.3569 16.532Z" fill="#23A8A8" />
<path d="M18.0947 15.0312C17.6699 15 17.1487 15 16.5 15C14.8501 15 14.0251 15 13.5126 15.5126C13 16.0251 13 16.8501 13 18.5C13 19.6663 13 20.4204 13.1811 20.9433C12.7971 20.9806 12.4025 21 12 21C8.13401 21 5 19.2091 5 17C5 14.7909 8.13401 13 12 13C14.6134 13 16.8924 13.8184 18.0947 15.0312Z" fill="#C4E8E8" />
<path d="M12 10C14.2091 10 16 8.20914 16 6C16 3.79086 14.2091 2 12 2C9.79086 2 8 3.79086 8 6C8 8.20914 9.79086 10 12 10Z" fill="#23A8A8"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.5 22C14.8501 22 14.0251 22 13.5126 21.4874C13 20.9749 13 20.1499 13 18.5C13 16.8501 13 16.0251 13.5126 15.5126C14.0251 15 14.8501 15 16.5 15C18.1499 15 18.9749 15 19.4874 15.5126C20 16.0251 20 16.8501 20 18.5C20 20.1499 20 20.9749 19.4874 21.4874C18.9749 22 18.1499 22 16.5 22ZM15.3569 16.532C15.1291 16.3042 14.7598 16.3042 14.532 16.532C14.3042 16.7598 14.3042 17.1291 14.532 17.3569L15.675 18.5L14.532 19.6431C14.3042 19.8709 14.3042 20.2402 14.532 20.468C14.7598 20.6958 15.1291 20.6958 15.3569 20.468L16.5 19.325L17.6431 20.468C17.8709 20.6958 18.2402 20.6958 18.468 20.468C18.6958 20.2402 18.6958 19.8709 18.468 19.6431L17.325 18.5L18.468 17.3569C18.6958 17.1291 18.6958 16.7598 18.468 16.532C18.2402 16.3042 17.8709 16.3042 17.6431 16.532L16.5 17.675L15.3569 16.532Z" fill="#23A8A8"/>
<path d="M18.0947 15.0312C17.6699 15 17.1487 15 16.5 15C14.8501 15 14.0251 15 13.5126 15.5126C13 16.0251 13 16.8501 13 18.5C13 19.6663 13 20.4204 13.1811 20.9433C12.7971 20.9806 12.4025 21 12 21C8.13401 21 5 19.2091 5 17C5 14.7909 8.13401 13 12 13C14.6134 13 16.8924 13.8184 18.0947 15.0312Z" fill="#C4E8E8"/>
</svg>
<p class="btn-title text-nowrap m-0">افزودن ترک کار</p>
<div class="spinner-loading loading rounded-0" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
</div>
</button>
</div>
</div>
</div>
</div>
<p class="btn-title text-nowrap m-0">اعلام ترک کار</p>
<div class="spinner-loading loading rounded-0" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
</div>
</button>
</div>
</div>
</div>
</div>
<div Permission="@SubAccountPermissionHelper.LeaveCreatePermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div Permission="@SubAccountPermissionHelper.LeaveCreatePermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3">
<div class="card p-0">
<div class="card-section-btn" id="btnCardLeaveIntro">
<div class="content btn-group">
<button class="btn loadingButton" onclick="location.href='#showmodal=@Url.Page("./Index", "LeaveCreate")';">
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin: 0 0 0 10px;">
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin: 0 0 0 10px;">
<path d="M15.0136 3.16469L16.9379 2.84397C18.3733 2.60474 19.091 2.48512 19.6684 2.61708C20.6188 2.83429 21.4044 3.49979 21.7749 4.40156C22 4.9494 22 5.67701 22 7.13222V17.0663C22 18.3394 22 18.9759 21.8269 19.4631C21.466 20.4793 20.5874 21.2235 19.5258 21.4125C19.0168 21.5031 18.3889 21.3984 17.1331 21.1892L15.0136 20.8359C12.6191 20.4368 11.4219 20.2373 10.7109 19.398C10 18.5588 10 17.3451 10 14.9175V9.08305C10 6.65554 10 5.44178 10.7109 4.60255C11.4219 3.76331 12.6191 3.56377 15.0136 3.16469Z" fill="#C4E8E8"/>
<path d="M11.5 8L8 11.5M8 11.5L11.5 15M8 11.5H18" stroke="#23A8A8" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 22L5 16M2 19H8" stroke="#23A8A8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<p class="btn-title text-nowrap m-0">ثبت مرخصی</p>
<div class="spinner-loading loading rounded-0" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
@@ -177,27 +178,27 @@
</div>
<div Permission="@SubAccountPermissionHelper.CreateLoanPermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3 @(Model.HasCustomizeCheckoutService != "true" ? "d-none" : "")">
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
<button class="btn loadingButton" style="border-radius: 10px !important;" onclick="location.href='#showmodal=@Url.Page("./Company/Loan/Index", "Create")';">
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin: 0 0 0 10px;">
<path d="M5 14C2.79 14 1 15.79 1 18C1 20.21 2.79 22 5 22C7.21 22 9 20.21 9 18C9 15.79 7.21 14 5 14ZM6 17.68C6 18.29 5.67002 18.87 5.15002 19.18L4.39001 19.64C4.27001 19.71 4.14001 19.75 4.01001 19.75C3.76001 19.75 3.51 19.62 3.37 19.39C3.16 19.04 3.27 18.57 3.63 18.36L4.39001 17.9C4.46001 17.86 4.51001 17.77 4.51001 17.69V16.76C4.51001 16.35 4.85001 16.01 5.26001 16.01C5.67001 16.01 6.01001 16.35 6.01001 16.76V17.68H6Z" fill="#23A8A8"/>
<path d="M22 9V15C22 18.5 20 20 17 20H8.45001C8.80001 19.41 9 18.73 9 18C9 15.79 7.21 14 5 14C3.8 14 2.73 14.53 2 15.36V9C2 5.5 4 4 7 4H17C20 4 22 5.5 22 9Z" fill="#C4E8E8"/>
<path d="M12 14.5C13.3807 14.5 14.5 13.3807 14.5 12C14.5 10.6193 13.3807 9.5 12 9.5C10.6193 9.5 9.5 10.6193 9.5 12C9.5 13.3807 10.6193 14.5 12 14.5Z" fill="#23A8A8"/>
<path d="M18.5 14.75C18.09 14.75 17.75 14.41 17.75 14V10C17.75 9.59 18.09 9.25 18.5 9.25C18.91 9.25 19.25 9.59 19.25 10V14C19.25 14.41 18.91 14.75 18.5 14.75Z" fill="#23A8A8"/>
</svg>
<p class="btn-title text-nowrap m-0">ثبت وام</p>
<div class="spinner-loading loading rounded-0" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
</div>
</button>
</div>
</div>
</div>
</div>
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
<button class="btn loadingButton" style="border-radius: 10px !important;" onclick="location.href='#showmodal=@Url.Page("./Company/Loan/Index", "Create")';">
<svg width="50" height="50" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin: 0 0 0 10px;">
<path d="M5 14C2.79 14 1 15.79 1 18C1 20.21 2.79 22 5 22C7.21 22 9 20.21 9 18C9 15.79 7.21 14 5 14ZM6 17.68C6 18.29 5.67002 18.87 5.15002 19.18L4.39001 19.64C4.27001 19.71 4.14001 19.75 4.01001 19.75C3.76001 19.75 3.51 19.62 3.37 19.39C3.16 19.04 3.27 18.57 3.63 18.36L4.39001 17.9C4.46001 17.86 4.51001 17.77 4.51001 17.69V16.76C4.51001 16.35 4.85001 16.01 5.26001 16.01C5.67001 16.01 6.01001 16.35 6.01001 16.76V17.68H6Z" fill="#23A8A8"/>
<path d="M22 9V15C22 18.5 20 20 17 20H8.45001C8.80001 19.41 9 18.73 9 18C9 15.79 7.21 14 5 14C3.8 14 2.73 14.53 2 15.36V9C2 5.5 4 4 7 4H17C20 4 22 5.5 22 9Z" fill="#C4E8E8"/>
<path d="M12 14.5C13.3807 14.5 14.5 13.3807 14.5 12C14.5 10.6193 13.3807 9.5 12 9.5C10.6193 9.5 9.5 10.6193 9.5 12C9.5 13.3807 10.6193 14.5 12 14.5Z" fill="#23A8A8"/>
<path d="M18.5 14.75C18.09 14.75 17.75 14.41 17.75 14V10C17.75 9.59 18.09 9.25 18.5 9.25C18.91 9.25 19.25 9.59 19.25 10V14C19.25 14.41 18.91 14.75 18.5 14.75Z" fill="#23A8A8"/>
</svg>
<p class="btn-title text-nowrap m-0">ثبت وام</p>
<div class="spinner-loading loading rounded-0" style="display: none;">
<span class="spinner-border spinner-border-sm loading text-white" role="status" aria-hidden="true"></span>
</div>
</button>
</div>
</div>
</div>
</div>
<div Permission="@SubAccountPermissionHelper.CreateRewardPermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3 @(Model.HasCustomizeCheckoutService != "true" ? "d-none" : "")">
<div Permission="@SubAccountPermissionHelper.CreateRewardPermissionCode" class="col-12 col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2 mt-3 @(Model.HasCustomizeCheckoutService != "true" ? "d-none" : "")">
<div class="card p-0">
<div class="card-section-btn">
<div class="content btn-group">
@@ -289,7 +290,7 @@
@section Script {
<script src="~/assetsclient/js/site.js?ver=@clientVersion"></script>
<script src="~/assetsclient/js/site.js?ver=@clientVersion"></script>
<script>

View File

@@ -14,6 +14,10 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
using PersianTools.Core;
using System.Security.Claims;
using _0_Framework.Infrastructure;
using CompanyManagment.App.Contracts.Bank;
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
using CompanyManagment.App.Contracts.PersonnleCode;
using CompanyManagment.App.Contracts.LeftWorkTemp;
namespace ServiceHost.Areas.Client.Pages
{
@@ -31,6 +35,10 @@ namespace ServiceHost.Areas.Client.Pages
private readonly IInsuranceListApplication _insuranceListApplication;
private readonly IAndroidApkVersionApplication _androidApkVersionApplication;
private readonly IRollCallServiceApplication _rollCallServiceApplication;
private readonly IPersonnelCodeApplication _personnelCodeApplication;
private readonly ICustomizeWorkshopSettingsApplication _customizeWorkshopSettingsApplication;
private readonly IBankApplication _bankApplication;
private readonly ILeftWorkTempApplication _leftWorkTempApplication;
public string profilePicture { get; set; }
public string AccountFullName { get; set; }
@@ -51,7 +59,7 @@ namespace ServiceHost.Areas.Client.Pages
public bool HasApkToDownload { get; set; }
#endregion
public IndexModel(IAuthHelper authHelper, IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ILeaveApplication leaveApplication, IEmployeeApplication employeeApplication, IPaymentToEmployeeItemApplication paymentToEmployeeItemApplication, IPaymentToEmployeeApplication paymentToEmployeeApplication, IHolidayItemApplication holidayItemApplication, IInsuranceListApplication insuranceListApplication, IAndroidApkVersionApplication androidApkVersionApplication, IRollCallServiceApplication rollCallServiceApplication)
public IndexModel(IAuthHelper authHelper, IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ILeaveApplication leaveApplication, IEmployeeApplication employeeApplication, IPaymentToEmployeeItemApplication paymentToEmployeeItemApplication, IPaymentToEmployeeApplication paymentToEmployeeApplication, IHolidayItemApplication holidayItemApplication, IInsuranceListApplication insuranceListApplication, IAndroidApkVersionApplication androidApkVersionApplication, IRollCallServiceApplication rollCallServiceApplication, IPersonnelCodeApplication personnelCodeApplication, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication, IBankApplication bankApplication, ILeftWorkTempApplication leftWorkTempApplication)
{
_workshopApplication = workshopApplication;
_employeeApplication = employeeApplication;
@@ -61,6 +69,10 @@ namespace ServiceHost.Areas.Client.Pages
_insuranceListApplication = insuranceListApplication;
_androidApkVersionApplication = androidApkVersionApplication;
_rollCallServiceApplication = rollCallServiceApplication;
_personnelCodeApplication = personnelCodeApplication;
_customizeWorkshopSettingsApplication = customizeWorkshopSettingsApplication;
_bankApplication = bankApplication;
_leftWorkTempApplication = leftWorkTempApplication;
_leaveApplication = leaveApplication;
_authHelper = authHelper;
_passwordHasher = passwordHasher;
@@ -78,7 +90,10 @@ namespace ServiceHost.Areas.Client.Pages
#region Mahan
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
//if (workshopIDecrypt > 0)
//{
// HasInsuranceToConfirm = _insuranceListApplication.HasInsuranceToConfirm(account.Id, workshopIDecrypt);
//}
#endregion
HasCustomizeCheckoutService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopIDecrypt)?.HasCustomizeCheckoutService;
@@ -183,8 +198,8 @@ namespace ServiceHost.Areas.Client.Pages
if (selectedWorkshop != null)
{
_authHelper.UpdateWorkshopSlugClaim(selectedWorkshop.Slug, selectedWorkshop.WorkshopFullName);
}
_authHelper.UpdateWorkshopSlugClaim(selectedWorkshop.Slug,selectedWorkshop.WorkshopFullName);
}
return new JsonResult(new
{
@@ -201,8 +216,8 @@ namespace ServiceHost.Areas.Client.Pages
var workshop = _workshopApplication.SearchForClient(searchModel).FirstOrDefault(x => x.Id == workshopId);
if (workshop != null)
{
_authHelper.UpdateWorkshopSlugClaim(workshop.Slug, workshop.WorkshopFullName);
}
_authHelper.UpdateWorkshopSlugClaim(workshop.Slug,workshop.WorkshopFullName);
}
return new JsonResult(new
{
@@ -452,6 +467,109 @@ namespace ServiceHost.Areas.Client.Pages
}
}
#region Add new employee modal
}
public IActionResult OnGetWorkshopSettingList()
{
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
var resultData = _customizeWorkshopSettingsApplication.GetWorkshopIncludeGroupsByWorkshopId(workshopIDecrypt);
if (resultData != null)
{
resultData.GroupSettings = resultData?.GroupSettings.Where(x => !x.MainGroup).ToList();
}
return new JsonResult(new
{
success = true,
data = resultData,
});
}
public IActionResult OnGetBankListAjax()
{
var resultData = _bankApplication.Search("");
return new JsonResult(new
{
success = true,
data = resultData,
});
}
public IActionResult OnGetCreateEmployee()
{
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
var command = new CreateEmployeeByClient();
command.PersonnelCode = (_personnelCodeApplication.GetLastPersonnelCodeByWorkshop(workshopIDecrypt) + 1).ToString();
command.HasRollCallService = _rollCallServiceApplication.IsExistActiveServiceByWorkshopId(workshopIDecrypt);
return Partial("./Company/Employees/CreateEmployeeModal", command);
}
public IActionResult OnPostCreateEmployee(CreateEmployeeByClient command)
{
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
command.WorkshopId = workshopIDecrypt;
var result = _employeeApplication.CreateEmployeeByClient(command);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message,
});
}
#endregion
#region Add Left Work
public IActionResult OnGetLeftWorkEmployeeList()
{
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
var employees = _employeeApplication.GetWorkingEmployeesByWorkshopId(workshopIDecrypt);
return new JsonResult(new
{
success = true,
data = employees
});
}
public IActionResult OnGetDayOfWeek(string dateFa)
{
if (dateFa.TryToGeorgianDateTime(out DateTime date) == false)
return new JsonResult(new
{
success = true,
message = "",
});
return new JsonResult(new
{
success = true,
message = date.DayOfWeek.DayOfWeeKToPersian(),
});
}
public IActionResult OnGetCreateLeftWorkEmployee()
{
var command = new CreateLeftWorkTemp();
return Partial("./Company/Employees/ModalCreateLeftWorkEmployee", command);
}
public async Task<IActionResult> OnPostCreateEmployeeLeftWork(CreateLeftWorkTemp command)
{
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
command.WorkshopId = workshopIDecrypt;
var result = await _leftWorkTempApplication.Create(command);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
#endregion
}
}

View File

@@ -19,17 +19,26 @@ $(document).ready(function () {
});
$("#CardNumber").each(function () {
$("#CardNumber").mask("0000-0000-0000-0000");
$("#CardNumber").on('input', function () {
var value = $(this).val();
$(this).val(convertPersianNumbersToEnglish(value));
}).mask("0000-0000-0000-0000");
$("#CardNumber").attr("placeholder", "XXXX-XXXX-XXXX-XXXX");
});
$("#ShebaNumber").each(function () {
$("#ShebaNumber").mask("IR-00-0000-0000-0000-0000-0000-00");
$("#ShebaNumber").on('input', function () {
var value = $(this).val();
$(this).val(convertPersianNumbersToEnglish(value));
}).mask("IR-00-0000-0000-0000-0000-0000-00");
$("#ShebaNumber").attr("placeholder", "IR-XX-XXXX-XXXX-XXXX-XXXX-XXXX-XX");
});
$("#BankAccountNumber").each(function () {
$("#BankAccountNumber").unmask();
$("#BankAccountNumber").on('input', function () {
var value = $(this).val();
$(this).val(convertPersianNumbersToEnglish(value));
}).unmask();
$("#BankAccountNumber").attr("placeholder", "");
});
@@ -45,8 +54,17 @@ $(document).ready(function () {
});
function ajaxCreateBanks() {
let currentUrlBank = window.location.href;
var bankListUrlAjax = '';
if (currentUrlBank.includes("/Client#showmodal=/Client?handler=CreateEmployee")) {
bankListUrlAjax = bankListAjaxHome;
} else {
bankListUrlAjax = bankListAjax;
}
$.ajax({
url: bankListAjax,
url: bankListUrlAjax,
type: 'GET',
success: function (response) {

View File

@@ -441,7 +441,14 @@ function saveFullData() {
});
}
let saveURL = currentUrl.includes("/Client/Company/Employees/EmployeeList") ? saveEmployeeURL : saveUrlRollCall;
let saveURL = '';
if (currentUrl.includes("/Client#showmodal=/Client?handler=CreateEmployee")) {
saveURL = saveHomeUrl;
} else if (currentUrl.includes("/Client/Company/Employees/EmployeeList")) {
saveURL = saveEmployeeURL;
} else {
saveURL = saveUrlRollCall;
}
$.ajax({
url: saveURL,
@@ -453,7 +460,7 @@ function saveFullData() {
success: (response) => {
if (response.success) {
if (currentUrl.includes("/Client#showmodal=/Client/Company/Employees/EmployeeList?handler=CreateEmployee")) {
if (currentUrl.includes("/Client#showmodal=/Client?handler=CreateEmployee")) {
// do it something
// it's for dashboard home