From 69279b320c0166af57d16cd0970bb0cb12657ab2 Mon Sep 17 00:00:00 2001 From: mahan Date: Sat, 11 Oct 2025 19:36:48 +0330 Subject: [PATCH] feat: enhance workshop handling by adding workshop group association and improving initialization logic --- .../InstitutionContractWorkshopCurrent.cs | 3 +- .../InstitutionContractWorkshopInitial.cs | 8 +++- .../InstitutionContractRepository.cs | 43 ++++++++++++++++--- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopCurrent.cs b/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopCurrent.cs index 94f68b36..f133fa70 100644 --- a/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopCurrent.cs +++ b/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopCurrent.cs @@ -10,11 +10,12 @@ public class InstitutionContractWorkshopCurrent:InstitutionContractWorkshopBase public InstitutionContractWorkshopCurrent(string workshopName, bool hasRollCallPlan, bool hasRollCallPlanInPerson, bool hasCustomizeCheckoutPlan, bool hasContractPlan, bool hasContractPlanInPerson, bool hasInsurancePlan, bool hasInsurancePlanInPerson, - int personnelCount, double price,long institutionContractWorkshopGroupId,long workshopId) : base(workshopName, hasRollCallPlan, + int personnelCount, double price,long institutionContractWorkshopGroupId,InstitutionContractWorkshopGroup workshopGroup,long workshopId) : base(workshopName, hasRollCallPlan, hasRollCallPlanInPerson, hasCustomizeCheckoutPlan, hasContractPlan, hasContractPlanInPerson, hasInsurancePlan, hasInsurancePlanInPerson, personnelCount, price) { InstitutionContractWorkshopGroupId = institutionContractWorkshopGroupId; + WorkshopGroup = workshopGroup; WorkshopId = workshopId; } public long InstitutionContractWorkshopGroupId { get; private set; } diff --git a/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs b/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs index 3d4e2557..cceaeefb 100644 --- a/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs +++ b/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs @@ -31,7 +31,7 @@ public class InstitutionContractWorkshopInitial:InstitutionContractWorkshopBase WorkshopCreated = true; WorkshopCurrent = new InstitutionContractWorkshopCurrent(WorkshopName,Services.RollCall,Services.RollCallInPerson, Services.CustomizeCheckout,Services.Contract,Services.ContractInPerson,Services.Insurance, - Services.InsuranceInPerson,PersonnelCount,Price,InstitutionContractWorkshopGroupId,workshopId); + Services.InsuranceInPerson,PersonnelCount,Price,InstitutionContractWorkshopGroupId,WorkshopGroup,workshopId); WorkshopCurrent.SetEmployers(Employers.Select(x=>x.EmployerId).ToList()); } @@ -49,6 +49,12 @@ public class InstitutionContractWorkshopInitial:InstitutionContractWorkshopBase entity.SetEmployers(employerIds); return entity; } + + public void SetWorkshopGroup(InstitutionContractWorkshopGroup entityWorkshopGroup) + { + InstitutionContractWorkshopGroupId = entityWorkshopGroup.id; + WorkshopGroup = entityWorkshopGroup; + } } public class InstitutionContractWorkshopDetailEmployer : EntityBase diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index 1fee6ec7..bac37d93 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -2190,10 +2190,19 @@ public class InstitutionContractRepository : RepositoryBase - new InstitutionContractWorkshopInitial(x.WorkshopName, x.RollCall, x.RollCallInPerson, x.CustomizeCheckout, - x.ContractAndCheckout, - x.ContractAndCheckoutInPerson, x.Insurance, x.InsuranceInPerson, x.CountPerson, x.Price)).ToList(); + var workshopDetails = institutionContractTemp + .Workshops.Select(x => + { + var res = new InstitutionContractWorkshopInitial(x.WorkshopName, x.RollCall, x.RollCallInPerson, + x.CustomizeCheckout, + x.ContractAndCheckout, + x.ContractAndCheckoutInPerson, x.Insurance, x.InsuranceInPerson, x.CountPerson, x.Price); + if (x.WorkshopId != 0) + { + res.SetWorkshopId(x.WorkshopId); + } + return res; + }).ToList(); var employeeCount = institutionContractTemp.Workshops.Sum(x => x.CountPerson).ToString(); @@ -2218,11 +2227,35 @@ public class InstitutionContractRepository : RepositoryBase x.ContractingPartyId == contractingParty.id)) {