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; }); } }
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(); }
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; } }