private void SaveTagInfo() { if (!ChangesMade) { return; } if ((SelectedTag != null) && (SelectedTag.Name != SelectedTagName)) { SelectedTag.Name = SelectedTagName; SelectedTag.LastModifiedDate = DateTime.Now; } if ((SelectedTag != null) && (SelectedTag.Description != SelectedTagDescription)) { SelectedTag.Description = SelectedTagDescription; SelectedTag.LastModifiedDate = DateTime.Now; } if ((SelectedTag != null) && ((SelectedTag.IsVerified != IsSelectedTagVerified) || (SelectedTag.ManuallyVerified != IsSelectedTagManuallyVerified))) { SelectedTag.IsVerified = IsSelectedTagVerified ?? false; SelectedTag.ManuallyVerified = IsSelectedTagManuallyVerified ?? false; SelectedTag.LastModifiedDate = DateTime.Now; } foreach (var tag in AddedTags) { tag.LastModifiedDate = DateTime.Now; } foreach (var tag in DeletedTags) { tag.LastModifiedDate = DateTime.Now; } // "Hard save" all changes made to all tags into the database. Context.Tags.AddRange(AddedTags); Context.SaveChanges(); SelectedTagLastUpdatedTime = DateTime.Now; AddedTags.Clear(); DeletedTags.Clear(); ChangesMade = false; OnDataChanged(); }
private void SaveOmni() { if (!ChangesMade) { return; } if (OmniTags.Count == 0) { var result = MessageBox.Show("This Omni is not associated with any tags. This will prevent it from " + "being listed if any tag filters are chosen during searches.\n\n" + "Are you sure you want to continue " + "without associating a tag?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); if (result == MessageBoxResult.No) { return; } } if (CurrentOmni.Summary != OmniSummary) { if (OmniSummary.Length > 100) { MessageBox.Show("Omni summary cannot be longer than 100 characters (including spaces). The current " + $"length of the summary is {OmniSummary.Length} characters.", "Error", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); return; } CurrentOmni.Summary = OmniSummary; CurrentOmni.LastModifiedDate = DateTime.Now; } if (CurrentOmni.Description != OmniDescription) { CurrentOmni.Description = OmniDescription; CurrentOmni.LastModifiedDate = DateTime.Now; foreach (var imageFileName in CurrentOmni.Images.Select(i => i.FileName).ToList()) { if (!CurrentOmni.Description.Contains(imageFileName.Replace(" ", "%20"))) { var img = Context.Images.Single(i => i.FileName == imageFileName); Context.Images.Remove(img); } } } if (!OmniTags.IsEqualTo(CurrentOmni.Tags)) { CurrentOmni.Tags = OmniTags; CurrentOmni.LastModifiedDate = DateTime.Now; } foreach (var tag in AddedTags) { Context.Tags.Add(tag); CurrentOmni.LastModifiedDate = DateTime.Now; if (tag.Omnis.Count >= _autoVerifyThreshold) { tag.IsVerified = true; } } AddedTags.Clear(); foreach (var tag in DeletedTags) { if ((!tag.ManuallyVerified) && (tag.Omnis.Count < _autoVerifyThreshold)) { tag.IsVerified = false; } // If an unverified tag isn't being used, we delete it since the user hasn't marked the tag as important. if ((!tag.ManuallyVerified) && (tag.Omnis.Count == 1)) // use 1 here to represent the current tag and no others { tag.DateDeleted = DateTime.Now; } CurrentOmni.LastModifiedDate = DateTime.Now; } DeletedTags.Clear(); if (_isNewOmni) { Context.Omnis.Add(CurrentOmni); } Context.SaveChanges(); foreach (var tag in OmniTags) { if (tag.Omnis.Count >= _autoVerifyThreshold) { tag.IsVerified = true; } } Context.SaveChanges(); ChangesMade = false; _isNewOmni = false; CurrentOmniLastUpdatedTime = CurrentOmni.LastModifiedDate; OnDataChanged(); }