Пример #1
0
        public async Task <Tag> Create(string name)
        {
            if (!ValidateTagName(name))
            {
                return(null);
            }

            var normalizedName = NormalizeTagName(name, _tagNormalization.Value);

            if (_tagRepo.Any(t => t.NormalizedName == normalizedName))
            {
                return(Get(normalizedName));
            }

            var newTag = new TagEntity
            {
                DisplayName    = name,
                NormalizedName = normalizedName
            };

            var tag = await _tagRepo.AddAsync(newTag);

            await _audit.AddAuditEntry(EventType.Content, AuditEventId.TagCreated,
                                       $"Tag '{tag.NormalizedName}' created.");

            return(new()
            {
                DisplayName = newTag.DisplayName,
                NormalizedName = newTag.NormalizedName
            });
        }
Пример #2
0
 public Task <IReadOnlyList <KeyValuePair <Tag, int> > > GetTagCountList()
 {
     return(_tagRepo.SelectAsync(t =>
                                 new KeyValuePair <Tag, int>(new()
     {
         Id = t.Id,
         DisplayName = t.DisplayName,
         NormalizedName = t.NormalizedName
     }, t.Posts.Count)));
 }
Пример #3
0
        public async Task <IReadOnlyList <KeyValuePair <Tag, int> > > GetHotTagsAsync(int top)
        {
            if (!_tagRepo.Any())
            {
                return(new List <KeyValuePair <Tag, int> >());
            }

            var spec = new TagSpec(top);
            var tags = await _tagRepo.SelectAsync(spec, t =>
                                                  new KeyValuePair <Tag, int>(new()
            {
                Id             = t.Id,
                DisplayName    = t.DisplayName,
                NormalizedName = t.NormalizedName
            }, t.Posts.Count));

            return(tags);
        }