Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }