From a861f9f21cd7754f8827b69755e460e0d2ff125f Mon Sep 17 00:00:00 2001 From: SamSys Date: Mon, 23 Jun 2025 00:32:35 +0330 Subject: [PATCH] check options on create checkout --- .../Checkout/CreateCheckoutListViewModel.cs | 5 +++- .../EmployeeComputeOptionsApplication.cs | 10 +++++++- .../Repository/CheckoutRepository.cs | 23 ++++++++++++++----- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs b/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs index c0daaa97..7d7dbcfb 100644 --- a/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs +++ b/CompanyManagment.App.Contracts/Checkout/CreateCheckoutListViewModel.cs @@ -39,7 +39,10 @@ public class CreateCheckoutListViewModel public string Description { get; set; } - + /// + /// آیا پرسنل اجازه ایجاد قرارداد دارد + /// + public bool EmployeeHasCreateCheckout { get; set; } public List CreateCheckoutList { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.Application/EmployeeComputeOptionsApplication.cs b/CompanyManagment.Application/EmployeeComputeOptionsApplication.cs index 67f792a3..d7becaf1 100644 --- a/CompanyManagment.Application/EmployeeComputeOptionsApplication.cs +++ b/CompanyManagment.Application/EmployeeComputeOptionsApplication.cs @@ -21,8 +21,16 @@ public class EmployeeComputeOptionsApplication : IEmployeeComputeOptionsApplicat public OperationResult Create(CreateEmployeeComputeOptions command) { + var opration = new OperationResult(); - try + if (command.CreateContract && command.ContractTerm != "1" && command.CutContractEndOfYear == IsActive.None) + return opration.Failed("لطفا تعیین کنید که قراداد منتهی به پایان سال یاشد یا نباشد"); + + if (command.ContractTerm == "1") + command.CutContractEndOfYear = IsActive.None; + + + try { if (_employeeComputeOptionsRepository.Exists(x => x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId)) diff --git a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs index 619ee3c9..162eaec7 100644 --- a/CompanyManagment.EFCore/Repository/CheckoutRepository.cs +++ b/CompanyManagment.EFCore/Repository/CheckoutRepository.cs @@ -217,7 +217,15 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos checkout => checkout.ContractId, (contractWorkshopEmployeeleftWorkPersonnelCode, checkout) => new { contractWorkshopEmployeeleftWorkPersonnelCode, checkout }) - .ToList(); + + .GroupJoin(_context.EmployeeComputeOptionsSet.Where(o => o.WorkshopId == workshopId), + x => x.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork.leftwork.EmployeeId, + option => option.EmployeeId, + (x, options) => new { x.checkout, x.contractWorkshopEmployeeleftWorkPersonnelCode, options }) + .SelectMany( + x => x.options.DefaultIfEmpty(), + (x, option) => new { x.checkout, x.contractWorkshopEmployeeleftWorkPersonnelCode, option }) + .ToList(); Console.WriteLine("query : " + timer.Elapsed); timer.Reset(); timer.Start(); @@ -249,8 +257,9 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos LaterThanEnd = false, Extension = false, Description = "دارای فیش حقوقی", - HasCheckout = true - }; + HasCheckout = true, + EmployeeHasCreateCheckout = true + }; } var employeeJoin = result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork .contractWorkshopEmployee.employee.id; @@ -469,10 +478,12 @@ public class CheckoutRepository : RepositoryBase, ICheckoutRepos Description = description, ContractStart = contractStart, ContractEnd = contractEnd, - LeftWorkDate = leftWorkDate - }; + LeftWorkDate = leftWorkDate, + EmployeeHasCreateCheckout = result.option != null ? result.option.CreateCheckout : result.contractWorkshopEmployeeleftWorkPersonnelCode.contractWorkshopEmployeeleftWork.contractWorkshopEmployee.contractWorkshop.workshop.CreateCheckout - }).OrderByDescending(x => x.Extension).ToList(); + }; + + }).Where(x=>x.EmployeeHasCreateCheckout).OrderByDescending(x => x.Extension).ToList();