feat: add method to update institution contract status based on workshop completion

This commit is contained in:
MahanCh
2025-08-26 11:28:18 +03:30
parent 5720c30f7a
commit 86682a28e2
3 changed files with 28 additions and 5 deletions

View File

@@ -51,4 +51,5 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
Task<List<RegistrationWorkflowItemsViewModel>> RegistrationWorkflowItems(long institutionContractId);
Task<InstitutionContractWorkshopDetail> GetInstitutionWorkshopDetails(long institutionWorkshopDetailsId);
Task<InstitutionContract> GetIncludeWorkshopDetailsAsync(long institutionContractId);
void UpdateStatusIfNeeded(long institutionContractId);
}

View File

@@ -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;

View File

@@ -1556,6 +1556,23 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
.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