public static string GetAreaName(this TreeListRow row, AreaFilter areaFilter) { switch (row.Level) { case 0: //country return(LOVResources.CountryName(row.Code)); case 1: //River absin district or NUTS { AreaFilter.RegionType type = areaFilter.TypeRegion; if (type == AreaFilter.RegionType.RiverBasinDistrict) { return(LOVResources.RiverBasinDistrictName(row.Code)); } else { return(LOVResources.NutsRegionName(row.Code)); } } default: return(string.Empty); } }
public AreaTreeListRow(string countryCode, string subAreaCode, AreaFilter.RegionType regionType, string pollutantCode, int facilities, double quantity, bool hasChildren) : base(countryCode, subAreaCode, regionType, hasChildren) { this.PollutantCode = pollutantCode; this.Facilities = facilities; this.Quantity = quantity; this.Unit = CODE_KG; }
///<summary> ///Return all subareas (level 1) that fullfill search criteria. ///If countryCodes are null, all subareas will be returned. If countryCodes is empty no subareas will be returned. ///</summary> public static IEnumerable <AreaTreeListRow> GetSubAreas(PollutantTransfersSearchFilter filter, List <string> countryCodes) { if (countryCodes != null && countryCodes.Count() == 0) { return(new List <AreaTreeListRow>()); } DataClassesPollutantTransferDataContext db = getPollutantTransferDataContext(); Expression <Func <POLLUTANTTRANSFER, bool> > lambda = getActivityAreaLambda(filter); //add countries to expression if (countryCodes != null) { ParameterExpression param = lambda.Parameters[0]; Expression countryExp = LinqExpressionBuilder.GetInExpr(param, "CountryCode", countryCodes); Expression exp = LinqExpressionBuilder.CombineAnd(lambda.Body, countryExp); lambda = Expression.Lambda <Func <POLLUTANTTRANSFER, bool> >(exp, param); } //find data for sub-activity level, this level never has children. AreaFilter.RegionType regionType = filter.AreaFilter.TypeRegion; bool isRbd = AreaFilter.RegionType.RiverBasinDistrict.Equals(regionType); IEnumerable <AreaTreeListRow> subareas = db.POLLUTANTTRANSFERs.Where(lambda) .GroupBy(p => new { CountryCode = p.CountryCode, SubAreaCode = isRbd ? p.RiverBasinDistrictCode : p.NUTSLevel2RegionCode, PollutantCode = p.PollutantCode }) .Select(x => new AreaTreeListRow( x.Key.CountryCode, !x.Key.SubAreaCode.Equals(null) ? x.Key.SubAreaCode : AreaTreeListRow.CODE_UNKNOWN, regionType, x.Key.PollutantCode, x.Count(), x.Sum(p => p.Quantity), false)); return(subareas); }
public AreaTreeListRow(string countryCode, string regionCode, AreaFilter.RegionType regionType, bool hasChildren) { this.CountryCode = countryCode; this.RegionCode = regionCode; this.RegionType = regionType; this.HasChildren = hasChildren; this.IsExpanded = false; //set properties for backward compability if (!String.IsNullOrEmpty(regionCode)) { base.Level = 1; base.Code = regionCode; base.ParentCode = countryCode; } else { this.Level = 0; base.Code = countryCode; base.ParentCode = null; } }
/// <summary> /// Group by depending on the region type /// </summary> public static IQueryable <IGrouping <TreeListRowGroupByKey, WASTETRANSFER> > GroupBy(this IQueryable <WASTETRANSFER> source, AreaFilter.RegionType regionType) { switch (regionType) { case AreaFilter.RegionType.NUTSregion: return(source.GroupBy(p => new TreeListRowGroupByKey { Code = p.NUTSLevel2RegionCode, ParentCode = p.CountryCode })); case AreaFilter.RegionType.RiverBasinDistrict: return(source.GroupBy(p => new TreeListRowGroupByKey { Code = p.RiverBasinDistrictCode, ParentCode = p.CountryCode })); default: throw new ArgumentOutOfRangeException("RegionType", String.Format("Illegal region type:{0}", regionType.ToString())); } }