protected void SyncPrompts(IEnumerable <MoodPromptModel> prompts) { if (prompts != null) { var delete = MoodPrompt.List().Where(mp => !prompts.Any(p => p.Id == mp.Id)).ToList(); foreach (var p in delete) { var r = p.Response; if (p.Response.Mood == null) { r.Delete(); } else { r.Prompt = null; r.Save(); } p.Delete(); } foreach (var p in prompts) { MoodPrompt prompt = MoodPrompt.ReadSafe(p.Id); if (prompt == null) { prompt = MoodPrompt.New(); prompt.Id = p.Id.ToString(); prompt.Save(); MoodResponse response = MoodResponse.New(); response.Id = System.Guid.NewGuid().ToString(); response.Prompt = prompt; response.TimeStamp = p.Activity.TimeStamp; response.Save(); } prompt.Name = p.Name; prompt.NotificationText = p.NotificationText; prompt.Title = p.Activity.Title; prompt.TimeStamp = p.Activity.TimeStamp; prompt.ActiveFrom = p.ActiveFrom; prompt.ActiveTil = p.ActiveTil; prompt.Response.TimeStamp = prompt.TimeStamp; prompt.Response.Save(); prompt.Save(); } } }