private bool CheckTransactionMismatch(tblProjectInfo p, iatiactivity MatchedProject, bool checkMismatch = true)
{
if (!checkMismatch) return false;
bool isFinancialDataMismathed = false;
#region Commitments
if (MatchedProject.IsCommitmentIncluded)
{
var aimsCommitments = p.tblProjectFundingCommitments.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();
var iatiCommitments = MatchedProject.CommitmentsThisDPOnly;
#region Checking transaction mismatch
if (aimsCommitments.Count > iatiCommitments.Count)
foreach (var aimsCommitment in aimsCommitments)
{
var trandate = aimsCommitment.CommitmentAgreementSignDate ?? p.AgreementSignDate;
var notExistInIATI = !iatiCommitments.Exists(e => e.transactiondate?.isodate.Date == trandate && Math.Floor(e.ValUSD) == Math.Floor(aimsCommitment.CommittedAmountInUSD ?? 0));
isFinancialDataMismathed = true;
aimsDBIatiDAL.InsertLog(new Log
{
OrgId = MatchedProject.IATICode,
LogType = (int)LogType.FinancialDataMismathed,
DateTime = DateTime.Now,
IatiIdentifier = MatchedProject.IatiIdentifier,
ProjectId = p.Id,
Message = "Transactions (C) are mismatched between IATI and AIMS"
});
}
#endregion Checking transaction mismatch
return isFinancialDataMismathed;
}
#endregion
#region Disbursements
if (MatchedProject.IsDisbursmentIncluded)
{
var aimsDisbursements = p.tblProjectFundingActualDisbursements.Where(w => w.FundSourceId == MatchedProject.AimsFundSourceId).ToList();
var iatiDisbursements = MatchedProject.DisbursmentsThisDPOnly;
#region Checking transaction mismatch
if (aimsDisbursements.Count > iatiDisbursements.Count)
foreach (var aimsDisbursement in aimsDisbursements)
{
var trandate = aimsDisbursement.DisbursementToDate ?? aimsDisbursement.DisbursementDate;
var notExistInIATI = !iatiDisbursements.Exists(e => e.transactiondate?.isodate.Date == trandate && Math.Floor(e.ValUSD) == Math.Floor(aimsDisbursement.DisbursedAmountInUSD ?? 0));
isFinancialDataMismathed = true;
aimsDBIatiDAL.InsertLog(new Log
{
DateTime = DateTime.Now,
IatiIdentifier = MatchedProject.IatiIdentifier,
LogType = (int)LogType.FinancialDataMismathed,
ProjectId = p.Id,
OrgId = MatchedProject.IATICode,
Message = "Transactions (D) are mismatched between IATI and AIMS"
});
}
#endregion Checking transaction mismatch
return isFinancialDataMismathed;
}
return false;
#endregion
}