Esempio n. 1
0
        // 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);
        }
Esempio n. 2
0
        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;
                    });
                }
            }
        }