feat: add properties to exclude future contracts and filter old contracts in institution contract model

This commit is contained in:
2025-11-01 11:50:56 +03:30
parent 470651cb76
commit bc192d9552
2 changed files with 21 additions and 11 deletions

View File

@@ -88,9 +88,20 @@ public class GetInstitutionContractListItemsViewModel
public List<InstitutionContractListWorkshop> Workshops { get; set; }
/// <summary>
/// قرارداد ها با خدمات حضوری قرارداد
/// </summary>
public bool IsInPersonContract { get; set; }
/// <summary>
/// قرارداد های قدیمی
/// </summary>
public bool IsOldContract { get; set; }
/// <summary>
/// قرارداد هایی که برای آینده تنظیم شده اند
/// </summary>
public bool IsFutureContract { get; set; }
}
public class InstitutionContractListWorkshop

View File

@@ -1135,21 +1135,21 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
if (!string.IsNullOrWhiteSpace(searchModel.ContractDateFrom) &&
!string.IsNullOrWhiteSpace(searchModel.ContractDateTo))
{
if (!searchModel.ContractDateFrom.TryToGeorgianDateTime(out var dateFrom))
if (!searchModel.ContractDateFrom.TryToGeorgianDateTime(out var dateStart))
throw new BadRequestException("تاریخ وارد شده نامعتبر است");
if (!searchModel.ContractDateTo.TryToGeorgianDateTime(out var dateTo))
if (!searchModel.ContractDateTo.TryToGeorgianDateTime(out var dateEnd))
{
throw new BadRequestException("تاریخ وارد شده نامعتبر است");
}
if (dateFrom > dateTo)
if (dateStart > dateEnd)
{
throw new BadRequestException("تاریخ شروع نمیتواند بزرگ تر از تاریخ پایان باشد");
}
joinedQuery = joinedQuery.Where(x =>
x.contract.ContractStartGr <= dateTo && x.contract.ContractEndGr <= dateFrom);
x.contract.ContractStartGr <= dateEnd && x.contract.ContractEndGr >= dateStart);
}
if (searchModel.HasSignature != null)
@@ -1422,23 +1422,22 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
if (!string.IsNullOrWhiteSpace(searchModel.ContractDateFrom) &&
!string.IsNullOrWhiteSpace(searchModel.ContractDateTo))
{
if (!searchModel.ContractDateFrom.TryToGeorgianDateTime(out var dateFrom))
if (!searchModel.ContractDateFrom.TryToGeorgianDateTime(out var dateStart))
throw new BadRequestException("تاریخ وارد شده نامعتبر است");
if (!searchModel.ContractDateTo.TryToGeorgianDateTime(out var dateTo))
if (!searchModel.ContractDateTo.TryToGeorgianDateTime(out var dateEnd))
{
throw new BadRequestException("تاریخ وارد شده نامعتبر است");
}
if (dateFrom > dateTo)
if (dateStart > dateEnd)
{
throw new BadRequestException("تاریخ شروع نمیتواند بزرگ تر از تاریخ پایان باشد");
}
joinedQuery = joinedQuery.Where(x =>
x.contract.ContractStartGr <= dateTo && x.contract.ContractEndGr <= dateFrom);
x.contract.ContractStartGr <= dateEnd && x.contract.ContractEndGr >= dateStart);
}
if (searchModel.HasSignature != null)
{
var hasSignature = searchModel.HasSignature == true ? "1" : "0";
@@ -1512,10 +1511,10 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
#endregion
var totalAmount = await joinedQuery.SumAsync(x => x.contract.ContractAmount);
var totalAmount = await joinedQuery.Where(x=>x.contract.ContractStartGr<=DateTime.Today).SumAsync(x => x.contract.ContractAmount);
var totalDebt = await _context.FinancialStatments.Include(x => x.FinancialTransactionList)
.Where(x => joinedQuery.Select(i => i.contract.ContractingPartyId).Contains(x.ContractingPartyId))
.Where(x => joinedQuery.Where(i=>i.contract.ContractStartGr<=DateTime.Today).Select(i => i.contract.ContractingPartyId).Contains(x.ContractingPartyId))
.SelectMany(x => x.FinancialTransactionList)
.SumAsync(x => x.Deptor - x.Creditor);
var counts = new List<InstitutionContractStatusCount>();