private async void cancelCommandAsync(object obj) { //bool delete = await UserDialogs.Instance.ConfirmAsync(new ConfirmConfig() { Message = CommonResource.Route_DeleteAllTracksFromMessage, Title = CommonResource.CommonMsg_Warning, OkText = CommonResource.CommonMsg_Yes, CancelText = CommonResource.CommonMsg_No }); bool delete = await UserDialogs.Instance.ConfirmAsync(new ConfirmConfig() { Message = "Удалить треки из маршрута?", Title = CommonResource.CommonMsg_Warning, OkText = CommonResource.CommonMsg_Yes, CancelText = CommonResource.CommonMsg_No }); if (delete) { string currentUserToken = await _tokenService.GetAuthTokenAsync(); TrackRouteRequest trackRequest = new TrackRouteRequest(currentUserToken); //trackRequest.RemoveAllTracksFromRoute(_routeId); _trackFileManager.RemoveAllTracksFromRoute(_routeId); await Navigation.PopModalAsync(); } }
private async Task <bool> tryParseAndGetTrackAsync(string filename, string routeId) { RouteTracking trackResponse = new RouteTracking(); TokenStoreService tokenService = new TokenStoreService(); string currentUserToken = await tokenService.GetAuthTokenAsync(); TrackRouteRequest sendTrackRequest = new TrackRouteRequest(currentUserToken); bool sendResult = await sendTrackRequest.SendTrackFileAsync(filename, routeId); if (sendResult) { trackResponse = await sendTrackRequest.GetTrackPlacesAsync(routeId); if (trackResponse.Places.Length > 0) { var viewTrackPlaces = sendTrackRequest.GetViewTrackPlaces(trackResponse.Places); _trackFileManager.SaveTrack(routeId, viewTrackPlaces); } } return(sendResult && trackResponse.Places.Length > 0); }
public async Task <bool> SyncAsync(string routeServerHash, bool loadOnlyPreviewImg = false) { var localRoute = _routeManager.GetViewRouteById(_routeId); //новый маршрут if (string.IsNullOrEmpty(routeServerHash)) { bool updateResult = await updateRoute(routeServerHash, new RouteRoot() { Route = new SharedModelsWS.Route() { Version = -1 } }, localRoute); _log.AddStringEvent($"route {_routeId}, create result:{updateResult}"); } //независимо от того, новый маршрут или нет, проверяем, что изменилось - придется пройтись по всему маршруту и узнать RouteRoot routeRoot = await _routesApi.GetRouteRoot(_routeId); bool AuthRequired = (_routesApi.GetLastHttpStatusCode() == HttpStatusCode.Forbidden || _routesApi.GetLastHttpStatusCode() == HttpStatusCode.Unauthorized); if ((!AuthRequired) && (routeRoot != null)) { bool updateResult = await updateRoute(routeServerHash, routeRoot, localRoute); if (!updateResult) { return(false); } if (!localRoute.IsDeleted) { updateResult = await updatePoints(routeRoot); if (!updateResult) { return(false); } List <ViewRoutePointMediaObject> mediaForDownload = new List <ViewRoutePointMediaObject>(); List <ViewRoutePointMediaObject> mediaForUpload = new List <ViewRoutePointMediaObject>(); (updateResult, mediaForUpload, mediaForDownload) = await updateMedias(routeRoot); if (!updateResult) { return(false); } if (mediaForDownload.Count > 0) { await downloadMedias(mediaForDownload, loadOnlyPreviewImg); } if (mediaForUpload.Count > 0) { await uploadMedias(mediaForUpload); } TrackRouteRequest trackRequest = new TrackRouteRequest(_authToken); var trackResponse = await trackRequest.GetTrackPlacesAsync(_routeId); if ((trackResponse != null) && (trackResponse.Places.Any())) { _trackFileManager.RemoveAllTracksFromRoute(_routeId); var viewTrackPlaces = trackRequest.GetViewTrackPlaces(trackResponse.Places); _trackFileManager.SaveTrack(_routeId, viewTrackPlaces); } } } else { return(false); } var serverHash = await _routesApi.UpdateHash(_routeId); if (_routesApi.LastHttpStatusCode == HttpStatusCode.OK) { var updatedLocalRoute = _routeManager.GetViewRouteById(_routeId); updatedLocalRoute.ServerSynced = true; updatedLocalRoute.ObjVerHash = HashManager.Generate(getVersionsForRoute(updatedLocalRoute).ToString()); if (updatedLocalRoute.ObjVerHash.Equals(serverHash)) { _log.AddStringEvent($"set route {_routeId}, versions {serverHash}"); updatedLocalRoute.Save(); } else { _log.AddStringEvent($"failed set route {_routeId}, versions {serverHash}"); HandleError.Process("SyncRoute", "ErrorUpdateHash", new Exception("Client and Server hash different"), false, $"server:[{serverHash}], client:[{updatedLocalRoute.ObjVerHash}]"); } if (updatedLocalRoute.IsDeleted) { _log.AddStringEvent($"set delete route {_routeId}"); deleteRouteContain(updatedLocalRoute); } } else { HandleError.Process("SyncRoute", "ErrorUpdateHash", new Exception("Http error:" + _routesApi.LastHttpStatusCode.ToString()), false); } return(true); }