Esempio n. 1
0
 private void SetThumb(SongList list, UploadedFileContract uploadedFile)
 {
     if (uploadedFile != null)
     {
         var thumb = new EntryThumbMain(list, uploadedFile.Mime);
         list.Thumb = thumb;
         var thumbGenerator = new ImageThumbGenerator(imagePersister);
         thumbGenerator.GenerateThumbsAndMoveImage(uploadedFile.Stream, thumb, SongList.ImageSizes, originalSize: Constants.RestrictedImageOriginalSize);
     }
 }
Esempio n. 2
0
        public TagBaseContract Update(TagForEditContract contract, UploadedFileContract uploadedImage)
        {
            ParamIs.NotNull(() => contract);

            PermissionContext.VerifyPermission(PermissionToken.EditTags);

            return(_repository.HandleTransaction(ctx =>
            {
                var tag = LoadTagById(ctx, contract.Id);

                _permissionContext.VerifyEntryEdit(tag);

                var diff = new TagDiff();

                if (tag.CategoryName != contract.CategoryName)
                {
                    diff.CategoryName.Set();
                }

                diff.Description.Set(tag.Description.CopyFrom(contract.Description));

                if (tag.HideFromSuggestions != contract.HideFromSuggestions)
                {
                    diff.HideFromSuggestions.Set();
                }

                if (tag.Targets != contract.Targets)
                {
                    diff.Targets.Set();
                }

                if (tag.TranslatedName.DefaultLanguage != contract.DefaultNameLanguage)
                {
                    tag.TranslatedName.DefaultLanguage = contract.DefaultNameLanguage;
                    diff.OriginalName.Set();
                }

                var nameDiff = SyncNames(ctx.OfType <TagName>(), tag, contract.Names);

                if (nameDiff.Changed)
                {
                    diff.Names.Set();
                }

                if (!Tag.Equals(tag.Parent, contract.Parent))
                {
                    var newParent = GetRealTag(ctx, contract.Parent, tag);

                    if (!Equals(newParent, tag.Parent))
                    {
                        diff.Parent.Set();
                        tag.SetParent(newParent);
                    }
                }

                var relatedTagsDiff = tag.SyncRelatedTags(contract.RelatedTags, tagId => ctx.Load(tagId));
                ctx.Sync(relatedTagsDiff);
                diff.RelatedTags.Set(relatedTagsDiff.Changed);

                var webLinkDiff = tag.WebLinks.Sync(contract.WebLinks, tag);
                ctx.OfType <TagWebLink>().Sync(webLinkDiff);

                if (webLinkDiff.Changed)
                {
                    diff.WebLinks.Set();
                }

                if (tag.Status != contract.Status)
                {
                    diff.Status.Set();
                }

                tag.CategoryName = contract.CategoryName;
                tag.HideFromSuggestions = contract.HideFromSuggestions;
                tag.Status = contract.Status;
                tag.Targets = contract.Targets;

                if (uploadedImage != null)
                {
                    diff.Picture.Set();

                    var thumb = new EntryThumbMain(tag, uploadedImage.Mime);
                    tag.Thumb = thumb;
                    var thumbGenerator = new ImageThumbGenerator(_imagePersister);
                    thumbGenerator.GenerateThumbsAndMoveImage(uploadedImage.Stream, thumb, Tag.ImageSizes, originalSize: Constants.RestrictedImageOriginalSize);
                }

                var logStr = $"updated properties for tag {_entryLinkFactory.CreateEntryLink(tag)} ({diff.ChangedFieldsString})";
                ctx.AuditLogger.AuditLog(logStr);

                var archived = Archive(ctx, tag, diff, EntryEditEvent.Updated, contract.UpdateNotes);
                AddEntryEditedEntry(ctx.OfType <ActivityEntry>(), tag, EntryEditEvent.Updated, archived);

                ctx.Update(tag);

                return new TagBaseContract(tag, LanguagePreference);
            }));
        }