public static List<iatiactivity> MergeProjects(List<ProjectFieldMapModel> matchedProjects)
{
var margedProjects = new List<iatiactivity>();
foreach (var matchedProject in matchedProjects)
{
matchedProject.aimsProject.AllID = matchedProject.iatiActivity.AllID;
matchedProject.aimsProject.iatiidentifier = matchedProject.iatiActivity.iatiidentifier;
foreach (var field in matchedProject.Fields)
{
if (field.IsSourceIATI)
{
if (field.Field == IatiFields.Title)
{
matchedProject.aimsProject.Title = matchedProject.iatiActivity.Title;
}
else if (field.Field == IatiFields.Description)
{
matchedProject.aimsProject.Description = matchedProject.iatiActivity.Description;
}
else if (field.Field == IatiFields.Activitystatus)
{
matchedProject.aimsProject.activitystatus = matchedProject.iatiActivity.activitystatus;
}
else if (field.Field == IatiFields.Document)
{
matchedProject.aimsProject.documentlink = matchedProject.iatiActivity.documentlink;
}
else if (field.Field == IatiFields.Sector)
{
matchedProject.aimsProject.sector = matchedProject.iatiActivity.sector;
}
else if (field.Field == IatiFields.Location)
{
matchedProject.aimsProject.location = matchedProject.iatiActivity.location;
}
else if (field.Field == IatiFields.ExecutingAgency)
{
matchedProject.aimsProject.participatingorg = matchedProject.iatiActivity.participatingorg;
}
else if (field.Field == IatiFields.Dates)
{
matchedProject.aimsProject.activitydate = matchedProject.iatiActivity.activitydate;
}
}
}
var trns = new List<transaction>();
var planDis = new List<planneddisbursement>();
foreach (var field in matchedProject.TransactionFields)
{
if (field.Field == IatiFields.Commitment)
{
if (field.IsSourceIATI)
{
trns.AddRange(matchedProject.iatiActivity.Commitments);
if (matchedProject.aimsProject.IsCofinancedProject == false)
matchedProject.aimsProject.IsCommitmentIncluded = true;
}
else
trns.AddRange(matchedProject.aimsProject.Commitments);
}
else if (field.Field == IatiFields.Disbursment)
{
if (field.IsSourceIATI)
{
trns.AddRange(matchedProject.iatiActivity.Disbursments);
if (matchedProject.aimsProject.IsCofinancedProject == false)
matchedProject.aimsProject.IsDisbursmentIncluded = true;
}
else
trns.AddRange(matchedProject.aimsProject.Disbursments);
}
else if (field.Field == IatiFields.PlannedDisbursment)
{
if (field.IsSourceIATI)
{
planDis.AddRange(matchedProject.iatiActivity.PlannedDisbursments);
if (matchedProject.aimsProject.IsCofinancedProject == false)
matchedProject.aimsProject.IsPlannedDisbursmentIncluded = true;
}
else
planDis.AddRange(matchedProject.aimsProject.PlannedDisbursments);
}
}
matchedProject.aimsProject.transaction = trns.ToArray();
matchedProject.aimsProject.planneddisbursement = planDis.ToArray();
//add all child activities if any and delete all transaction from child activities because we only need child activities to update IsInclude field in database
matchedProject.aimsProject.childActivities = matchedProject.iatiActivity.childActivities;
matchedProject.aimsProject.childActivities.ForEach(f => f.transaction = null);
margedProjects.Add(matchedProject.aimsProject);
}
return margedProjects;
}