internal async void CreateOrUpdateEntryOwnerAsync(Models.EntryOwner entryOwner) { if (entryOwner.EntryOwnerID != 0) { var result = await Connection.UpdateAsync(entryOwner); } else { // if an entry with the same name exist, don't add it again. var potentialExisting = LookupEntryOwner(entryOwner.OwnerName); if (potentialExisting?.OwnerName != entryOwner.OwnerName) { var result = Connection.InsertAsync(entryOwner); var lookup = LookupEntryOwner(entryOwner.OwnerName); if (lookup?.EntryOwnerID > 0) { entryOwner.EntryOwnerID = lookup.EntryOwnerID; } } else { entryOwner = potentialExisting; return; } } Debug.WriteLine(string.Format("EntryOwnerID {0} 0", entryOwner.EntryOwnerID == 0 ? "is" : "is not"), "Diagnostic"); if (entryOwner.EntryOwnerID != 0) { foreach (var item in entryOwner.BloodSugarEntries) { item.EntryOwnerID = entryOwner.EntryOwnerID; var updateBloodSugarEntry = CreateOrUpdateBloodSugarEntryAsync(item); } foreach (var item in entryOwner.Stats) { item.EntryOwnerID = entryOwner.EntryOwnerID; var updateStatsEntry = CreateOrUpdateStats(item); } } }
/// <summary> /// links a collection of BloodSugarEntries to an EntryOwner object /// </summary> /// <param name="entryOwner">entryOwner to collection information for</param> internal async void GetChildEntriesAsync(Models.EntryOwner entryOwner) { entryOwner.Loading = true; List <Models.BloodSugarEntry> childEntries = await Connection.Table <Models.BloodSugarEntry>().Where(e => e.EntryOwnerID == entryOwner.EntryOwnerID).ToListAsync(); if (childEntries == null) { Debug.WriteLine("No records returned from Query."); } else { Debug.WriteLine("{0} records returned from blood sugar entries query for {1}", childEntries.Count, entryOwner.OwnerName); } foreach (var entry in childEntries) { entry.Owner = entryOwner; entryOwner.BloodSugarEntries.Add(entry); } entryOwner.Loading = false; }
internal void GetChildStats(Models.EntryOwner entryOwner) { var result = Connection.Table <Models.BloodSugarStat>().Where(stat => stat.EntryOwnerID == entryOwner.EntryOwnerID).ToListAsync(); var childStats = result.Result; if (childStats == null) { Debug.WriteLine("No records returned in stat query for {0}", entryOwner.OwnerName); } else { Debug.WriteLine("{0} records returned in stat query for {1}.", childStats.Count(), entryOwner.OwnerName); } foreach (var item in childStats) { item.Owner = entryOwner; entryOwner.Stats.Add(item); } }
internal async void DeleteEntryOwner(Models.EntryOwner entryOwner) { await Connection.DeleteAsync(entryOwner); }