/// <summary> /// Returns true always /// </summary> /// <returns></returns> public async Task <bool> SyncExpenses() { try { var expenses = await GetExpenses(); //syncs if we were offline foreach (var item in expenses) { //new item added while offline if (string.IsNullOrWhiteSpace(item.AzureId)) { await azureService.InsertExpenseAsync(item); item.IsDirty = false; db.SaveItem(item); } else if (item.IsDirty) //updated while offline { await azureService.UpdateExpenseAsync(item); item.IsDirty = false; db.SaveItem(item); } } //sync from online. var items = await azureService.GetExpensesAsync(); foreach (var expense in items) { var item = db.GetItem(expense.AzureId); if (item == null) { item = new Expense(expense); } else { item.SyncProperties(expense); } db.SaveItem(item); } } catch (Exception ex) { return(false); } return(true); }