private async Task <bool> downloadPoiImgAsync(PoiApiRequest api, ViewPoi viewPoi)
        {
            bool result = false;

            if (!string.IsNullOrEmpty(viewPoi.ImgFilename))
            {
                string pathToImg = Path.Combine(ImagePathManager.GetPicturesDirectory(), viewPoi.ImgFilename);
                string mapMarkerPreviewFilename = "map_" + viewPoi.ImgFilename;
                string pathToImgMarker          = Path.Combine(ImagePathManager.GetPicturesDirectory(), mapMarkerPreviewFilename);
                if (!File.Exists(pathToImg) && (!string.IsNullOrEmpty(viewPoi.ImgFilename)))
                {
                    result = await api.DownloadImg(viewPoi.Id, pathToImg);
                }
                if (!File.Exists(pathToImgMarker) && File.Exists(pathToImg))
                {
                    int sizeMarkerDivider       = 3;//примерный делитель для получения более менее видимого маркера
                    int sizeMarker              = Convert.ToInt32(DeviceSize.FullScreenHeight / sizeMarkerDivider);
                    ImagePreviewManager preview = new ImagePreviewManager();
                    preview.PreviewHeight  = sizeMarker;
                    preview.PreviewWidth   = sizeMarker;
                    preview.PreviewQuality = 30;
                    preview.CreateImagePreview(ImagePathManager.GetPicturesDirectory(), viewPoi.ImgFilename, ImagePathManager.GetPicturesDirectory(), mapMarkerPreviewFilename);
                }
            }
            return(result);
        }
        private async Task refreshPoisAsync()
        {
            string token = await _tokenService.GetAuthTokenAsync();

            string userId = await _tokenService.GetUserIdAsync();

            if (!string.IsNullOrEmpty(token))
            {
                IsPoisLoaded = false;
                IsLoadingPoi = true;
                PoiApiRequest poiApi = new PoiApiRequest(token);
                var           pois   = await poiApi.GetMyPoisAsync();

                PoiManager poiManager = new PoiManager();
                pois.ForEach(p =>
                {
                    ViewPoi poi = new ViewPoi(p);
                    poi.Save();
                });
                _pois = poiManager.GetAllAvailablePois(userId);
                await Task.WhenAll(_pois.Select(async p => await downloadPoiImgAsync(poiApi, p)));

                MainThread.BeginInvokeOnMainThread(() =>
                {
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("POIs"));
                    IsPoisLoaded = !IsPoisLoaded;
                    IsLoadingPoi = !IsLoadingPoi;
                });
            }
        }
Пример #3
0
        private async void deleteCommand(object obj)
        {
            PoiApiRequest poiApi       = new PoiApiRequest(_authToken);
            bool          resultDelete = await poiApi.DeleteAsync(_vpoi.Id);

            if (resultDelete)
            {
                deletePoi();
                MessagingCenter.Send <PoiUpdatedMessage>(new PoiUpdatedMessage()
                {
                    PoiId = _vpoi.Id
                }, string.Empty);
            }
            await Navigation.PopModalAsync();
        }
Пример #4
0
        private async void updatePoiCommand(object obj)
        {
            string resultValidateText = getValidatePoiText();

            if (string.IsNullOrEmpty(resultValidateText))
            {
                PoiApiRequest poiApi = new PoiApiRequest(_authToken);
                _vpoi.UpdateDate = DateTimeOffset.Now;
                bool resultUpload = await poiApi.UploadPoiAsync(_vpoi.GetJsonStructure());

                if (resultUpload)
                {
                    applyChanges();

                    string msgText = CommonResource.PoiMsg_Warning;
                    if (!string.IsNullOrEmpty(_vpoi.ByRouteId))
                    {
                        var route = new ViewRoute(_vpoi.ByRouteId);
                        if ((!route.IsPublished) && (_vpoi.IsPublished))
                        {
                            msgText = CommonResource.PoiMsg_RouteAvailableOnlyForMe;
                        }
                    }

                    MessagingCenter.Send <PoiUpdatedMessage>(new PoiUpdatedMessage()
                    {
                        PoiId = _vpoi.Id
                    }, string.Empty);
                    MainThread.BeginInvokeOnMainThread(() =>
                    {
                        UserDialogs.Instance.Alert(msgText, CommonResource.PoiMsg_Saved, CommonResource.CommonMsg_Ok);
                    });


                    await Navigation.PopModalAsync();
                }
            }
            else
            {
                MainThread.BeginInvokeOnMainThread(() =>
                {
                    UserDialogs.Instance.Alert(resultValidateText, CommonResource.CommonMsg_Warning, CommonResource.CommonMsg_Ok);
                });
            }
        }
        private async Task updatePoiStatusAsync()
        {
            if (!_newPoint)
            {
                TokenStoreService tokenService = new TokenStoreService();
                string            authToken    = await tokenService.GetAuthTokenAsync();

                PoiApiRequest poiApi = new PoiApiRequest(authToken);
                var           wsPoi  = await poiApi.GetPoiByRoutePointIdAsync(_vpoint.Id);

                if (poiApi.LastHttpStatusCode == HttpStatusCode.OK)
                {
                    _vPoi = new ViewPoi(wsPoi);
                    _vPoi.Save();
                    IsPoiExists = true;
                }
            }
            else
            {
                IsPoiExists = false;
            }
        }