public iOrgs GetAllImplementingOrg(FilterBDModel filterDBModel)
{
if (filterDBModel != null)
{
Sessions.filterBDModel.iatiActivities = filterDBModel.iatiActivities;
UpdateActivities(filterDBModel.iatiActivities, Sessions.activitiesContainer.iatiActivities);
}
//actual method begins here
var managingDPs = GetAllFundSources();
var iOrgs = new List<participatingorg>();
foreach (var activity in Sessions.activitiesContainer?.RelevantActivities)
{
if (activity.ImplementingOrgs != null)
iOrgs.AddRange(activity.ImplementingOrgs);
}
var distictOrgs = iOrgs.DistinctBy(l => l.Name).OrderBy(o => o.Name);
var exAgencies = aimsDAL.GetExecutingAgencies();
var returtResult = new iOrgs
{
Orgs = distictOrgs.ToList(),
FundSources = managingDPs,
ExecutingAgencyTypes = aimsDAL.GetExecutingAgencyTypes(),
ExecutingAgencies = exAgencies
};
Sessions.iOrgs = returtResult;
foreach (var org in distictOrgs)
{
//check for matching managing DP from AIMS
var managingDP = !string.IsNullOrWhiteSpace(org.@ref) ? managingDPs.FirstOrDefault(q => q.IATICode != null && q.IATICode.Contains(org.@ref)) : null;
//Add selected value
org.AllID = managingDP == null ? Sessions.DP.AllID : managingDP.AllID;
GuessAgency(org, false);
}
Sessions.CurrentStage = Stage.FilterDP;
return returtResult;
}