private void UpdateMedia(CmsTags tag) { try { if (tag.TaggedMedia.Count > 0) { var mediaService = Current.Services.MediaService; var tagService = Current.Services.TagService; foreach (var med in tag.TaggedMedia) { var content = mediaService.GetById(med.DocumentId); var propertyAlias = content.Properties.FirstOrDefault(x => x.PropertyType.Id == tag.PropertyTypeId)?.Alias; var tags = tagService.GetTagsForEntity(med.DocumentId, tag.Group); IEnumerable <string> tagList = tags.Select(x => x.Text).ToList(); content.AssignTags(propertyAlias, tagList, true, tag.Group); mediaService.Save(content); } } } catch (Exception ex) { Logger.Error(typeof(TagManagerApiController), "Error in UpdateMedia:", ex); } }
public int Save(CmsTags tag) { var success = 0; try { using (var scope = _scopeProvider.CreateScope()) { success = scope.Database.Execute("Update cmsTags set tag = @0 where id = @1", tag.Tag, tag.Id); if (success == 1 && tag.Id != tag.TagsInGroup.SelectedItem.Id) { // Merge tags var sqlQuery1 = string.Format("Update cmsTagRelationship SET tagID = {0} WHERE tagID = {1} AND nodeId NOT IN (SELECT nodeId FROM cmsTagRelationship WHERE tagId = {0});", tag.TagsInGroup.SelectedItem.Id, tag.Id); success = scope.Database.Execute(sqlQuery1); // Delete tag var sqlQuery2 = $"DELETE FROM cmsTagRelationship WHERE tagId = {tag.Id};"; scope.Database.Execute(sqlQuery2); } UpdateDocuments(tag); UpdateMedia(tag); scope.Complete(); } } catch (Exception ex) { Logger.Error(typeof(TagManagerApiController), "Error in Save:", ex); } return(success); }
public CmsTags GetTagById(int tagId) { var tag = new CmsTags(); try { using (var scope = _scopeProvider.CreateScope()) { var query = new Sql().Select( $"id, tag, [group], propertytypeid, count(tagId) as noTaggedNodes FROM cmsTags LEFT JOIN cmsTagRelationship ON cmsTags.id = cmsTagRelationship.tagId Where cmsTags.Id = {tagId} GROUP BY tag, id, [group], propertytypeid;"); tag = scope.Database.Fetch <CmsTags>(query).FirstOrDefault(); var taggedDocs = GetTaggedDocumentNodeIds(tagId); if (tag != null) { tag.TaggedDocuments = taggedDocs; var taggedMedia = GetTaggedMediaNodeIds(tagId); tag.TaggedMedia = taggedMedia; var tagsInGroup = GetAllTagsInGroup(tagId); tag.TagsInGroup = tagsInGroup; } scope.Complete(); } } catch (Exception ex) { Logger.Error(typeof(TagManagerApiController), "Error in GetTagById:", ex); } return(tag); }
public int DeleteTag(CmsTags tag) { using (var scope = _scopeProvider.CreateScope()) { var sqlQuery1 = $"DELETE FROM cmsTagRelationship WHERE tagId = {tag.Id};"; scope.Database.Execute(sqlQuery1); scope.Complete(); } var success = 0; using (var scope = _scopeProvider.CreateScope()) { var sqlQuery2 = $"DELETE FROM cmsTags WHERE id = {tag.Id};"; success = scope.Database.Execute(sqlQuery2); scope.Complete(); } UpdateDocuments(tag); UpdateMedia(tag); return(success); }