コード例 #1
0
ファイル: EditTagViewModel.cs プロジェクト: MageXy/OmniTag
        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();
        }
コード例 #2
0
ファイル: EditOmniViewModel.cs プロジェクト: MageXy/OmniTag
        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();
        }