diff --git a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs index be7d3c5f..7a6fddd3 100644 --- a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs +++ b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs @@ -50,4 +50,6 @@ public interface IInstitutionContractRepository : IRepository> RegistrationWorkflowMainList(); Task> 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 d3c5fd13..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 = _institutionContractRepository.Get(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); @@ -1096,6 +1098,8 @@ public class WorkshopAppliction : IWorkshopApplication _rollCallServiceApplication.Create(commandSave); } + contractWorkshopDetail.SetWorkshopId(workshop.id); + await _workshopRepository.SaveChangesAsync(); foreach (var e in employerIds) { @@ -1110,11 +1114,12 @@ public class WorkshopAppliction : IWorkshopApplication var op = _workshopRepository.CreateAccountLeftWorkAndWorkshopAccounts(accountIds.Distinct().ToList(), workshop.id); + + _institutionContractRepository.UpdateStatusIfNeeded(institutionContract.id); 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 46b4cddd..0b53d0f9 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -1560,6 +1560,31 @@ 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); + } + + 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 diff --git a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs index 1d64670c..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 @@ -681,7 +685,6 @@ public class WorkshopServiceCalculatorResponse public record InstitutionPlanCalculatorRequest(double TotalAmountMonth, InstitutionContractDuration Duration = InstitutionContractDuration.TwelveMonths, - string PaymentModel = "OneTime", string ContractStartType = "currentMonth"); public class CreateInquiryRequest