예제 #1
0
        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);
            }
        }
예제 #2
0
 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;
 }
예제 #3
0
        ///<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);
        }
예제 #4
0
        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;
            }
        }
예제 #5
0
        /// <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()));
            }
        }