From 66ada45d29389e63b5fb522ecfdc07a7ea792f44 Mon Sep 17 00:00:00 2001 From: SamSys Date: Tue, 27 May 2025 20:44:25 +0330 Subject: [PATCH] change metod --- .../Checkout/CreateCheckoutListViewModel.cs | 2 + .../Repository/CheckoutRepository.cs | 116 +++++++++++++++--- 2 files changed, 98 insertions(+), 20 deletions(-) diff --git a/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs b/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs index 76184b0c..83bd76f3 100644 --- a/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs +++ b/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs @@ -21,6 +21,8 @@ public class CreateCheckoutListViewModel public string ContractEnd { get; set; } + public string LeftWorkDate { get; set; } + //public string NextMonthStart { get; set; } //public bool RedColor { get; set; } diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index f63b297f..196bb8ea 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -196,7 +196,7 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos contractWorkshop => contractWorkshop.contract.EmployeeId, employee => employee.id, (contractWorkshop, employee) => new { contractWorkshop, employee }) - .Join(_context.LeftWorkList.Where(l => l.WorkshopId == workshopId), + .Join(_context.LeftWorkList.Where(l => l.WorkshopId == workshopId && l.StartWorkDate < endSearch && l.LeftWorkDate > startSreach), contractWorkshopEmployee => contractWorkshopEmployee.contractWorkshop.contract.EmployeeId, leftwork => leftwork.EmployeeId, (contractWorkshopEmployee, leftwork) => new { contractWorkshopEmployee, leftwork }) @@ -216,41 +216,117 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos var finalResult = contracts.Select(result => { - var hasChekout = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true"); + var now = DateTime.Now; + DateTime currentStart = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime(); + DateTime currentEnd = ($"{DateTime.Now.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime(); + var chekoutCreated = result.checkout.FirstOrDefault(x => x.ContractStart < endSearch && x.ContractEnd > startSreach && x.IsActiveString == "true"); - if (hasChekout != null) + if (chekoutCreated != null) { - var checkout + return new CreateCheckoutListViewModel { - Id = result.checkout., + Id = chekoutCreated.ContractId, - EmployeeId = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.employee.id, - ContractNo = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.contract.ContractNo, - //EmployerName = result.contract.EmployerName, - WorkshopName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.contractWorkshop.workshop.WorkshopFullName, - EmployeeName = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork - .contractWorkshopEmployee.employee.FullName, - - PersonnelCode = result.contractWorkshopEmployeeleftWorkPersonnelCode.personnelCode.PersonnelCode, - //PersonnelCodeInt = Convert.ToInt32(result.contract.PersonnelCode), + EmployeeId = chekoutCreated.EmployeeId, + ContractNo = chekoutCreated.ContractNo, + WorkshopName = chekoutCreated.WorkshopName, + EmployeeName = chekoutCreated.EmployeeFullName, + ContractStart = chekoutCreated.ContractStart.ToFarsi(), + ContractEnd = chekoutCreated.ContractEnd.ToFarsi(), + PersonnelCode = Convert.ToInt64(chekoutCreated.PersonnelCode), LaterThanEnd = false, Extension = false, - Description = "", + Description = "دارای فیش حقوقی", }; } - var employeeIjoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork + var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork .contractWorkshopEmployee.employee.id; bool hasRollCall = - _rollCallEmployeeRepository.HasRollCallRecord(employeeIjoin, workshopId, startSreach, endSearch); + _rollCallEmployeeRepository.HasRollCallRecord(employeeJoin, workshopId, startSreach, endSearch); var leftWork = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork .leftwork; + bool extension = false; + bool laterThanEnd = false; + string description = ""; + string leftWorkDate; + string contractStart = ""; + string contractEnd = ""; + + //اگر حضورعیاب داشت + // اگر ترک کار کرده بود + // اگر ترک کارش در بازه انتخاب شده بود + if (hasRollCall && leftWork.HasLeft && leftWork.LeftWorkDate > startSreach && leftWork.LeftWorkDate <= endSearch) + { + //اگر بازه انتخاب شده در تاریخ جاری بود + if (startSreach == currentStart && endSearch == currentEnd) + { + //اگر ترک کارش قبل یا مساوی تاریخ جاری بود + if (leftWork.LeftWorkDate <= now) + { + //مجاز به ایجاد تصفیه + extension = true; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + + } + else + { + // مجاز نیست + extension = false; + description = "بعد از تاریخ ترک کار میتواند فیش صادر کنید"; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + + } + } + else if(endSearch < currentStart) + { + extension = true; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + } + else if (startSreach > currentEnd) + { + // مجاز نیست + extension = false; + description = "بعد از تاریخ ترک کار میتواند فیش صادر کنید"; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + contractStart = leftWork.StartWorkDate > startSreach + ? leftWork.StartWorkDate.ToFarsi() + : startSreach.ToFarsi(); + contractEnd = leftWork.LeftWorkDate.AddDays(-1).ToFarsi(); + } + + } + else if(hasRollCall && leftWork.HasLeft && leftWork.LeftWorkDate <= startSreach) + { + // مجاز نیست + extension = false; + description = "به دلیل ترک کار پرسنل مجاز به ایجاد فیش نمی باشید"; + leftWorkDate = leftWork.LeftWorkDate.ToFarsi(); + + } + else if(hasRollCall && !leftWork.HasLeft && startSreach == currentStart) + { + // مجاز نیست + extension = false; + description = "به دلیل داشتن حضورغیاب تا پایان ماه مجاز به ایجاد فیش نمی باشید"; + + } + return new CreateCheckoutListViewModel { Id = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork