Claient Leave bug Fixed

This commit is contained in:
SamSys
2024-10-09 20:09:53 +03:30
parent 0dcdbc4f34
commit 7551dbd0f5
228 changed files with 526 additions and 289 deletions

View File

@@ -21,7 +21,7 @@ public interface ILeaveRepository : IRepository<long, Leave>
#region Vafa
List<LeaveViewModel> LastLeaveMain(long workshopId, int pageIndex);
List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel);
#endregion
bool CheckIfValidToEdit(long id);

View File

@@ -22,7 +22,7 @@ public interface ILeaveApplication
#region Vafa
List<LeaveViewModel> LastLeaveMain(long workshopId, int pageIndex);
List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel);
#endregion
bool CheckIfValidToEdit(long id);

View File

@@ -19,4 +19,5 @@ public class LeaveSearchModel
public string Decription { get; set; }
public int Year { get; set; }
public int Month { get; set; }
public int PageIndex { get; set; }
}

View File

@@ -348,8 +348,8 @@ public class LeaveApplication : ILeaveApplication
return _leaveRepository.PrintAll(id);
}
public List<LeaveViewModel> LastLeaveMain(long workshopId, int pageIndex)
public List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel)
{
return _leaveRepository.LastLeaveMain(workshopId, pageIndex);
return _leaveRepository.LastLeaveMain(searchModel);
}
}

View File

@@ -265,9 +265,36 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
#region Vafa
public List<LeaveViewModel> LastLeaveMain(long workshopId, int pageIndex)
public List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel)
{
return _context.LeaveList.Where(x => x.WorkshopId == workshopId).Select(item => new LeaveViewModel()
var leaveMainList = _context.LeaveList.Where(x => x.WorkshopId == searchModel.WorkshopId);
if (searchModel.EmployeeId != 0)
leaveMainList = leaveMainList.Where(x => x.EmployeeId == searchModel.EmployeeId);
if (searchModel.LeaveType == "paidLeave")
leaveMainList = leaveMainList.Where(x => x.LeaveType == "استحقاقی");
if (searchModel.LeaveType == "sickLeave")
leaveMainList = leaveMainList.Where(x => x.LeaveType == "استعلاجی");
if (!string.IsNullOrWhiteSpace(searchModel.StartLeave) && !string.IsNullOrWhiteSpace(searchModel.EndLeave))
{
var start = searchModel.StartLeave.ToGeorgianDateTime();
var end = searchModel.EndLeave.ToGeorgianDateTime();
leaveMainList = leaveMainList.Where(x => x.StartLeave >= start && x.EndLeave <= end);
}
else if (searchModel.Year != 0 || searchModel.Month != 0)
{
if (searchModel.Year != 0)
leaveMainList = leaveMainList.Where(x => x.Year == searchModel.Year);
if (searchModel.Month != 0)
leaveMainList = leaveMainList.Where(x => x.Month == searchModel.Month);
}
var leaveList = leaveMainList.Where(x => x.WorkshopId == searchModel.WorkshopId).Select(item => new LeaveViewModel()
{
Id = item.id,
StartLeave = item.StartLeave.ToFarsi(),
@@ -286,7 +313,9 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
Month = item.Month,
MonthStr = item.Month.ToFarsiMonthByIntNumber(),
CreationDate = item.CreationDate,
}).OrderByDescending(x => x.CreationDate).Skip(pageIndex).Take(30).ToList();
}).OrderByDescending(x => x.CreationDate).Skip(searchModel.PageIndex).Take(30).ToList();
return leaveList;
}
#endregion

View File

