add status for list of InstitutionContract
This commit is contained in:
@@ -7,6 +7,7 @@ using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Exceptions;
|
||||
using _0_Framework.InfraStructure;
|
||||
using Company.Domain.ContarctingPartyAgg;
|
||||
using Company.Domain.ContractingPartyAccountAgg;
|
||||
using Company.Domain.empolyerAgg;
|
||||
using Company.Domain.FinancialStatmentAgg;
|
||||
@@ -1005,12 +1006,6 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
var query = _context.InstitutionContractSet
|
||||
.Include(x => x.ContactInfoList);
|
||||
|
||||
var totalAmount = await query.Where(x => x.IsActiveString == "true").SumAsync(x => x.ContractAmount);
|
||||
|
||||
var totalDebt = await _context.FinancialStatments.Include(x => x.FinancialTransactionList)
|
||||
.Where(x => query.Where(q=>q.IsActiveString == "true" || q.IsActiveString == "blue").Select(i => i.ContractingPartyId).Contains(x.ContractingPartyId))
|
||||
.SelectMany(x => x.FinancialTransactionList)
|
||||
.SumAsync(x => x.Deptor - x.Creditor);
|
||||
|
||||
var joinedQuery = query.Join(_context.PersonalContractingParties
|
||||
.Include(x => x.Employers)
|
||||
@@ -1080,10 +1075,55 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
x.contract.ContractStartGr <= dateTo && x.contract.ContractEndGr <= dateFrom);
|
||||
}
|
||||
|
||||
var now = DateTime.Today;
|
||||
var nowFa = now.ToFarsi();
|
||||
var endFa = nowFa.FindeEndOfMonth();
|
||||
var endThisMontGr = endFa.ToGeorgianDateTime();
|
||||
//Todo: Search by Status For Tab
|
||||
if (searchModel.Status != null)
|
||||
{
|
||||
switch (searchModel.Status)
|
||||
{
|
||||
case InstitutionContractStatus.DeactiveWithDebt:
|
||||
joinedQuery = joinedQuery.Where(x => x.contract.IsActiveString == "blue");
|
||||
break;
|
||||
case InstitutionContractStatus.PendingForRenewal:
|
||||
joinedQuery = joinedQuery.Where(x =>
|
||||
x.contract.ContractEndGr >= now && x.contract.ContractEndGr <= endThisMontGr);
|
||||
break;
|
||||
case InstitutionContractStatus.Block:
|
||||
joinedQuery = joinedQuery.Where(x => x.contractingParty.IsBlock == "true");
|
||||
break;
|
||||
case InstitutionContractStatus.Free:
|
||||
joinedQuery = joinedQuery.Where(x => x.contract.ContractAmount == 0);
|
||||
break;
|
||||
case InstitutionContractStatus.WithoutWorkshop:
|
||||
joinedQuery = joinedQuery.Where(x => !x.contractingParty.Employers
|
||||
.SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).Any());
|
||||
break;
|
||||
case InstitutionContractStatus.Active:
|
||||
joinedQuery = joinedQuery.Where(x =>
|
||||
x.contract.IsActiveString != "blue" && // Not DeactiveWithDebt
|
||||
!(x.contract.ContractEndGr >= now && x.contract.ContractEndGr <= endThisMontGr) && // Not PendingForRenewal
|
||||
x.contractingParty.IsBlock != "true" && // Not Block
|
||||
x.contract.ContractAmount != 0 && // Not Free
|
||||
x.contractingParty.Employers
|
||||
.SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop))
|
||||
.Any() // Has at least one workshop => Not WithoutWorkshop
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
var list = await joinedQuery.ApplyPagination(searchModel.PageIndex,searchModel.PageSize).ToListAsync();
|
||||
|
||||
var totalAmount = await joinedQuery.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))
|
||||
.SelectMany(x => x.FinancialTransactionList)
|
||||
.SumAsync(x => x.Deptor - x.Creditor);
|
||||
var list = await joinedQuery.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync();
|
||||
|
||||
var res = new GetInstitutionContractListViewModel()
|
||||
{
|
||||
@@ -1105,8 +1145,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
var minArchiveCode = arc.Count > 0 ? arc.Min(a => a) : 0;
|
||||
|
||||
var archiveCode = minArchiveCode == 10000000 ? 0 : minArchiveCode;
|
||||
var status = SetContractStatus(x.contract.ContractEndGr, x.contract.ContractAmount,
|
||||
x.contract.IsActiveString);
|
||||
var status = SetContractStatus(x.contract,x.contractingParty,x.statement);
|
||||
return new GetInstitutionContractListItemsViewModel()
|
||||
{
|
||||
ContractAmount = x.contract.ContractAmount,
|
||||
@@ -1133,8 +1172,9 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
return res;
|
||||
}
|
||||
|
||||
private (InstitutionContractStatus status, bool isExpiered) SetContractStatus(DateTime contractEndGr, double contractAmount,
|
||||
string isActiveString)
|
||||
private (InstitutionContractStatus status, bool isExpiered) SetContractStatus(InstitutionContract contract,
|
||||
PersonalContractingParty contractingParty,
|
||||
FinancialStatment financialStatment)
|
||||
{
|
||||
var now = DateTime.Now;
|
||||
var nowFa = now.ToFarsi();
|
||||
@@ -1142,32 +1182,44 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
var endThisMontGr = endFa.ToGeorgianDateTime();
|
||||
InstitutionContractStatus status = InstitutionContractStatus.Active;
|
||||
bool isExpier = false;
|
||||
if (contractEndGr < now)
|
||||
if (contract.ContractEndGr < now)
|
||||
{
|
||||
status = InstitutionContractStatus.Deactive;
|
||||
isExpier = true;
|
||||
}
|
||||
|
||||
if (contractEndGr >= now && contractEndGr <= endThisMontGr)
|
||||
if (contract.ContractEndGr >= now && contract.ContractEndGr <= endThisMontGr)
|
||||
{
|
||||
status = InstitutionContractStatus.PendingForRenewal;
|
||||
isExpier = true;
|
||||
}
|
||||
|
||||
if (contractAmount == 0)
|
||||
if (contract.ContractAmount == 0)
|
||||
{
|
||||
status = InstitutionContractStatus.Free;
|
||||
if ((contractEndGr >= now && contractEndGr <= endThisMontGr) || (contractEndGr < now))
|
||||
if ((contract.ContractEndGr >= now && contract.ContractEndGr <= endThisMontGr) || (contract.ContractEndGr < now))
|
||||
{
|
||||
isExpier = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isActiveString == "blue")
|
||||
if (contract.IsActiveString == "blue")
|
||||
{
|
||||
status = InstitutionContractStatus.DeactiveWithDebt;
|
||||
isExpier = true;
|
||||
}
|
||||
var workshops = contractingParty.Employers
|
||||
.SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).DistinctBy(w => w.id).ToList();
|
||||
|
||||
if (workshops.Count == 0)
|
||||
{
|
||||
status = InstitutionContractStatus.Free;
|
||||
}
|
||||
|
||||
if (contractingParty.IsBlock == "true")
|
||||
{
|
||||
status = InstitutionContractStatus.Block;
|
||||
}
|
||||
|
||||
return (status, isExpier);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user