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); } }
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); })); }