AnyPlace.MainPage.serchBuildStart C# (CSharp) Method

serchBuildStart() private method

private serchBuildStart ( string bid, string pid ) : Task
bid string
pid string
return Task
        private async Task<bool> serchBuildStart(string bid, string pid)
        {
            bool foundb = false;
            bool foundpoi = false;
            foreach (var obj in _worldbuildings.buildings)
            {
                if (obj.buid.Equals(bid))
                {
                    foundb = true;
                    var floor_num = "";
                    var lat = double.Parse(obj.coordinates_lat, CultureInfo.InvariantCulture);
                    var lon = double.Parse(obj.coordinates_lon, CultureInfo.InvariantCulture);

                    var settings1 = IsolatedStorageFile.GetUserStoreForApplication();

                    if (settings1.DirectoryExists(bid) && checkCompleted(bid))
                    {
                        // load staff to the map
                        clear();
                        ReadAllBuildingFloorsFromIsolatedStorage(bid);
                        ReadPoisByBuildingFromIsolatedStorage(bid);
                        addBuildingsToMap(bid);

                        buildLoaded = true;
                        loadBuidingToMap(bid);
                        createAppBarMenuItem();
                    }
                    else
                    {

                        isDownloading = true;
                        //ApplicationBar.IsVisible = false;
                        //downloading.Visibility = Visibility.Visible;

                        loading.Visibility = Visibility.Visible;
                        loading.IsIndeterminate = true;

                        clear();
                        // download staff and show them to the map
                        var fsdf = await DownloadPoisBuildStaff(bid);
                        ReadAllBuildingFloorsFromIsolatedStorage(bid);
                        ReadPoisByBuildingFromIsolatedStorage(bid);

                        addBuildingsToMap(bid);

                        buildLoaded = true;
                        loadBuidingToMap(bid);

                        loading.Visibility = Visibility.Collapsed;
                        loading.IsIndeterminate = false;

                        createAppBarMenuItem();

                        isDownloading = false;
                    }

                    if (_poisByBuilding != null)
                    {
                        foreach (var obj2 in _poisByBuilding.pois)
                        {
                            if (obj2.buid.Equals(bid))
                            {
                                if (pid.Equals("none"))
                                {
                                    if (obj2.is_building_entrance != null)
                                        if (obj2.is_building_entrance.Equals("true"))
                                        {
                                            entrance_location = new GeoCoordinate(lat, lon);
                                            floor_num = obj2.floor_number;
                                            pid = obj2.puid;
                                            to_entrance = true;
                                        }

                                }
                                else
                                    if (obj2.puid.Equals(pid))
                                    {
                                        floor_num = obj2.floor_number;
                                        to_entrance = false;
                                    }
                                foundpoi = true;
                            }

                        }
                    }


                    if (!foundpoi)
                        return false;

                    _floorPoiTo = pid;
                    _floorPoiToNumber = floor_num;
                    _floorPoiToLocation = new GeoCoordinate(lat, lon);

                    if (_tilesCheck)
                    {
                        _buildingSearch = obj.buid;
                        _wmstileprovider.setBuidAndFloor(obj.buid, floor_num);
                        if (!Mymap.TileSources.Contains(_wmstileprovider))
                            Mymap.TileSources.Add(_wmstileprovider);
                        _selectedBuild = obj.buid;
                        _selectedFloor = floor_num;

                        Dispatcher.BeginInvoke(() =>
                        {
                            txt_cur.Text = _selectedFloor;
                        });

                        ViewPoisByBuilding();
                    }
                    else
                    {
                        Mymap.TileSources.Clear();

                        _selectedBuild = obj.buid;
                        _selectedFloor = floor_num;
                        Dispatcher.BeginInvoke(() =>
                        {
                            txt_cur.Text = _selectedFloor;
                        });

                        ViewPoisByBuilding();
                    }

                    ApplicationBar.IsVisible = true;
                    //Mymap.SetView(new GeoCoordinate(lat, lon), 20);

                    SystemTray.IsVisible = false;

                    _foundBuilding = true;
                    break;
                }
            }
            return true;
        }
MainPage