AIMS_BD_IATI.DAL.ImportLogic.MergeProjects C# (CSharp) Method

MergeProjects() public static method

public static MergeProjects ( List matchedProjects ) : List
matchedProjects List
return List
        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;
        }