public ProjectFieldMapModel GetTransactionMismatchedActivity(string iatiIdentifier)
{
var q = (from a in dbContext.Activities
let isMapped = a.ProjectId > 0 || a.MappedProjectId > 0 || a.MappedTrustFundId > 0
where a.IatiIdentifier == iatiIdentifier && isMapped
select new ActivityModel
{
IatiActivity = a.IatiActivity,
OrgId = a.OrgId,
ProjectId = a.ProjectId,
MappedProjectId = a.MappedProjectId,
MappedTrustFundId = a.MappedTrustFundId,
IsInclude = a.IsInclude
}).FirstOrDefault();
if (q == null) return null;
var iatiActivity = ParseXMLAndResolve(new List<ActivityModel> { q }).FirstOrDefault();
LoadChildActivities(iatiActivity);
var aimsProject = new AimsDAL().GetAIMSProjectInIATIFormat(q.ProjectId > 0 ? q.ProjectId :
q.MappedProjectId > 0 ? q.MappedProjectId :
0);
foreach (var aimsTransaction in aimsProject.transaction)
{
var isFoundInIati = iatiActivity.transaction.Any(a => a.transactiontype?.code == aimsTransaction.transactiontype?.code
&& a.transactiondate?.isodate == aimsTransaction.transactiondate?.isodate
&& Math.Floor(a.ValUSD) == Math.Floor(aimsTransaction.ValUSD));
aimsTransaction.IsConflicted = !isFoundInIati;
}
return new ProjectFieldMapModel(iatiActivity, aimsProject);
}