// Sync the specified model type using the Realm db and rest services public async Task SyncGet(string token) { var restService = new Services.Rest.Base.Core <TModel>(TargetApi); var items = await restService.GetAsync(token); await SyncGet(items); }
public async Task SyncPost(string token) { var realmService = new AsyncRealm <TModel>(); var realmResults = realmService.GetRealmResults(); var items = realmResults.Where(x => !x.Synced).ToList(); var restService = new Services.Rest.Base.Core <TModel>(TargetApi); for (var i = 0; i < items.Count; i++) { if (items[i] == null) { continue; } await UpdateModel(items[i].LocalId); HttpResponseMessage reply; try { reply = await restService.PostAsync(items[i], token); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); continue; } if (reply == null) { continue; } var response = await restService.ParseHttpResponse(reply); if (response.ResultCode == ResultCode.InsertSuccessful || response.ResultCode == ResultCode.UpdateSuccessful) { var model = await restService.ParseResponseItem(reply); var id = model.Id; var itemLocalId = items[i].LocalId; await realmService.WriteAsync(tempRealm => { var localItem = tempRealm.Get(itemLocalId); localItem.Id = id; localItem.Synced = true; }); } } }