AIMS_BD_IATI.DAL.AimsDAL.CheckTransactionMismatch C# (CSharp) Method

CheckTransactionMismatch() private method

private CheckTransactionMismatch ( tblProjectInfo p, iatiactivity MatchedProject, bool checkMismatch = true ) : bool
p tblProjectInfo
MatchedProject iatiactivity
checkMismatch bool
return bool
        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
        }