/// Copy constructor public FundraisingMenuResult(FundraisingMenuResult from) { // Scalar data ProjectName = from.ProjectName; ProjectBriefDescription = from.ProjectBriefDescription; ProgramContact = from.ProgramContact; PhilanthropyContact = from.PhilanthropyContact; HubId = from.HubId; // List data ProjectPackage = from.ProjectPackage; GlobalChallenge = from.GlobalChallenge; Region = from.Region; Country = from.Country; ProjectKeyword = from.ProjectKeyword; ProjectFundraisingNeed = from.ProjectFundraisingNeed; }
private bool RecordMatch(FundraisingMenuResult r, DataTableParameters query) { IEnumerable<ColumnData> validColumns = query.columns.Where(c => !String.IsNullOrEmpty(c.data)); // Check for a column search value match. IEnumerable<ColumnData> columnsWithQueries = validColumns .Where(c => !String.IsNullOrEmpty(c.search.value)); bool filterMatch = columnsWithQueries.Count() == 0 || columnsWithQueries.Select(delegate(ColumnData c) { bool match = false; SearchParameters searchParams = JsonConvert.DeserializeObject<SearchParameters>(c.search.value); if (searchParams.payload.Count > 0) { if (_dataMap.ContainsKey(c.data)) { foreach (string searchValue in searchParams.payload) { match = match || _dataMap[c.data].TextSearchMatch(searchValue, r); } } } return match; }).Aggregate(false, (a, b) => a || b); // Check for a text search value match in all columns bool textSearchMatch = String.IsNullOrEmpty(query.search.value) || validColumns.Select(delegate(ColumnData c) { return _dataMap.ContainsKey(c.data) && _dataMap[c.data].TextSearchMatch(query.search.value, r); }).Aggregate(false, (a, b) => a || b); return filterMatch && textSearchMatch; }
/// <summary> /// Duplicate records by package entry. This ensures we will see /// one project entry per package relationship and that every /// package is displayed on the front end. /// </summary> /// <param name="list"></param> /// <returns></returns> private List<FundraisingMenuResult> ExpandByPackage(List<FundraisingMenuResult> list) { // Map the input list to a list of lists, each of which // contains a single association between a FundraisingMenuResult // and a singleton ProjectPackageDto list. Once the mapping is done, // we flatten the nested list back into a single list. The result // of this operation is a single list of FundraisingMenuResults // that has been expanded to include extra entries, with one // entry per project-package relationship. return list.Select(delegate(FundraisingMenuResult i) { return i.ProjectPackage.Select(delegate(ProjectPackageDto p) { FundraisingMenuResult result = new FundraisingMenuResult(i); result.ProjectPackage = new List<ProjectPackageDto>() { p }; return result; }); }).SelectMany(i => i).ToList(); }