Exemplo n.º 1
0
 public Location MapJson2Location(LocationJson json)
 {
     return new Location()
     {
          Latitude = json.Lat,
          Longitude = json.Lon
     };
 }
Exemplo n.º 2
0
        public async Task <bool> SetHomeTownAsync(LocationJson loc)
        {
            var result = await RequestFactory.SetHomeTownRequestFactory().PerformActionAsync(payload: new SetLocationJson()
            {
                Location = loc
            });

            return(result);
        }
Exemplo n.º 3
0
        public static string GetLocationIdById(string Id)
        {
            var locationEntity = LocationJson.GetInstance();
            var region         = locationEntity.regionEntity.region.FirstOrDefault(x => x.id == Id);

            if (region != null)
            {
                return(region.id);
            }
            foreach (var reg in locationEntity.regionEntity.region)
            {
                foreach (var section in reg.section)
                {
                    if (section.id == Id)
                    {
                        return(section.id);
                    }
                }
            }
            throw new InvalidSettingException("Cannot find id in Region.json  id:" + Id);
        }
Exemplo n.º 4
0
        //依據名稱,取得region或section的id
        public static string GetLocationIdByName(string name)
        {
            var locationEntity = LocationJson.GetInstance();
            var region         = locationEntity.regionEntity.region.FirstOrDefault(x => x.txt == name);

            if (region != null)
            {
                return(region.id);
            }
            foreach (var reg in locationEntity.regionEntity.region)
            {
                foreach (var section in reg.section)
                {
                    if (section.name == name)
                    {
                        return(section.id);
                    }
                }
            }
            throw new InvalidSettingException("Cannot find name in Region.json  name:" + name);
        }
Exemplo n.º 5
0
        public static string GetMrtIdById(string Id)
        {
            var locationEntity = LocationJson.GetInstance();

            foreach (var mrt in locationEntity.mrtEntity.mrts)
            {
                foreach (var mrtline in mrt.mrtline)
                {
                    if (mrtline.sid == Id)
                    {
                        return(mrtline.sid);
                    }
                    foreach (var station in mrtline.station)
                    {
                        if (station.nid == Id)
                        {
                            return(station.nid);
                        }
                    }
                }
            }
            throw new InvalidSettingException("Cannot find id in MrtRegionId.json id:" + Id);
        }
Exemplo n.º 6
0
        public List <Region> ConvertFilterConditionToRegionList(RegionCondition condition)
        {
            //取出region跟mrt對照表
            var locationEntity = LocationJson.GetInstance();

            if (condition.Region.Count == 0 && condition.mrtcoods.Count == 0 && condition.Section.Count == 0)
            {
                throw new InvalidSettingException("Please choose Region or MrtCoods or Section in settings.conf");
            }
            //取出所選擇的縣市
            var regionList = locationEntity.regionEntity.region
                             .ToList()
                             .DeepClone <List <Region> >();


            for (int i = regionList.Count - 1; i >= 0; i--)
            {
                var currentRegion = regionList[i];
                //如果搜尋條件有指定此縣市底下的鄉鎮
                if (condition.Section.Intersect(currentRegion.section.Select(x => x.id)).Any())
                {
                    //移除其他沒被指定到的鄉鎮
                    currentRegion.section.RemoveAll(x => !condition.Section.Contains(x.id));
                }
                else
                {
                    //如果沒指定代表全選,刪掉所有鄉鎮,這樣才不會loop到
                    currentRegion.section.Clear();
                }

                //如果這縣市有捷運 再做捷運站判斷
                if (currentRegion.mrt != null)
                {
                    if (condition.mrtcoods.Count > 0)
                    {
                        //loop每個捷運線
                        for (int k = currentRegion.mrt.mrtline.Count - 1; k >= 0; k--)
                        {
                            //如果有選擇此捷運線的捷運站,刪掉其他沒選擇到的捷運站
                            var currentMrtLine = currentRegion.mrt.mrtline[k];
                            if (condition.mrtcoods.Intersect(currentMrtLine.station.Select(x => x.nid)).Any())
                            {
                                currentMrtLine.station.RemoveAll(x => !condition.mrtcoods.Contains(x.nid));
                            }
                            else
                            {
                                //刪掉此捷運線
                                currentRegion.mrt.mrtline.Remove(currentMrtLine);
                            }
                        }
                        //代表選擇的捷運站不在此捷運底下
                        if (currentRegion.mrt.mrtline.Count == 0)
                        {
                            currentRegion.mrt = null;
                        }
                    }
                    else
                    {
                        //沒選捷運站 直接拿掉此region的捷運
                        currentRegion.mrt = null;
                    }
                }

                //如果沒有選擇此region,又沒有選在這region底下的捷運或鄉鎮,就刪掉這個region
                if (currentRegion.section.Count == 0 && currentRegion.mrt == null &&
                    !condition.Region.Contains(currentRegion.id))
                {
                    regionList.Remove(currentRegion);
                }
            }
            return(regionList);
        }