From 5720c30f7a3427e7f854bf975e870f0eb74871e9 Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 26 Aug 2025 11:17:16 +0330 Subject: [PATCH 1/3] feat: add method to include workshop details in institution contract retrieval --- .../IInstitutionContractRepository.cs | 1 + CompanyManagment.Application/WorkshopAppliction.cs | 4 ++-- .../Repository/InstitutionContractRepository.cs | 8 ++++++++ .../Admin/Controllers/institutionContractController.cs | 1 - 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs index be7d3c5f..a829eb04 100644 --- a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs +++ b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs @@ -50,4 +50,5 @@ public interface IInstitutionContractRepository : IRepository> RegistrationWorkflowMainList(); Task> RegistrationWorkflowItems(long institutionContractId); Task GetInstitutionWorkshopDetails(long institutionWorkshopDetailsId); + Task GetIncludeWorkshopDetailsAsync(long institutionContractId); } \ No newline at end of file diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs index d3c5fd13..261fc1ca 100644 --- a/CompanyManagment.Application/WorkshopAppliction.cs +++ b/CompanyManagment.Application/WorkshopAppliction.cs @@ -1047,7 +1047,7 @@ public class WorkshopAppliction : IWorkshopApplication // return operation.Failed("لطفا نوع ارسال لیست بیمه را مشخص کنید"); var account = new AccountViewModel(); - var institutionContract = _institutionContractRepository.Get(contractWorkshopDetail.InstitutionContractId); + var institutionContract =await _institutionContractRepository.GetIncludeWorkshopDetailsAsync(contractWorkshopDetail.InstitutionContractId); if (institutionContract == null) { return operation.Failed("قرارداد مالی موسسه یافت نشد"); @@ -1095,6 +1095,7 @@ public class WorkshopAppliction : IWorkshopApplication }; _rollCallServiceApplication.Create(commandSave); } + contractWorkshopDetail.SetWorkshopId(workshop.id); foreach (var e in employerIds) @@ -1114,7 +1115,6 @@ public class WorkshopAppliction : IWorkshopApplication if (!op.IsSuccedded) return op; - await transaction.CommitAsync(); return operation.Succcedded(); } diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index af1f6ff9..c901cb24 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -1548,6 +1548,14 @@ public class InstitutionContractRepository : RepositoryBase x.id == institutionWorkshopDetailsId); } + + public async Task GetIncludeWorkshopDetailsAsync(long institutionContractId) + { + return await _context.InstitutionContractSet + .Include(x=>x.WorkshopDetails) + .FirstOrDefaultAsync(x => x.id == institutionContractId); + } + #endregion diff --git a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs index 1d64670c..febbed39 100644 --- a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs +++ b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs @@ -681,7 +681,6 @@ public class WorkshopServiceCalculatorResponse public record InstitutionPlanCalculatorRequest(double TotalAmountMonth, InstitutionContractDuration Duration = InstitutionContractDuration.TwelveMonths, - string PaymentModel = "OneTime", string ContractStartType = "currentMonth"); public class CreateInquiryRequest From 86682a28e2880ff0dce1207f3dee4f0ef3e495dd Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 26 Aug 2025 11:28:18 +0330 Subject: [PATCH 2/3] feat: add method to update institution contract status based on workshop completion --- .../IInstitutionContractRepository.cs | 1 + .../WorkshopAppliction.cs | 15 ++++++++++----- .../Repository/InstitutionContractRepository.cs | 17 +++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs index a829eb04..7a6fddd3 100644 --- a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs +++ b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs @@ -51,4 +51,5 @@ public interface IInstitutionContractRepository : IRepository> RegistrationWorkflowItems(long institutionContractId); Task GetInstitutionWorkshopDetails(long institutionWorkshopDetailsId); Task GetIncludeWorkshopDetailsAsync(long institutionContractId); + void UpdateStatusIfNeeded(long institutionContractId); } \ No newline at end of file diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs index 261fc1ca..770c34f6 100644 --- a/CompanyManagment.Application/WorkshopAppliction.cs +++ b/CompanyManagment.Application/WorkshopAppliction.cs @@ -1047,16 +1047,18 @@ public class WorkshopAppliction : IWorkshopApplication // return operation.Failed("لطفا نوع ارسال لیست بیمه را مشخص کنید"); var account = new AccountViewModel(); - var institutionContract =await _institutionContractRepository.GetIncludeWorkshopDetailsAsync(contractWorkshopDetail.InstitutionContractId); + var institutionContract = + await _institutionContractRepository.GetIncludeWorkshopDetailsAsync(contractWorkshopDetail + .InstitutionContractId); if (institutionContract == null) { return operation.Failed("قرارداد مالی موسسه یافت نشد"); } + if (command.HasRollCallFreeVip == "true") { - - // if (institutionContract == null) - // return operation.Failed("بدلیل نداشتن قرار داد مالی نمیتوانید سرویس حضور غیاب را فعال کنید"); + // if (institutionContract == null) + // return operation.Failed("بدلیل نداشتن قرار داد مالی نمیتوانید سرویس حضور غیاب را فعال کنید"); account = _personalContractingPartyRepository.GetAccountByPersonalContractingParty(institutionContract .ContractingPartyId); @@ -1095,8 +1097,9 @@ public class WorkshopAppliction : IWorkshopApplication }; _rollCallServiceApplication.Create(commandSave); } - contractWorkshopDetail.SetWorkshopId(workshop.id); + contractWorkshopDetail.SetWorkshopId(workshop.id); + await _workshopRepository.SaveChangesAsync(); foreach (var e in employerIds) { @@ -1111,6 +1114,8 @@ public class WorkshopAppliction : IWorkshopApplication var op = _workshopRepository.CreateAccountLeftWorkAndWorkshopAccounts(accountIds.Distinct().ToList(), workshop.id); + + _institutionContractRepository.UpdateStatusIfNeeded(institutionContract.id); if (!op.IsSuccedded) return op; diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index c901cb24..547ee84b 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -1556,6 +1556,23 @@ public class InstitutionContractRepository : RepositoryBase x.id == institutionContractId); } + public void UpdateStatusIfNeeded(long institutionContractId) + { + var institutionContract = _context.InstitutionContractSet + .Include(x => x.WorkshopDetails) + .FirstOrDefault(x => x.id == institutionContractId); + if (institutionContract == null) + throw new NotFoundException("قرارداد مؤسسه یافت نشد"); + + if (institutionContract.Status == InstitutionContractStatus.Completed) + return; + if (institutionContract.WorkshopDetails.All(x => x.WorkshopCreated)) + institutionContract.Complete(); + + _context.SaveChanges(); + + } + #endregion From d37ad552dfdfbf14c4955b0d8e5b7161d5cf5a4e Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 26 Aug 2025 17:36:12 +0330 Subject: [PATCH 3/3] feat: add ContractStart and ContractEnd properties to institution contract response --- .../Areas/Admin/Controllers/institutionContractController.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs index febbed39..f08b0967 100644 --- a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs +++ b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs @@ -618,6 +618,8 @@ public class institutionContractController : AdminBaseController OneTimeTotalAmount = res.OneTimeTotalPaymentStr, MonthlyTotalAmount= res.MonthlyTotalPaymentStr, TotalTax = res.ValueAddedTaxStr, + ContractStart = request.ContractStartType == "currentMonth"?res.ContractStartCurrentMonthFa:res.ContractStartNextMonthFa, + ContractEnd = res.ContractEndFa }; return response; } @@ -672,6 +674,8 @@ public class InstitutionPlanCalculatorResponse public string OneTimeTotalAmount { get; set; } public string MonthlyTotalAmount { get; set; } public string MonthlyTotalAmountWithoutTax { get; set; } + public string ContractStart { get; set; } + public string ContractEnd { get; set; } } public class WorkshopServiceCalculatorResponse