@@ -862,7 +862,7 @@
<div class="row">
<div class="col-12 text-start mb-4">
<div class="mb-2">
<select class="form-select select2Option" aria-label="انتخاب پرسنل ..." asp-for="SearchModel.EmployeeId" id="employeeSelectMobile">
<select class="form-select select2OptionMobile" aria-label="انتخاب پرسنل ..." asp-for="SearchModel.EmployeeId" id="employeeSelectMobile">
<option value="">ابتدا کارگاه را انتخاب کنید ...</option>
</select>
</div>
@@ -997,6 +997,7 @@
</div>
</div>
<!-- End Modal From Bottom For Advance Search -->
<!-- مودال مربوط به مرخصی -->
<!-- Modal Moraghasi Estehghaghi -->
@* <div class="modal fade" id="morakhasiEstehghaghiModal" tabindex="-1" data-bs-backdrop="static" aria-labelledby="morakhasiEstehghaghiModalLabel" aria-hidden="true">
@@ -1029,7 +1030,7 @@
$(document).ready(function () {
var IsEmployeeActive = $('#IsEmployeeActive').val();
if (IsEmployeeActive == "False") {
if (IsEmployeeActive === "False") {
// لود شدن ajax در صورتی که کاربر انتخاب نشده باشد
ajaxDataWithoutEmployee();
}
@@ -1072,7 +1073,7 @@
$(document).on('click', ".openAction", function () {
$(this).next().find(".operations-btns").slideToggle(500);
$(".operations-btns").not($(this).next().find(".operations-btns")).slideUp(500);
})
});
//******************** انتخاب همه ی چک باکس ها ********************
$(".checkAll").change(function () {
@@ -2462,6 +2463,18 @@
}
});
$(".select2OptionMobile").select2({
language: "fa",
dir: "rtl",
dropdownParent: $('#searchModal'),
templateResult: function (data, container) {
if (data.element) {
$(container).addClass($(data.element).attr("class"));
}
return data.text;
}
});
function formatSelection(val) {
return val.id;
}
@@ -2483,7 +2496,7 @@
});
var workshopId = $('#WorkshopId').val();
var employeeIdSelected = $('#EmployeeId').val();
var employeeIdSelected = $('#EmployeeIdSearch').val();
if (workshopId) {
$.ajax({
url: '@Url.Page("/Company/Employees/Leave", "EmployeeList")',
@@ -2533,26 +2546,35 @@
//************************************ برای مشاهده کل مرخصی از طریق کارگاه **********************************/
function ajaxDataWithoutEmployee()
{
function ajaxDataWithoutEmployee() {
let pageIndex = Number($('#pageIndex').val());
var b = pageIndex % 30;
var workshopId = $('#WorkshopId').val();
$('#AllLastList').hide();
$('#AllLastListEmpty').show();
var data = {
'searchModel.WorkshopId': $('#WorkshopId').val(),
'searchModel.EmployeeId': $('#EmployeeIdSearch').val(),
'searchModel.Year': $('#year').val(),
'searchModel.Month': $('#month').val(),
'searchModel.LeaveType': $('#leaveType').val(),
'searchModel.StartLeave': $('#start').val(),
'searchModel.EndLeave': $('#end').val(),
'searchModel.PageIndex': $('#pageIndex').val()
};
if (b === 0) {
$.ajax({
if (b === 0) {
$('#AllLastList').hide();
$('#AllLastListEmpty').show();
$.ajax({
async: false,
contentType: 'charset=utf-8',
dataType: 'json',
type: 'GET',
url: '@Url.Page("/Company/Employees/Leave", "LastLeave")',
data: {
pageIndex: pageIndex,
workshopId: Number(workshopId),
},
data: data,
headers: { "RequestVerificationToken": $('@Html.AntiForgeryToken()').val() },
success: function (response) {
if (response.pageIndex > 0) {

View File

@@ -122,9 +122,9 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
public IActionResult OnGetLastLeave(long workshopId, int pageIndex)
public IActionResult OnGetLastLeave(LeaveSearchModel searchModel)
{
var result = _leaveApplication.LastLeaveMain(workshopId, pageIndex);
var result = _leaveApplication.LastLeaveMain(searchModel);
int pageIndexCount = result.Count();
return new JsonResult(new
{

View File

@@ -1,6 +1,5 @@
@model CompanyManagment.App.Contracts.Leave.LeavePrintViewModel
<style>
.modal .modal-dialog .modal-content {
background-color: white !important;
@@ -31,6 +30,7 @@
body * {
visibility: hidden;
page-break-after: auto;
background-color: #fff;
}
html, body {
@@ -122,90 +122,112 @@
height: 100%;
width: 100%;
border: 1px solid #c6c6c6;
padding: 13px;
border-radius: 10px;
}
.section-leave .title {
margin: 4px 0 0 0;
font-size: 15px;
font-weight: bold;
text-align: center;
.title {
margin: 4px 0 0 0;
font-size: 15px;
font-weight: bold;
text-align: center;
}
.paragraph {
margin: 8px 0 0 0;
font-size: 14px;
text-align: justify;
line-height: 22px;
}
.active-paragraph {
font-weight: bold;
background-color: #ebe6e6 !important;
padding: 0px 6px;
border-radius: 5px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.signature-section {
width: 100%;
position: absolute;
right: 0;
bottom: 10px;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 14px;
}
.signature-card {
position: relative;
width: 180px;
height: 95px;
margin: auto;
}
.signature-card .signature-title {
position: absolute;
top: -7px;
right: 10px;
margin: 0;
font-size: 10px;
background-color: #fff;
z-index: 2;
}
.signature-card .signature-border {
width: 100%;
border: 2px dashed #cacaca;
height: 100%;
border-radius: 15px;
}
.status {
display: flex;
align-items: center;
font-size: 14px;
}
.section-leave .status svg {
margin: 0 0 0 4px;
}
.leave-hour {
border: 1px solid #1e293b;
padding: 4px 7px;
border-radius: 4px;
}
.leave-day {
background-color: #d3d3d3 !important;
padding: 4px 7px;
border-radius: 4px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}tus {
display: flex;
align-items: center;
font-size: 14px;
}
.section-leave .status svg {
margin: 0 0 0 4px;
}
.section-leave .paragraph {
margin: 8px 0 0 0;
font-size: 14px;
text-align: justify;
line-height: 22px;
}
.leave-hour {
border: 1px solid #1e293b;
padding: 4px 7px;
border-radius: 4px;
}
.section-leave .active-paragraph {
font-weight: bold;
background-color: #ebe6e6 !important;
padding: 0px 6px;
border-radius: 5px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.section-leave .signature-section {
width: 100%;
position: absolute;
right: 0;
bottom: 10px;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 14px;
}
.section-leave .signature-section .signature-card {
position: relative;
width: 180px;
height: 95px;
}
.section-leave .signature-section .signature-card .signature-title {
position: absolute;
top: -7px;
right: 10px;
margin: 0;
font-size: 10px;
background-color: #fff;
z-index: 2;
}
.section-leave .signature-section .signature-card .signature-border {
width: 100%;
border: 2px dashed #cacaca;
height: 100%;
border-radius: 15px;
}
.section-leave .status {
display: flex;
align-items: center;
font-size: 14px;
}
.section-leave .status svg {
margin: 0 0 0 4px;
}
.section-leave .leave-hour {
border: 1px solid #1e293b;
padding: 4px 7px;
border-radius: 4px;
}
.section-leave .leave-day {
background-color: #d3d3d3 !important;
padding: 4px 7px;
border-radius: 4px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.leave-day {
background-color: #d3d3d3 !important;
padding: 4px 7px;
border-radius: 4px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.print-card {
position: fixed;
@@ -227,6 +249,22 @@
z-index: 20;
}
}
table {
width: 100%;
border-collapse: collapse;
border-radius: 10px;
border: none;
overflow: hidden;
}
td {
padding: 8px;
border-radius: 10px;
border: none;
}
.half {
width: 50%;
}
</style>
<div class="modal-header d-block text-center position-relative">
@@ -243,121 +281,262 @@
<div class="modal-body print" id="printThis">
<div class="row">
<div class="col-12">
<fieldset style="border-radius: 10px; height: 9cm; margin: 5px 5mm 0 5mm; ">
<div class="section-leave">
<div class="row">
<div class="col-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-6 d-inline-block text-center">
<p style="font-size: 15px; font-weight: bold">برگ مرخصی</p>
</div>
<div class="col-3 d-inline-block" style="text-align: left;">
@if (Model.PaidLeaveType == "روزانه")
{
<span class="leave-day" style="font-size: 12px !important;">مرخصی روزانه</span>
}
else
{
<span class="leave-hour" style="font-size: 12px !important;">مرخصی ساعتی</span>
}
</div>
</div>
<fieldset style="border-radius: 10px; height: 9cm; margin: 5px 5mm 0 5mm;">
<div class="section-leave">
<table class="w-100">
<tr>
<td colspan="2" class="half">
<div class="">
<div class="col-3 d-inline-block">
@if (!string.IsNullOrWhiteSpace(Model.ContractNo))
{
<fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset>
}
else
{
<fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; width: 60%; font-size: 12px; text-align: center; visibility: hidden;"> &nbsp;</fieldset>
}
</div>
<div class="col-6 d-inline-block text-center">
<p class="m-0" style="font-size: 15px; font-weight: bold">برگ مرخصی</p>
</div>
<div class="col-3 d-inline-block" style="text-align: left;">
@if (Model.PaidLeaveType == "روزانه")
{
<span class="leave-day" style="font-size: 12px !important;">مرخصی روزانه</span>
}
else
{
<span class="leave-hour" style="font-size: 12px !important;">مرخصی ساعتی</span>
}
</div>
</div>
</td>
</tr>
<tr>
<td colspan="2" class="half">
<p class="title"><span>@Model.WorkshopName</span></p>
<p class="title"><span>@Model.WorkshopName</span></p>
<div class="paragraph">
اینجانب <span class="active-paragraph">@Model.EmployeeFullName</span> به کد ملی <span class="active-paragraph">@Model.NationalCode</span> پرسنل مجموعه <span class="active-paragraph">@Model.WorkshopName</span>
<p class="paragraph">
اینجانب <span class="active-paragraph">@Model.EmployeeFullName</span> به کد ملی <span class="active-paragraph">@Model.NationalCode</span> پرسنل مجموعه <span class="active-paragraph">@Model.WorkshopName</span>
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span>به کارفرمایی</span>
if (@Model.EmployerList.Count > 1)
{
<span class="active-paragraph"> @Model.EmployerList[0].EmployerFullName </span>
<span>، </span>
<span class="active-paragraph"> @Model.EmployerList[1].EmployerFullName </span>
if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
}
else
{
<span class="active-paragraph">@Model.EmployerList.FirstOrDefault().EmployerFullName</span>
}
}
}
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span>به کارفرمایی</span>
if (@Model.EmployerList.Count > 1)
{
<span class="active-paragraph"> @Model.EmployerList[0].EmployerFullName </span>
<span>، </span>
<span class="active-paragraph"> @Model.EmployerList[1].EmployerFullName </span>
if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
}
else
{
<span class="active-paragraph">@Model.EmployerList.FirstOrDefault().EmployerFullName</span>
}
}
}
متقاضی استفاده از مرخصی <span>@Model.LeaveType</span> وفق تاریخ ذیل می باشم.
متقاضی استفاده از مرخصی <span>@Model.LeaveType</span> وفق تاریخ ذیل می باشم.
<br />
<br />
@if (Model.PaidLeaveType == "روزانه")
{
<span class="active-paragraph">@Model.StartLeave</span>
<span>لغایت</span>
<span class="active-paragraph">@Model.EndLeave</span>
<span>به مدت</span>
<span class="active-paragraph">@Model.LeaveHourses</span>
<span> کاری.</span>
}
else
{
<span>مورخ <span class="active-paragraph">@Model.StartLeave</span> از ساعت <span class="active-paragraph">@Model.StartLeaveGr.ToString("HH:mm")</span> الی <span class="active-paragraph">@Model.EndLeaveGr.ToString("HH:mm")</span> (مجموعا @Model.LeaveHourses)</span>
}
@if (Model.PaidLeaveType == "روزانه")
{
<span class="active-paragraph">@Model.StartLeave</span>
<span>لغایت</span>
<span class="active-paragraph">@Model.EndLeave</span>
<span>به مدت</span>
<span class="active-paragraph">@Model.LeaveHourses</span>
<span> کاری.</span>
}
else
{
<span>مورخ <span class="active-paragraph">@Model.StartLeave</span> از ساعت <span class="active-paragraph">@Model.StartLeaveGr.ToString("HH:mm")</span> الی <span class="active-paragraph">@Model.EndLeaveGr.ToString("HH:mm")</span> (مجموعا @Model.LeaveHourses)</span>
}
<br />
<br />
در صورت تایید کارفرما یا نماینده ایشان با بازه زمانی فوق از مرخصی <span>@Model.LeaveType</span> استفاده می نمایم.
در صورت تایید کارفرما یا نماینده ایشان با بازه زمانی فوق از مرخصی <span>@Model.LeaveType</span> استفاده می نمایم.
<br />
<br />
<br />
<br />
@if (Model.IsAccepted)
{
<div class="status">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3.5" y="3.5" width="17" height="17" rx="2.5" stroke-width="1.5" stroke="#222222" />
<path d="M8 12L11 15L16 9" stroke-width="1.5" stroke="#222222" stroke-linecap="round" />
</svg>
<span>
موافقت
</span>
</div>
}
else
{
<div class="status">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3.5" y="3.5" width="17" height="17" rx="2.5" stroke-width="1.5" stroke="#222222" />
<path d="M9 9L15 15" stroke-width="1.5" stroke="#222222" stroke-width="1.2" stroke-linecap="round" />
<path d="M15 9L9 15" stroke-width="1.5" stroke="#222222" stroke-width="1.2" stroke-linecap="round" />
</svg>
<span>
عدم موافقت
@if (!string.IsNullOrEmpty(Model.Decription))
{
<span>: </span>
<span class=" active-paragraph"> @Model.Decription</span>
}
</span>
</div>
}
</p>
@if (Model.IsAccepted)
{
<div class="status">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3.5" y="3.5" width="17" height="17" rx="2.5" stroke-width="1.5" stroke="#222222" />
<path d="M8 12L11 15L16 9" stroke-width="1.5" stroke="#222222" stroke-linecap="round" />
</svg>
<span>
موافقت
</span>
</div>
}
else
{
<div class="status">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3.5" y="3.5" width="17" height="17" rx="2.5" stroke-width="1.5" stroke="#222222" />
<path d="M9 9L15 15" stroke-width="1.5" stroke="#222222" stroke-width="1.2" stroke-linecap="round" />
<path d="M15 9L9 15" stroke-width="1.5" stroke="#222222" stroke-width="1.2" stroke-linecap="round" />
</svg>
<span>
عدم موافقت
@if (!string.IsNullOrEmpty(Model.Decription))
{
<span>: </span>
<span class=" active-paragraph"> @Model.Decription</span>
}
</span>
</div>
}
</div>
</td>
</tr>
<tr>
<td class="half text-end">
<div class="signature-card">
<p class="signature-title">امضاء کارفرما / نماینده کارفرما</p>
<div class="signature-border"></div>
</div>
</td>
<td class="half">
<div class="signature-card">
<p class="signature-title">امضاء پرسنل</p>
<div class="signature-border"></div>
</div>
</td>
</tr>
</table>
</div>
<div class="signature-section">
<div class="signature-card">
<p class="signature-title">امضاء کارفرما / نماینده کارفرما</p>
<div class="signature-border"></div>
</div>
<div class="signature-card">
<p class="signature-title">امضاء پرسنل</p>
<div class="signature-border"></div>
</div>
</div>
</div>
</fieldset>
@* <div class="section-leave">
<div class="row">
<div class="col-3 d-inline-block">
@if (!string.IsNullOrWhiteSpace(Model.ContractNo))
{
<fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset>
}
</div>
<div class="col-6 d-inline-block text-center">
<p style="font-size: 15px; font-weight: bold">برگ مرخصی</p>
</div>
<div class="col-3 d-inline-block" style="text-align: left;">
@if (Model.PaidLeaveType == "روزانه")
{
<span class="leave-day" style="font-size: 12px !important;">مرخصی روزانه</span>
}
else
{
<span class="leave-hour" style="font-size: 12px !important;">مرخصی ساعتی</span>
}
</div>
</div>
<p class="title"><span>@Model.WorkshopName</span></p>
<p class="paragraph">
اینجانب <span class="active-paragraph">@Model.EmployeeFullName</span> به کد ملی <span class="active-paragraph">@Model.NationalCode</span> پرسنل مجموعه <span class="active-paragraph">@Model.WorkshopName</span>
@{
if (@Model.EmployerList.FirstOrDefault().IsLegal == "حقیقی")
{
<span>به کارفرمایی</span>
if (@Model.EmployerList.Count > 1)
{
<span class="active-paragraph"> @Model.EmployerList[0].EmployerFullName </span>
<span>، </span>
<span class="active-paragraph"> @Model.EmployerList[1].EmployerFullName </span>
if (@Model.EmployerList.Count > 2)
{
<span>و غیره</span>
}
}
else
{
<span class="active-paragraph">@Model.EmployerList.FirstOrDefault().EmployerFullName</span>
}
}
}
متقاضی استفاده از مرخصی <span>@Model.LeaveType</span> وفق تاریخ ذیل می باشم.
<br/>
@if (Model.PaidLeaveType == "روزانه")
{
<span class="active-paragraph">@Model.StartLeave</span>
<span>لغایت</span>
<span class="active-paragraph">@Model.EndLeave</span>
<span>به مدت</span>
<span class="active-paragraph">@Model.LeaveHourses</span>
<span> کاری.</span>
}
else
{
<span>مورخ <span class="active-paragraph">@Model.StartLeave</span> از ساعت <span class="active-paragraph">@Model.StartLeaveGr.ToString("HH:mm")</span> الی <span class="active-paragraph">@Model.EndLeaveGr.ToString("HH:mm")</span> (مجموعا @Model.LeaveHourses)</span>
}
<br/>
در صورت تایید کارفرما یا نماینده ایشان با بازه زمانی فوق از مرخصی <span>@Model.LeaveType</span> استفاده می نمایم.
<br/>
<br/>
@if (Model.IsAccepted)
{
<div class="status">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3.5" y="3.5" width="17" height="17" rx="2.5" stroke-width="1.5" stroke="#222222"/>
<path d="M8 12L11 15L16 9" stroke-width="1.5" stroke="#222222" stroke-linecap="round"/>
</svg>
<span>
موافقت
</span>
</div>
}
else
{
<div class="status">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="3.5" y="3.5" width="17" height="17" rx="2.5" stroke-width="1.5" stroke="#222222"/>
<path d="M9 9L15 15" stroke-width="1.5" stroke="#222222" stroke-width="1.2" stroke-linecap="round"/>
<path d="M15 9L9 15" stroke-width="1.5" stroke="#222222" stroke-width="1.2" stroke-linecap="round"/>
</svg>
<span>
عدم موافقت
@if (!string.IsNullOrEmpty(Model.Decription))
{
<span>: </span>
<span class=" active-paragraph"> @Model.Decription</span>
}
</span>
</div>
}
</p>
<div class="signature-section">
<div class="signature-card">
<p class="signature-title">امضاء کارفرما / نماینده کارفرما</p>
<div class="signature-border"></div>
</div>
<div class="signature-card">
<p class="signature-title">امضاء پرسنل</p>
<div class="signature-border"></div>
</div>
</div>
</div> *@
</fieldset>
</div>
</div>
</div>

View File

@@ -111,100 +111,100 @@
height: 99%;
}
.row {
margin-right: -10px !important;
margin-left: -10px !important;
}
.row {
margin-right: -10px !important;
margin-left: -10px !important;
}
.section-leave {
position: relative;
height: 100%;
width: 100%;
border: 1px solid #c6c6c6;
padding: 13px;
border-radius: 10px;
}
.section-leave {
position: relative;
height: 100%;
width: 100%;
border: 1px solid #c6c6c6;
padding: 13px;
border-radius: 10px;
}
.section-leave .title {
margin: 4px 0 0 0;
font-size: 15px;
font-weight: bold;
text-align: center;
}
.section-leave .title {
margin: 4px 0 0 0;
font-size: 15px;
font-weight: bold;
text-align: center;
}
.section-leave .paragraph {
margin: 8px 0 0 0;
font-size: 14px;
text-align: justify;
line-height: 22px;
}
.section-leave .paragraph {
margin: 8px 0 0 0;
font-size: 14px;
text-align: justify;
line-height: 22px;
}
.section-leave .active-paragraph {
font-weight: bold;
background-color: #ebe6e6 !important;
padding: 0px 6px;
border-radius: 5px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.section-leave .active-paragraph {
font-weight: bold;
background-color: #ebe6e6 !important;
padding: 0px 6px;
border-radius: 5px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.section-leave .signature-section {
width: 100%;
position: relative;
right: 0;
bottom: 10px;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 14px;
}
.section-leave .signature-section {
width: 100%;
position: relative;
right: 0;
bottom: 10px;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 14px;
}
.section-leave .signature-section .signature-card {
position: relative;
width: 180px;
height: 95px;
}
.section-leave .signature-section .signature-card {
position: relative;
width: 180px;
height: 95px;
}
.section-leave .signature-section .signature-card .signature-title {
/* position: absolute;
top: -7px;
right: 10px; */
margin: 0;
font-size: 10px;
background-color: #fff;
z-index: 2;
}
.section-leave .signature-section .signature-card .signature-title {
/* position: absolute;
top: -7px;
right: 10px; */
margin: 0;
font-size: 10px;
background-color: #fff;
z-index: 2;
}
.section-leave .signature-section .signature-card .signature-border {
width: 100%;
border: 2px dashed #cacaca;
height: 100%;
border-radius: 15px;
}
.section-leave .signature-section .signature-card .signature-border {
width: 100%;
border: 2px dashed #cacaca;
height: 100%;
border-radius: 15px;
}
.section-leave .status {
display: flex;
align-items: center;
font-size: 14px;
}
.section-leave .status {
display: flex;
align-items: center;
font-size: 14px;
}
.section-leave .status svg {
margin: 0 0 0 4px;
}
.section-leave .status svg {
margin: 0 0 0 4px;
}
.section-leave .leave-hour {
border: 1px solid #1e293b;
padding: 4px 7px;
border-radius: 4px;
}
.section-leave .leave-hour {
border: 1px solid #1e293b;
padding: 4px 7px;
border-radius: 4px;
}
.section-leave .leave-day {
background-color: #d3d3d3 !important;
padding: 4px 7px;
border-radius: 4px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
.section-leave .leave-day {
background-color: #d3d3d3 !important;
padding: 4px 7px;
border-radius: 4px;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
</style>
<div class="modal-header d-block text-center position-relative">

View File

@@ -403,7 +403,13 @@ namespace ServiceHost.Areas.Client.Pages
long workshopId = _passwordHasher.SlugDecrypt(workshopSlugCliam);
if (workshopId > 0)
{
var result = _leaveApplication.LastLeaveMain(workshopId, pageIndex);
var command = new LeaveSearchModel()
{
WorkshopId = workshopId,
PageIndex = pageIndex
};
var result = _leaveApplication.LastLeaveMain(command);
int pageIndexCount = result.Count();
return new JsonResult(new
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 KiB

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 KiB

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 KiB

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 301 KiB

Some files were not shown because too many files have changed in this diff Show More