Ejemplo n.º 1
0
        /// <summary>
        /// 内容处理
        /// </summary>
        /// <param name="body">待处理内容</param>
        /// <param name="associateId">待处理相关项Id</param>
        /// <param name="userId">相关项作者</param>
        /// <param name="ownerId">拥有者Id</param>
        /// <returns></returns>
        public string Process(string body, string ownerTenantTypeId, long associateId, long userId, long ownerId)
        {
            string tenantTypeId = TenantTypeIds.Instance().Microblog();
            AtUserService atUserService = new AtUserService(tenantTypeId);
            body = atUserService.ResolveBodyForDetail(body, associateId, userId, AtUserTagGenerate);

            TagService tagService = new TagService(tenantTypeId);

            Func<KeyValuePair<string, long>, long, string> topicTagGenerate = delegate(KeyValuePair<string, long> _tagNameWithId, long _ownerId)
            {
                return string.Format("<a href=\"{1}\">#{0}#</a>", _tagNameWithId.Key, MicroblogUrlGetterFactory.Get(ownerTenantTypeId).TopicDetail(_tagNameWithId.Key.Trim(), _ownerId));
            };

            body = tagService.ResolveBodyForDetail(body, associateId, ownerId, topicTagGenerate);

            body = body.Replace("\n", "<br/>");

            EmotionService emotionService = DIContainer.Resolve<EmotionService>();
            body = emotionService.EmoticonTransforms(body);

            ParsedMediaService parsedMediaService = DIContainer.Resolve<ParsedMediaService>();
            body = parsedMediaService.ResolveBodyForDetail(body, associateId, userId, UrlTagGenerate);

            return body;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// MicroblogEntity转换成<see cref="Lucene.Net.Documents.Document"/>
        /// </summary>
        /// <param name="microblog">微博实体</param>
        /// <returns>Lucene.Net.Documents.Document</returns>
        public static Document Convert(MicroblogEntity microblog)
        {
            Document doc = new Document();
            //索引微博基本信息
            doc.Add(new Field(MicroblogIndexDocument.MicroblogId, microblog.MicroblogId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            if (microblog.OriginalMicroblog != null)
            {
                doc.Add(new Field(MicroblogIndexDocument.Body, HtmlUtility.StripHtml(microblog.Body, true, false).ToLower() + HtmlUtility.StripHtml(microblog.OriginalMicroblog.Body, true, false).ToLower(), Field.Store.NO, Field.Index.ANALYZED));
            }
            else
            {
                doc.Add(new Field(MicroblogIndexDocument.Body, HtmlUtility.StripHtml(microblog.Body, true, false).ToLower(), Field.Store.NO, Field.Index.ANALYZED));
            }
            doc.Add(new Field(MicroblogIndexDocument.DateCreated, DateTools.DateToString(microblog.DateCreated, DateTools.Resolution.MILLISECOND), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(MicroblogIndexDocument.HasMusic, microblog.HasMusic ? "1" : "0", Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(MicroblogIndexDocument.HasPhoto, microblog.HasPhoto ? "1" : "0", Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(MicroblogIndexDocument.HasVideo, microblog.HasVideo ? "1" : "0", Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(MicroblogIndexDocument.IsOriginality, microblog.ForwardedMicroblogId == 0 ? "1" : "0", Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(MicroblogIndexDocument.TenantTypeId, microblog.TenantTypeId, Field.Store.YES, Field.Index.NOT_ANALYZED));

            TagService tagService = new TagService(TenantTypeIds.Instance().Microblog());

            IEnumerable<ItemInTag> itemInTags = tagService.GetItemInTagsOfItem(microblog.MicroblogId);
            foreach (ItemInTag itemInTag in itemInTags)
            {
                doc.Add(new Field(MicroblogIndexDocument.Topic, itemInTag.TagName.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            }

            return doc;
        }
 /// <summary>
 /// 详细页面地址
 /// </summary>
 /// <param name="itemId">推荐内容Id</param>
 /// <returns></returns>
 public string RecommendItemDetail(long itemId)
 {
     Tag topic = new TagService(TenantTypeIds.Instance().Microblog()).Get(itemId);
     if (topic == null)
         return string.Empty;
     return SiteUrls.Instance().MicroblogTopic(topic.TagName);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// BarThread转换成<see cref="Lucene.Net.Documents.Document"/>
        /// </summary>
        /// <param name="BarThread">发帖实体</param>
        /// <returns>Lucene.Net.Documents.Document</returns>
        public static Document Convert(BarThread barThread)
        {
            Document doc = new Document();

            //索引发帖基本信息
            doc.Add(new Field(BarIndexDocument.SectionId, barThread.SectionId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(BarIndexDocument.ThreadId, barThread.ThreadId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(BarIndexDocument.PostId, "0", Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(BarIndexDocument.Subject, barThread.Subject.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field(BarIndexDocument.Body, HtmlUtility.StripHtml(barThread.GetBody(), true, false).ToLower(), Field.Store.NO, Field.Index.ANALYZED));
            doc.Add(new Field(BarIndexDocument.Author, barThread.Author, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field(BarIndexDocument.IsPost, "0", Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(BarIndexDocument.DateCreated, DateTools.DateToString(barThread.DateCreated, DateTools.Resolution.DAY), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(BarIndexDocument.TenantTypeId, barThread.TenantTypeId, Field.Store.YES, Field.Index.NOT_ANALYZED));

            //索引发帖tag
            TagService tagService = new TagService(TenantTypeIds.Instance().BarThread());

            IEnumerable<ItemInTag> itemInTags = tagService.GetItemInTagsOfItem(barThread.ThreadId);
            foreach (ItemInTag itemInTag in itemInTags)
            {
                doc.Add(new Field(BarIndexDocument.Tag, itemInTag.TagName.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            }

            return doc;
        }
        /// <summary>
        /// 专题标签云
        /// </summary>_CommentList
        /// <param name="tenantTypeId">租户类型Id</param>
        /// <param name="topNumber">显示的标签数量</param>
        /// <param name="ownerId">拥有者ID</param>
        /// <param name="showInNewPage">新页显示</param>
        /// <returns></returns>
        public ActionResult _TagCloud(string tenantTypeId = "", int topNumber = 20, long ownerId = 0, bool showInNewPage = false)
        {
            TagService tagService = new TagService(tenantTypeId);
            Dictionary<TagInOwner, int> topicTags = tagService.GetOwnerTopTags(topNumber, ownerId);

            ViewData["ownerId"] = ownerId;
            ViewData["showInNewPage"] = showInNewPage;
            return View(topicTags);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 输出标签选择器(用于不能直接根据内容项获取标签的情况,例如:设置相关标签)
 /// </summary>
 /// <param name="htmlHelper"></param>
 /// <param name="tagInputName">表单项名称</param>
 /// <param name="selectedTagNames">选中的标签组</param>
 /// <param name="tenantTypeId">标签租户类型Id</param>
 /// <param name="ownerId">标签拥有者Id(可优先从该拥有者的标签中获取,并提供下拉列表选择)</param>
 /// <param name="topNumber">默认下拉列表中最多显示多少条数据</param>
 /// <returns></returns>
 public static MvcHtmlString TagSelector(this HtmlHelper htmlHelper, string tagInputName, IEnumerable<string> selectedTagNames, string tenantTypeId = null, long? ownerId = null, int topNumber = 50)
 {
     TagService tagService = new TagService(tenantTypeId);
     IEnumerable<string> ownerTagNames = new List<string>();
     if (ownerId.HasValue && ownerId.Value > 0)
         ownerTagNames = tagService.GetTopOwnerTags(ownerId.Value, topNumber, tenantTypeId).Select(n => n.Key.TagName);
     TagSettings tagSettings = DIContainer.Resolve <ISettingsManager<TagSettings>>().Get();
     if (selectedTagNames == null)
         selectedTagNames = new List<string>();
     return htmlHelper.EditorForModel("TagSelector", new { tagInputName = tagInputName, ownerId = ownerId, selectedTagNames = string.Join(",", selectedTagNames), ownerTagNames = ownerTagNames, tagSettings = tagSettings });
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 输出标签选择器(用于可根据内容项直接获取到选中标签的情况)
 /// </summary>
 /// <remarks>仅限登录用户使用</remarks>
 /// <param name="htmlHelper"></param>
 /// <param name="itemId">内容项Id</param>
 /// <param name="ownerId">标签拥有者Id(可优先从该拥有者的标签中获取,并提供下拉列表选择)</param>
 /// <param name="tagInputName"></param>
 /// <param name="tenantTypeId"></param>
 /// <param name="topNumber">默认下拉列表中最多显示多少条数据</param>
 /// <returns></returns>
 public static MvcHtmlString TagSelector(this HtmlHelper htmlHelper, string tagInputName, string tenantTypeId, long? itemId, long? ownerId = null, int topNumber = 50)
 {
     IEnumerable<string> selectedTagNames = new List<string>();
     TagService tagService = new TagService(tenantTypeId);
     if (itemId != null && itemId.Value > 0)
     {
         IEnumerable<ItemInTag> itemInTags = tagService.GetItemInTagsOfItem(itemId.Value);
         selectedTagNames = itemInTags.Select(n => n.TagName);
     }
     return htmlHelper.TagSelector(tagInputName, selectedTagNames, tenantTypeId, ownerId, topNumber);
 }
        public void GetAllTagsPublished_Test()
        {
            var moqRepositoryPost = new Mock<IRepository<Post>>();

            moqRepositoryPost.Setup(p => p.Data).Returns(base.BuildPosts().AsQueryable());

            TagService service = new TagService(moqRepositoryPost.Object);

            var result = service.GetAllPublished();

            Assert.IsTrue(result.Count() == 5, "The number of tags distinctis");
        }
Ejemplo n.º 9
0
        public ActionResult TagStats(string id, string start, string end)
        {
            start = "01/" + start.Substring(3, start.Length - 3);
            GetDaysInMonth(end, ref end);

            ViewData["TagID"] = id;
            DateTime thestartDateWeWant = Convert.ToDateTime(start);

            ViewData["startdate"] = start;
            ViewData["enddate"]   = end;
            TagService tagService = new TagService();
            EventStats viewModel  = tagService.GetTagStats(id, thestartDateWeWant);

            return(View(viewModel));
        }
Ejemplo n.º 10
0
 public void EndGetStandardTags(IAsyncResult result)
 {
     try
     {
         StandardTags = new ObservableCollection <TagViewModel>(TagService.EndGetStandardTags(result).Select(x => new TagViewModel(x)));
     }
     catch (SecurityAccessDeniedException ex)
     {
         LogService.BeginLogError(ex.Message, null, null);
     }
     catch (CommunicationException ex)
     {
         LogService.BeginLogError(ex.Message, null, null);
     }
 }
Ejemplo n.º 11
0
        public virtual Result Insert(BlogPost post)
        {
            Result result = db.insert(post);

            if (result.IsValid)
            {
                String msg = string.Format("发布博客 <a href=\"{0}\">{1}</a>,得到奖励", alink.ToAppData(post), post.Title);
                incomeService.AddIncome(post.Creator, UserAction.Blog_CreatePost.Id, msg);
                updateAppCount(post);
                TagService.SaveDataTag(post, post.Tags);
                addFeedInfo(post);
            }

            return(result);
        }
Ejemplo n.º 12
0
        public async Task Get_a_tag_by_id()
        {
            await DbContext.Tags.AddAsync(new Tag { Name = "VS Code" });

            await DbContext.Tags.AddAsync(new Tag { Name = "Linux" });

            await DbContext.Tags.AddAsync(new Tag { Name = "Visual Studio" });

            await DbContext.SaveChangesAsync();

            var svc    = new TagService(DbContext, Mapper);
            var result = await svc.GetTagDtoAsync(1);

            Assert.AreEqual("VS Code", result.Name);
        }
Ejemplo n.º 13
0
        public async Task No_tags_through_search()
        {
            await DbContext.Tags.AddAsync(new Tag { Name = "VS Code" });

            await DbContext.Tags.AddAsync(new Tag { Name = "Linux" });

            await DbContext.Tags.AddAsync(new Tag { Name = "Visual Studio" });

            await DbContext.SaveChangesAsync();

            var svc    = new TagService(DbContext, Mapper);
            var result = await svc.SearchTagsDtoAsync("Net");

            Assert.AreEqual(0, result.Count);
        }
Ejemplo n.º 14
0
        public TagServiceTests(DatabaseFixture fixture)
        {
            var configuration = new MapperConfiguration(cfg =>
                                                        cfg.AddMaps(new[] {
                "UselessCore",
            })
                                                        );

            mapper = new Mapper(configuration);

            var mockMemoryCache = new Mock <IMemoryCache>();

            this.fixture = fixture;
            service      = new TagService(fixture.Context, mockMemoryCache.Object, mapper);
        }
Ejemplo n.º 15
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            int        TagId      = Int32.Parse(context.Request["tagid"]);
            TagService tagService = new TagService();
            Tag        tag        = new Tag();

            tag         = tagService.GetModel(TagId);
            tag.tagname = context.Request["tagname"];
            tag.taglink = context.Request["taglink"];
            bool b = tagService.Update(tag);

            context.Response.Write(b);
            context.Response.End();
        }
        public void TagService_GetTagByTagName_RepositoryReturnsNull_ReturnsNull()
        {
            //Arrange
            Tag        nullTag    = null;
            Task <Tag> tag        = Task.FromResult(nullTag);
            TagService tagService = new TagService(_mockTagsRepository.Object, _mockMovieTagService.Object);

            _mockTagsRepository.Setup(x => x.GetTagByTagName(It.IsAny <string>())).Returns(tag);

            //Act
            var result = tagService.GetTagByTagName(_tag.Name).ConfigureAwait(false).GetAwaiter().GetResult();

            //Assert
            Assert.IsNull(result);
        }
Ejemplo n.º 17
0
        public async Task <IActionResult> Create([FromBody] string name)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                return(BadRequest());
            }
            if (!TagService.ValidateTagName(name))
            {
                return(Conflict());
            }

            await _tagService.Create(name.Trim());

            return(Ok());
        }
        public void TagService_DeleteTag_ReturnsTag()
        {
            //Arrange
            TagService tagService = new TagService(_mockTagsRepository.Object, _mockMovieTagService.Object);

            _mockTagsRepository.Setup(x => x.Delete(It.IsAny <int>())).Returns(_tag);

            //Act
            var result = tagService.DeleteTag(_tag.Id).ConfigureAwait(false).GetAwaiter().GetResult();

            //Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(TagsDomainModel));
            Assert.AreEqual(result.Id, _tagDomainModel.Id);
        }
Ejemplo n.º 19
0
 public MailingSettingsController(
     UsersService userService,
     MailingSettingsService mailingSettingService,
     CronService cronService,
     TagService tagsService,
     MailService mailService,
     ArticleService articleService)
 {
     _userService           = userService;
     _mailingSettingService = mailingSettingService;
     _cronService           = cronService;
     _tagsService           = tagsService;
     _mailService           = mailService;
     _articleService        = articleService;
 }
Ejemplo n.º 20
0
        //------------------------------------------ 插入与更新 --------------------------------------------------


        public virtual Result Insert(BlogPost post, int[] attachmentIds)
        {
            Result result = db.insert(post);

            if (result.IsValid)
            {
                saveAttachments(post, attachmentIds);

                updateAppCount(post);
                TagService.SaveDataTag(post, post.Tags);
                addFeedInfo(post);
            }

            return(result);
        }
Ejemplo n.º 21
0
        public ActionResult AuditTags(string tagIds, bool isApproved)
        {
            TagService tagService = new TagService(string.Empty);
            if (!string.IsNullOrEmpty(tagIds))
            {
                IEnumerable<long> updateTagIds = tagIds.TrimEnd(',').Split(',').Select(t => Convert.ToInt64(t));
                tagService.UpdateAuditStatus(updateTagIds, isApproved);

                return Json("success", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("fail", JsonRequestBehavior.AllowGet);
            }
        }
Ejemplo n.º 22
0
        public void ReturnEmpyCollection_WhenProvidedIdsCountIsZero()
        {
            // Arrange
            var mockedUOW = new Mock <IUnitOfWorkEF>();
            var tagRepo   = new Mock <IProjectableRepositoryEf <Tag> >();

            var tagService           = new TagService(tagRepo.Object, () => mockedUOW.Object);
            IEnumerable <int> tagIds = new List <int>();

            // Act
            var result = tagService.GetTagsByIds(tagIds);

            // Assert
            Assert.AreEqual(0, result.Count());
        }
Ejemplo n.º 23
0
        public HttpResponseMessage Post(int entityTypeId, int ownerId, Guid entityGuid, string name, string entityQualifier = null, string entityQualifierValue = null, Guid?categoryGuid = null, bool?includeInactive = null)
        {
            SetProxyCreation(true);

            var person      = GetPerson();
            var personAlias = GetPersonAlias();

            var tagService = new TagService((Rock.Data.RockContext)Service.Context);

            var tag = tagService.Get(entityTypeId, entityQualifier, entityQualifierValue, ownerId, name, categoryGuid, includeInactive);

            if (tag == null || !tag.IsAuthorized("Tag", person))
            {
                int?categoryId = null;
                if (categoryGuid.HasValue)
                {
                    var category = CategoryCache.Get(categoryGuid.Value);
                    categoryId = category != null ? category.Id : (int?)null;
                }

                tag = new Tag();
                tag.EntityTypeId = entityTypeId;
                tag.CategoryId   = categoryId;
                tag.EntityTypeQualifierColumn = entityQualifier;
                tag.EntityTypeQualifierValue  = entityQualifierValue;
                tag.OwnerPersonAliasId        = new PersonAliasService((Rock.Data.RockContext)Service.Context).GetPrimaryAliasId(ownerId);
                tag.Name = name;
                tagService.Add(tag);
            }

            tag.TaggedItems = tag.TaggedItems ?? new Collection <TaggedItem>();

            var taggedItem = tag.TaggedItems.FirstOrDefault(i => i.EntityGuid.Equals(entityGuid));

            if (taggedItem == null)
            {
                taggedItem              = new TaggedItem();
                taggedItem.Tag          = tag;
                taggedItem.EntityTypeId = entityTypeId;
                taggedItem.EntityGuid   = entityGuid;
                tag.TaggedItems.Add(taggedItem);
            }

            System.Web.HttpContext.Current.Items.Add("CurrentPerson", person);
            Service.Context.SaveChanges();

            return(ControllerContext.Request.CreateResponse(HttpStatusCode.Created, tag.Id));
        }
Ejemplo n.º 24
0
        public void PublishDraft(int id)
        {
            BlogPost post = postService.GetById(id, ctx.owner.Id);

            if (post == null)
            {
                echoRedirect(lang("exDataNotFound"));
                return;
            }

            BlogCategory category = new BlogCategory();

            category.Id   = cvt.ToInt(ctx.Post("CategoryId"));
            post.Category = category;

            post.Abstract = ctx.Post("Abstract");
            post.Content  = ctx.PostHtml("Content");
            post.Title    = ctx.Post("Title");
            if (strUtil.IsNullOrEmpty(post.Title) || strUtil.IsNullOrEmpty(post.Content))
            {
                echoRedirect(lang("exTitleContent"));
                return;
            }

            post.AccessStatus     = cvt.ToInt(ctx.Post("AccessStatus"));
            post.CommentCondition = cvt.ToInt(ctx.Post("IsCloseComment"));
            if (post.SaveStatus == SaveStatus.Draft)
            {
                post.Created = DateTime.Now;
            }

            post.Ip = ctx.Ip;

            String tagStr = strUtil.SubString(ctx.Post("TagList"), 200);

            post.Tags = TagService.ResetRawTagString(tagStr);

            Result result = postService.PublishDraft(post);

            if (result.IsValid)
            {
                echoRedirect(lang("opok"), new MyListController().My);
            }
            else
            {
                echoRedirect(result.ErrorsHtml);
            }
        }
Ejemplo n.º 25
0
        public async Task GetOwnerAsync(
            [Summary("The name of the tag whose owner is being requested.")]
            string name)
        {
            var tag = await TagService.GetTagAsync(Context.Guild.Id, name);

            if (tag is null)
            {
                await ReplyAsync($"The tag '{name.Trim().ToLower()}' does not exist.");

                return;
            }

            var embedBuilder = new EmbedBuilder()
                               .WithDescription($"Owns the '{tag.Name}' tag.")
                               .WithColor(Color.DarkPurple)
                               .WithFooter(EmbedFooterText);

            if (tag.OwnerUser != null)
            {
                var user = await UserService.GetUserAsync(tag.OwnerUser.Id);

                if (user != null)
                {
                    embedBuilder.WithUserAsAuthor(user, user.Id.ToString());
                }
                else
                {
                    embedBuilder.WithAuthor($"{tag.OwnerUser.GetFullUsername()} ({tag.OwnerUser.Id})");
                }
            }
            else if (tag.OwnerRole != null)
            {
                var role = Context.Guild.GetRole(tag.OwnerRole.Id);

                embedBuilder
                .WithAuthor($"The {role.Name} role", Context.Guild.IconUrl)
                .WithColor(role.Color);
            }
            else
            {
                embedBuilder
                .WithDescription($"Unable to find the owner of the '{tag.Name}' tag.")
                .WithColor(Color.Red);
            }

            await ReplyAsync(embed : embedBuilder.Build());
        }
        public void GetTagsNameCount_Test()
        {
            var moqRepositoryPost = new Mock<IRepository<Post>>();

            moqRepositoryPost.Setup(p => p.Data).Returns(base.BuildPosts().AsQueryable());

            TagService service = new TagService(moqRepositoryPost.Object);

            var result = service.GetTagsNameCount();

            Assert.IsTrue(result["ASP.NET"] == 2);
            Assert.IsTrue(result["ASP.NET MVC"] == 2);
            Assert.IsTrue(result["ASP.NET MVC 3"] == 2);
            Assert.IsTrue(result["C#"] == 1);
            Assert.IsTrue(result["Unit Test"] == 3);
        }
Ejemplo n.º 27
0
        public async Task GetTagById_WithInValidId_ShouldThrow()
        {
            //Arrange
            var db = this.SetDb();

            await this.SeedTag(db);

            var repo = new Repository <Tag>(db);

            var service = new TagService(null, repo, this.Mapper);

            //Act

            //Assert
            await Assert.ThrowsAsync <NullReferenceException>(async() => await service.GetTagById(3));
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Formats the selection.
        /// </summary>
        /// <param name="entityType">Type of the entity.</param>
        /// <param name="selection">The selection.</param>
        /// <returns></returns>
        public override string FormatSelection( Type entityType, string selection )
        {
            string result = "Person Tag";
            string[] selectionValues = selection.Split( '|' );
            if ( selectionValues.Length >= 2 )
            {
                Guid selectedTagGuid = selectionValues[1].AsGuid();
                var selectedTag = new TagService( new RockContext() ).Get( selectedTagGuid );
                if ( selectedTag != null )
                {
                    result = string.Format( "Tagged as {0}", selectedTag.Name );
                }
            }

            return result;
        }
        public async void TagChanged()
        {
            var newTag = AllTags.FirstOrDefault(t => t.Name.Equals(NewTag?.Name));

            if (newTag == null)
            {
                return;
            }

            TagService.AddTagToProduct(ProductId, newTag.Id);
            Product = await ProductService.GetProductById(ProductId);

            myIsAddingTag = false;
            NewTag        = new ProductTagModel();
            StateHasChanged();
        }
        private async void MyValueChangeHandler(string theUserInput)
        {
            var newTag = AllTags.FirstOrDefault(t => t.Name.Equals(theUserInput));

            if (newTag == null)
            {
                return;
            }

            TagService.AddTagToProduct(ProductId, newTag.Id);
            Product = await ProductService.GetProductById(ProductId);

            myIsAddingTag = false;
            NewTag        = new ProductTagModel();
            StateHasChanged();
        }
Ejemplo n.º 31
0
        //todo:获取同步的标签
        public JsonResult GetSyncTags(string token, int afterUsn, int maxEntry)
        {
            User user = TokenSerivce.GetUserByToken(token);

            if (user == null)
            {
                ApiRe apiRe = new ApiRe()
                {
                    Ok  = false,
                    Msg = "Not logged in",
                };
                return(Json(apiRe, MyJsonConvert.GetOptions()));
            }
            NoteTag[] noteTags = TagService.GeSyncTags(user.UserId, afterUsn, maxEntry);
            return(Json(noteTags, MyJsonConvert.GetOptions()));
        }
Ejemplo n.º 32
0
        //todo:添加Tag
        public JsonResult AddTag(string token, string tag)
        {
            NoteTag noteTag = TagService.AddOrUpdateTag(getUserIdByToken(token), tag);

            if (noteTag == null)
            {
                return(Json(new ApiRe()
                {
                    Ok = false, Msg = "添加标签失败"
                }, MyJsonConvert.GetOptions()));
            }
            else
            {
                return(Json(noteTag, MyJsonConvert.GetOptions()));
            }
        }
        public ActionResult AuditTags(string tagIds, bool isApproved)
        {
            TagService tagService = new TagService(string.Empty);

            if (!string.IsNullOrEmpty(tagIds))
            {
                IEnumerable <long> updateTagIds = tagIds.TrimEnd(',').Split(',').Select(t => Convert.ToInt64(t));
                tagService.UpdateAuditStatus(updateTagIds, isApproved);

                return(Json("success", JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json("fail", JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 34
0
        /// <summary>
        /// 标签显示文章列表
        /// </summary>
        public ActionResult ListByTag(string tagName, int pageIndex = 1)
        {
            tagName = WebUtility.UrlDecode(tagName);
            var tag = new TagService(TenantTypeIds.Instance().BlogThread()).Get(tagName);

            if (tag == null)
            {
                return(HttpNotFound());
            }

            PagingDataSet <BlogThread> blogs = blogService.Gets(TenantTypeIds.Instance().User(), null, false, true, null, tagName, null, SortBy_BlogThread.DateCreated_Desc, 20, pageIndex);

            pageResourceManager.InsertTitlePart(tagName);
            ViewData["tag"] = tag;
            return(View(blogs));
        }
        public ActionResult _SetTagsGroup(string tenantTypeId)
        {
            ViewData["tenantTypeId"] = tenantTypeId;

            List <SelectListItem>  groupItems = new List <SelectListItem>();
            IEnumerable <TagGroup> groups     = new TagService(tenantTypeId).GetGroups(tenantTypeId);

            foreach (var item in groups)
            {
                groupItems.Add(new SelectListItem {
                    Text = item.GroupName, Value = item.GroupId.ToString()
                });
            }
            ViewData["groupSelectList"] = new SelectList(groupItems, "value", "text", groupItems);
            return(View());
        }
Ejemplo n.º 36
0
        /// <summary>
        /// Handles the GridReorder event of the rGrid control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="GridReorderEventArgs"/> instance containing the event data.</param>
        protected void rGrid_GridReorder(object sender, GridReorderEventArgs e)
        {
            var tags = GetTags(true);

            if (tags != null)
            {
                using (var rockContext = new RockContext())
                {
                    var tagService = new TagService(rockContext);
                    tagService.Reorder(tags.ToList(), e.OldIndex, e.NewIndex);
                    rockContext.SaveChanges();
                }
            }

            BindGrid();
        }
Ejemplo n.º 37
0
        public ActionResult DeleteTag(int tagid)
        {
            TagService ser    = new TagService(WXAPP.AppId, WXAPP.AppSecret);
            JObject    jo     = JObject.Parse(ser.Delete(tagid));
            var        result = new
            {
                errcode = jo["errcode"].ToString(),
                errmsg  = jo["errmsg"].ToString()
            };

            if (result.errcode.Equals("0"))
            {
                new WX_UserTagManager().Delete(tagid, WXAPP.AppId);
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 38
0
 public ActionResult StartPage()
 {
     ViewBag.tags = TagService.GetTagsList();
     if (!fillDataLists)
     {
         fillDataLists = !fillDataLists;
         FillData();
     }
     AccountController.wrongEmail  = false;
     AccountController.isSave      = false;
     AccountController.largeLenght = false;
     NewService.SetLike();
     ViewBag.search = NewService.newStack;
     NewService.FillParameters();
     return(View());
 }
Ejemplo n.º 39
0
        public async void Get_ShouldReturnNullBecauseRecordNotFound()
        {
            var mock = new ServiceMockFacade <ITagService, ITagRepository>();

            mock.RepositoryMock.Setup(x => x.Get(It.IsAny <int>())).Returns(Task.FromResult <Tag>(null));
            var service = new TagService(mock.LoggerMock.Object,
                                         mock.MediatorMock.Object,
                                         mock.RepositoryMock.Object,
                                         mock.ModelValidatorMockFactory.TagModelValidatorMock.Object,
                                         mock.DALMapperMockFactory.DALTagMapperMock);

            ApiTagServerResponseModel response = await service.Get(default(int));

            response.Should().BeNull();
            mock.RepositoryMock.Verify(x => x.Get(It.IsAny <int>()));
        }
Ejemplo n.º 40
0
        public async void ByWikiPostId_Not_Exists()
        {
            var mock = new ServiceMockFacade <ITagService, ITagRepository>();

            mock.RepositoryMock.Setup(x => x.ByWikiPostId(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>())).Returns(Task.FromResult <List <Tag> >(new List <Tag>()));
            var service = new TagService(mock.LoggerMock.Object,
                                         mock.MediatorMock.Object,
                                         mock.RepositoryMock.Object,
                                         mock.ModelValidatorMockFactory.TagModelValidatorMock.Object,
                                         mock.DALMapperMockFactory.DALTagMapperMock);

            List <ApiTagServerResponseModel> response = await service.ByWikiPostId(default(int));

            response.Should().BeEmpty();
            mock.RepositoryMock.Verify(x => x.ByWikiPostId(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>()));
        }
Ejemplo n.º 41
0
		public virtual void Init()
		{
			WorkspaceService = new WorkspaceService(Constants.ApiToken);
			var workspaces = WorkspaceService.List();

			ClientService = new ClientService(Constants.ApiToken);
			TaskService = new TaskService(Constants.ApiToken);
			TagService = new TagService(Constants.ApiToken);
			ProjectService = new ProjectService(Constants.ApiToken);
			UserService = new UserService(Constants.ApiToken);
			TimeEntryService = new TimeEntryService(Constants.ApiToken);
			ReportService = new ReportService(Constants.ApiToken);

			foreach (var workspace in workspaces)
			{
				var projects = WorkspaceService.Projects(workspace.Id.Value);
				var tasks = WorkspaceService.Tasks(workspace.Id.Value);
				var tags = WorkspaceService.Tags(workspace.Id.Value); // TODO
				var users = WorkspaceService.Users(workspace.Id.Value); // TODO
				var clients = WorkspaceService.Clients(workspace.Id.Value);
				var rte = new TimeEntryParams { StartDate = DateTime.Now.AddYears(-1)};
				var timeEntries = TimeEntryService.List(rte);

				Assert.IsTrue(TimeEntryService.DeleteIfAny(timeEntries.Select(te => te.Id.Value).ToArray()));
				Assert.IsTrue(ProjectService.DeleteIfAny(projects.Select(p => p.Id.Value).ToArray()));				
				Assert.IsTrue(TaskService.DeleteIfAny(tasks.Select(t => t.Id.Value).ToArray()));
				Assert.IsTrue(ClientService.DeleteIfAny(clients.Select(c => c.Id.Value).ToArray()));

				Assert.IsFalse(WorkspaceService.Projects(workspace.Id.Value).Any());
				Assert.IsFalse(WorkspaceService.Tasks(workspace.Id.Value).Any());
				Assert.IsFalse(WorkspaceService.Clients(workspace.Id.Value).Any());
				Assert.IsFalse(TimeEntryService.List(rte).Any());
			}

			DefaultWorkspaceId = workspaces.First().Id.Value;
		}
Ejemplo n.º 42
0
        public ActionResult _ListUsersTags(string spaceKey)
        {
            //取所有用户标签
            TagService tagService = new TagService(TenantTypeIds.Instance().User());
            IDictionary<TagGroup, List<string>> tagsInGroupDict = new Dictionary<TagGroup, List<string>>();
            IEnumerable<TagGroup> tagGroups = tagService.GetGroups();
            if (tagGroups != null)
            {
                foreach (TagGroup tagGroup in tagGroups)
                {
                    tagsInGroupDict[tagGroup] = tagService.GetTopTagsOfGroup(tagGroup.GroupId, 20).ToList();
                }
            }

            int count = userProfileSettings.MaxPersonTag;
            if (tagGroups != null)
                ViewData["tagGroupsCount"] = tagGroups.ToList().Count;

            ViewData["count"] = count;
            return View(tagsInGroupDict);
        }
Ejemplo n.º 43
0
        /// <summary>
        /// User转换成<see cref="Lucene.Net.Documents.Document"/>
        /// </summary>
        /// <param name="user">用户实体</param>
        /// <returns>Lucene.Net.Documents.Document</returns>
        public static Document Convert(User user)
        {
            Document doc = new Document();

            if (user == null)
                return doc;
            //索引用户基本信息
            doc.Add(new Field(UserIndexDocument.UserId, user.UserId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(UserIndexDocument.UserName, user.UserName.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field(UserIndexDocument.TrueName, user.TrueName.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field(UserIndexDocument.NickName, user.NickName.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field(UserIndexDocument.DateCreated, DateTools.DateToString(user.DateCreated, DateTools.Resolution.DAY), Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.Add(new Field(UserIndexDocument.LastActivityTime, DateTools.DateToString(user.LastActivityTime, DateTools.Resolution.MINUTE), Field.Store.YES, Field.Index.NOT_ANALYZED));
            //索引用户名称的拼音信息方便支持拼音搜索
            doc.Add(new Field(UserIndexDocument.PinyinName, Pinyin.GetPinyin(user.UserName.ToLower()), Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field(UserIndexDocument.PinyinName, Pinyin.GetPinyin(user.UserName.ToLower()).Replace(" ", ""), Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field(UserIndexDocument.ShortPinyinName, Pinyin.GetInitials(user.UserName.ToLower()), Field.Store.YES, Field.Index.ANALYZED));
            if (!string.IsNullOrEmpty(user.NickName))
            {
                doc.Add(new Field(UserIndexDocument.PinyinName, Pinyin.GetPinyin(user.NickName.ToLower()), Field.Store.YES, Field.Index.ANALYZED));
                doc.Add(new Field(UserIndexDocument.PinyinName, Pinyin.GetPinyin(user.NickName.ToLower()).Replace(" ", ""), Field.Store.YES, Field.Index.ANALYZED));
                doc.Add(new Field(UserIndexDocument.ShortPinyinName, Pinyin.GetInitials(user.NickName.ToLower()), Field.Store.YES, Field.Index.ANALYZED));
            }
            if (!string.IsNullOrEmpty(user.TrueName))
            {
                doc.Add(new Field(UserIndexDocument.PinyinName, Pinyin.GetPinyin(user.TrueName.ToLower()), Field.Store.YES, Field.Index.ANALYZED));
                doc.Add(new Field(UserIndexDocument.PinyinName, Pinyin.GetPinyin(user.TrueName.ToLower()).Replace(" ", ""), Field.Store.YES, Field.Index.ANALYZED));
                doc.Add(new Field(UserIndexDocument.ShortPinyinName, Pinyin.GetInitials(user.TrueName.ToLower()), Field.Store.YES, Field.Index.ANALYZED));
            }

            //索引用户资料
            if (user.Profile != null)
            {
                doc.Add(new Field(UserIndexDocument.Gender, ((int)user.Profile.Gender).ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));

                if (user.Profile.Birthday != null)
                {
                    doc.Add(new Field(UserIndexDocument.Birthday, DateTools.DateToString(user.Profile.Birthday, DateTools.Resolution.DAY), Field.Store.YES, Field.Index.NOT_ANALYZED));

                    //注意此处不能用NumericField,因为Lucene有NumericField不能序列化的bug,会导致采用WCF分布式部署时调用失败,所以只能以字符串的方式索引
                    string birthdayYear = user.Profile.Birthday.Year.ToString().PadLeft(3, '0');
                    doc.Add(new Field(UserIndexDocument.BirthdayYear, birthdayYear, Field.Store.YES, Field.Index.NOT_ANALYZED));
                }

                if (user.Profile.NowAreaCode != null)
                {
                    doc.Add(new Field(UserIndexDocument.NowAreaCode, user.Profile.NowAreaCode, Field.Store.YES, Field.Index.NOT_ANALYZED));
                }

                if (user.Profile.HomeAreaCode != null)
                {
                    doc.Add(new Field(UserIndexDocument.HomeAreaCode, user.Profile.HomeAreaCode, Field.Store.YES, Field.Index.NOT_ANALYZED));
                }

                int hasAvatarImage = 0;
                if (user.HasAvatar)
                {
                    hasAvatarImage = 1;
                }
                doc.Add(new Field(UserIndexDocument.HasAvatarImage, hasAvatarImage.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));

                if (user.Profile.Introduction != null)
                {
                    doc.Add(new Field(UserIndexDocument.Introduction, user.Profile.Introduction.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
                }

                foreach (EducationExperience educationExperience in user.Profile.EducationExperience)
                {
                    doc.Add(new Field(UserIndexDocument.School, educationExperience.School.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
                }
                foreach (WorkExperience workExperience in user.Profile.WorkExperience)
                {
                    doc.Add(new Field(UserIndexDocument.CompanyName, workExperience.CompanyName.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
                }
            }

            //索引tag
            TagService tagService = new TagService(TenantTypeIds.Instance().User());

            //fixed by jiangshl,已按要求修改
            IEnumerable<ItemInTag> itemInTags = tagService.GetItemInTagsOfItem(user.UserId);
            foreach (ItemInTag itemInTag in itemInTags)
            {
                doc.Add(new Field(UserIndexDocument.TagName, itemInTag.TagName.ToLower(), Field.Store.YES, Field.Index.ANALYZED));
            }

            return doc;
        }
Ejemplo n.º 44
0
        /// <summary>
        /// 删除用户资料
        /// </summary>
        /// <param name="userProfile">用户资料</param>
        /// <returns>删除成功返回true,否则返回false</returns>
        public bool Delete(long userId)
        {
            UserProfile userProfile = profileRepository.Get(userId);
            if (userProfile == null)
                return false;
            EventBus<UserProfile>.Instance().OnBefore(userProfile, new CommonEventArgs(EventOperationType.Instance().Delete()));
            profileRepository.Delete(userProfile);
            IEnumerable<EducationExperience> educationExperiences = GetEducationExperiences(userId);
            if (educationExperiences != null)
            {
                foreach (var educationExperience in educationExperiences)
                {
                    educationExperienceRepository.Delete(educationExperience);
                }
            }

            IEnumerable<WorkExperience> workExperiences = GetWorkExperiences(userId);
            if (workExperiences != null)
            {
                foreach (var workExperience in workExperiences)
                {
                    workExperienceRepository.Delete(workExperience);
                }
            }

            //通过UserId  删除个人标签
            TagService tagService = new TagService(TenantTypeIds.Instance().UserProfile());
            tagService.DeleteOwnerTag(userId);
            EventBus<UserProfile>.Instance().OnAfter(userProfile, new CommonEventArgs(EventOperationType.Instance().Delete()));
            //同时删除教育经历、工作经历、个人标签、头像文件等
            return true;
        }
Ejemplo n.º 45
0
        /// <summary>
        /// 标签显示群组列表
        /// </summary>
        public ActionResult ListByTag(string tagName, SortBy_Group sortBy = SortBy_Group.DateCreated_Desc, int pageIndex = 1)
        {
            tagName = WebUtility.UrlDecode(tagName);
            var tag = new TagService(TenantTypeIds.Instance().Group()).Get(tagName);

            if (tag == null)
            {
                return HttpNotFound();
            }

            PagingDataSet<GroupEntity> groups = groupService.GetsByTag(tagName, sortBy, pageIndex: pageIndex);
            pageResourceManager.InsertTitlePart(tagName);
            ViewData["tag"] = tag;
            ViewData["sortBy"] = sortBy;
            return View(groups);
        }
        public ActionResult EditTopic(TagEditModel tagEditModel)
        {
            System.IO.Stream stream = null;

            //是否创建
            bool isCreate = tagEditModel.TagId == 0;

            if (isCreate)
            {
                ViewData["editTopicTitle"] = "创建话题";
            }
            else
            {
                ViewData["editTopicTitle"] = "编辑话题";
            }

            TagService tagService = new TagService(tagEditModel.TenantTypeId);
            IEnumerable<long> userIds = Request.Form.Gets<long>("RelatedObjectIds");
            //是特色标签
            if (tagEditModel.IsFeatured)
            {

                HttpPostedFileBase tagLogo = Request.Files["tagLogo"];
                string fileName = tagLogo == null ? "" : tagLogo.FileName;
                if (string.IsNullOrEmpty(fileName) && string.IsNullOrEmpty(tagEditModel.FeaturedImage))
                {

                    //标签分组下拉框
                    SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId);
                    ViewData["topicGroups"] = topicGroups;

                    //取到用户设置的相关标签
                    ViewData["seletedUserIds"] = userIds;

                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "图片不能为空");

                    return View(tagEditModel);
                }
                else if (!string.IsNullOrEmpty(fileName))
                {
                    //校验附件的扩展名
                    LogoSettings logoSettings = DIContainer.Resolve<ISettingsManager<LogoSettings>>().Get();
                    if (!logoSettings.ValidateFileExtensions(fileName))
                    {
                        //标签分组下拉框
                        SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId);
                        ViewData["topicGroups"] = topicGroups;

                        //取到用户设置的相关标签
                        ViewData["seletedUserIds"] = userIds;

                        ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "只允许上传后缀名为 .gif .jpg .jpeg .png 的文件");

                        return View(tagEditModel);
                    }

                    //校验附件的大小
                    TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().Tag());
                    if (!tenantLogoSettings.ValidateFileLength(tagLogo.ContentLength))
                    {

                        //标签分组下拉框
                        SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId);
                        ViewData["topicGroups"] = topicGroups;

                        //取到用户设置的相关标签
                        ViewData["seletedUserIds"] = userIds;

                        ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, string.Format("文件大小不允许超过{0}KB", tenantLogoSettings.MaxLogoLength));

                        return View(tagEditModel);
                    }

                    stream = tagLogo.InputStream;
                    tagEditModel.FeaturedImage = fileName;

                }
            }

            //获取相关微博
            IEnumerable<long> seletedUserIds = userIds;

            //创建
            if (isCreate)
            {
                Tag tag = tagEditModel.AsTag();
                tagService.Create(tag, stream);

                //添加到分组
                if (tagEditModel.TopicGroupId > 0)
                {
                    tagService.BatchAddGroupsToTag(new List<long>() { tagEditModel.TopicGroupId }, tagEditModel.TagName);
                }

            }//更新
            else
            {
                Tag tag = tagEditModel.AsTag();
                tagService.Update(tag, stream);

                //添加到分组
                if (tagEditModel.TopicGroupId > 0)
                {
                    tagService.BatchAddGroupsToTag(new List<long>() { tagEditModel.TopicGroupId }, tagEditModel.TagName);
                }
            }

            return RedirectToAction("ManageMicroblogTopics");
        }
        private List<Domain.Tag> GetTags(IApiProvider apiProvider)
        {
            List<Domain.Tag> result = new List<Domain.Tag>();
            ITagService tagService = new TagService(apiProvider);

            bool done = false;
            int page = 1;
            while (!done)
            {
                List<Domain.Tag> tags = tagService.GetList(new TagListParameters
                {
                    OrderBy = TagListSort.Tag,
                    Order = GenericSort.Ascending,
                    Size = 100,
                    PageOffset = page++,
                    ExcludeMachineTags = false,
                    ReformatTags = false
                });

                if (tags.Count > 0)
                    result.AddRange(tags);
                if (tags.Count < 100)
                    done = true;
            }

            return result;
        }
Ejemplo n.º 48
0
        public JsonResult CreateUserTag(string spaceKey)
        {
            bool isBanned = false;
            string tagName = Request.Form["TagName"];
            tagName = TextFilter(tagName, out isBanned);
            if (isBanned)
            {
                WebUtility.SetStatusCodeForError(Response);
                return Json(new StatusMessageData(StatusMessageType.Error, "内容中包含非法词语!"));
            }

            long userId = UserIdToUserNameDictionary.GetUserId(spaceKey);
            TagService tagService = new TagService(TenantTypeIds.Instance().User());

            int count = userProfileSettings.MaxPersonTag;
            if (tagService.GetItemInTagsOfItem(userId).Count() >= count)
            {
                WebUtility.SetStatusCodeForError(Response);
                return Json(new StatusMessageData(StatusMessageType.Error, "最多只能添加" + count + "个标签!"));
            }

            if (tagName != null)
            {
                tagService.AddTagToItem(tagName, userId, userId);
                return Json(new StatusMessageData(StatusMessageType.Success, "创建成功"));
            }
            WebUtility.SetStatusCodeForError(Response);

            return Json(new StatusMessageData(StatusMessageType.Error, "标签不能为空!"));
        }
Ejemplo n.º 49
0
 public JsonResult DeleteMyUserTag(string spaceKey, long itemInTagId)
 {
     TagService tagService = new TagService(TenantTypeIds.Instance().User());
     tagService.DeleteTagFromItem(itemInTagId);
     if (itemInTagId > 0)
         return Json(new StatusMessageData(StatusMessageType.Success, "删除成功!"));
     else
         return Json(new StatusMessageData(StatusMessageType.Error, "删除失败!"));
 }
Ejemplo n.º 50
0
        /// <summary>
        /// 删除帖吧
        /// </summary>
        /// <param name="sectionId">帖吧Id</param>
        public void Delete(long sectionId)
        {
            BarSection section = barSectionRepository.Get(sectionId);
            if (section == null)
                return;
            EventBus<BarSection>.Instance().OnBefore(section, new CommonEventArgs(EventOperationType.Instance().Delete()));

            //帖子
            BarThreadService barThreadService = new BarThreadService();
            barThreadService.DeletesBySectionId(sectionId);

            CategoryService categoryService = new CategoryService();

            //帖吧分类
            categoryService.ClearCategoriesFromItem(sectionId, null, TenantTypeIds.Instance().BarSection());

            //帖子分类
            var categories = categoryService.GetRootCategories(TenantTypeIds.Instance().BarThread(), sectionId);
            foreach (var category in categories)
            {
                categoryService.Delete(category.CategoryId);
            }
            //帖吧标签
            TagService tagService = new TagService(TenantTypeIds.Instance().BarThread());
            tagService.ClearTagsFromOwner(sectionId);

            //删除Logo
            DeleteLogo(sectionId);

            //删除推荐记录
            RecommendService recommendService = new RecommendService();
            recommendService.Delete(sectionId, TenantTypeIds.Instance().BarSection());

            int affectCount = barSectionRepository.Delete(section);
            if (affectCount > 0)
            {
                EventBus<BarSection>.Instance().OnAfter(section, new CommonEventArgs(EventOperationType.Instance().Delete()));
                EventBus<BarSection, AuditEventArgs>.Instance().OnAfter(section, new AuditEventArgs(null, section.AuditStatus));
            }
        }
Ejemplo n.º 51
0
        /// <summary>
        /// 管理我的标签,根据租户类型id查找
        /// </summary>
        /// <param name="spaceKey">用户spaceKey</param>
        /// <param name="tenantTypeId">租户类型id</param>
        /// <returns></returns>
        public ActionResult ManageMyTags(string spaceKey, string tenantTypeId)
        {
            //取所有用户标签
            TagService tagService = new TagService(tenantTypeId);
            IEnumerable<TagInOwner> tags = tagService.GetOwnerTags(UserContext.CurrentUser.UserId);

            pageResourceManager.InsertTitlePart("标签管理");

            return View(tags);
        }
        /// <summary>
        /// 标签显示帖子列表
        /// </summary>
        /// <returns></returns>
        public ActionResult ListsByTag(string tagName, SortBy_BarThread? sortBy, bool? isEssential, int pageIndex = 1)
        {
            tagName = WebUtility.UrlDecode(tagName);

            PagingDataSet<BarThread> pds = barThreadService.Gets(TenantTypeIds.Instance().Bar(), tagName, isEssential, sortBy ?? SortBy_BarThread.StageHitTimes, pageIndex);
            if (Request.IsAjaxRequest())
                return PartialView("_List", pds);
            var tag = new TagService(TenantTypeIds.Instance().BarThread()).Get(tagName);

            if (tag == null)
            {
                return HttpNotFound();
            }
            ViewData["tag"] = tag;

            pageResourceManager.InsertTitlePart(tagName);
            ViewData["sortBy"] = sortBy;
            return View(pds);
        }
Ejemplo n.º 53
0
        /// <summary>
        /// 标签显示日志列表
        /// </summary>
        public ActionResult ListByTag(string tagName, int pageIndex = 1)
        {
            tagName = WebUtility.UrlDecode(tagName);
            var tag = new TagService(TenantTypeIds.Instance().BlogThread()).Get(tagName);

            if (tag == null)
            {
                return HttpNotFound();
            }

            PagingDataSet<BlogThread> blogs = blogService.Gets(TenantTypeIds.Instance().User(), null, false, true, null, tagName, null, SortBy_BlogThread.DateCreated_Desc, 20, pageIndex);
            pageResourceManager.InsertTitlePart(tagName);
            ViewData["tag"] = tag;
            return View(blogs);
        }
Ejemplo n.º 54
0
        /// <summary>
        /// 创建关联个人标签
        /// </summary>
        /// <param name="spaceKey">用户spaceKey</param>
        public ActionResult AddTagToItem(string spaceKey, string tagName)
        {
            long userId = UserIdToUserNameDictionary.GetUserId(spaceKey);
            if (tagName != null)
            {
                TagService tagService = new TagService(TenantTypeIds.Instance().User());
                tagService.AddTagToItem(tagName, userId, userId);
            }

            return RedirectToAction("_ListMyUserTags", new { spaceKey = spaceKey, l = DateTime.UtcNow.Millisecond });
        }
Ejemplo n.º 55
0
 public ActionResult _InterestGroup()
 {
     TagService tagService = new TagService(TenantTypeIds.Instance().User());
     IUser currentUser = UserContext.CurrentUser;
     if (currentUser != null)
     {
         GroupFullTextQuery query = new GroupFullTextQuery();
         query.PageSize = 20;
         query.PageIndex = 1;
         query.Range = GroupSearchRange.TAG;
         query.Tags = tagService.GetTopTagsOfItem(currentUser.UserId, 100).Select(n => n.TagName);
         query.GroupIds = groupService.GetMyJoinedGroups(currentUser.UserId, 100, 1).Select(n => n.GroupId.ToString());
         //调用搜索器进行搜索
         GroupSearcher GroupSearcher = (GroupSearcher)SearcherFactory.GetSearcher(GroupSearcher.CODE);
         IEnumerable<GroupEntity> groupsTag = null;
         if (GroupSearcher.Search(query, true).Count == 0)
         {
             return View();
         }
         else
         {
             groupsTag = GroupSearcher.Search(query, true).AsEnumerable<GroupEntity>();
         }
         if (groupsTag.Count() < 20)
         {
             IEnumerable<GroupEntity> groupsFollow = groupService.FollowedUserAlsoJoinedGroups(currentUser.UserId, 20 - groupsTag.Count());
             return View(groupsTag.Union(groupsFollow));
         }
         else
         {
             return View(groupsTag);
         }
     }
     else
     {
         return View();
     }
 }
 public TagController(TagService tagService, PostService postService)
 {
     this.tagService = tagService;
     this.postService = postService;
 }
Ejemplo n.º 57
0
        public ActionResult _TagCloud(string tenantTypeId = "", int num = 20, bool isBlank = false)
        {
            TagService tagService = new TagService(tenantTypeId);
            Dictionary<Tag, int> tags = tagService.GetTopTags(num, SortBy_Tag.ItemCountDesc);

            ViewData["tenantTypeId"] = tenantTypeId;
            ViewData["isBlank"] = isBlank;
            return View(tags);
        }
Ejemplo n.º 58
0
 public ActionResult _Create_AddTopic()
 {
     TagService tagService = new TagService(TenantTypeIds.Instance().Microblog());
     return View(tagService.GetTopTags(6, null, SortBy_Tag.ItemCountDesc));
 }
Ejemplo n.º 59
0
        public ActionResult _FollowTopics(string spaceKey, int? topNumber)
        {
            FavoriteService favoriteService = new FavoriteService(TenantTypeIds.Instance().Tag());
            long userId = UserIdToUserNameDictionary.GetUserId(spaceKey);
            IEnumerable<Tag> tags = new TagService(TenantTypeIds.Instance().Microblog()).GetTags(favoriteService.GetTopObjectIds(userId, topNumber ?? 15));

            return View(tags);
        }
Ejemplo n.º 60
0
 public JsonResult ValidateTagName(string tagName, long tagId = 0)
 {
     bool result = false;
     if (tagId > 0)
     {
         result = true;
     }
     else
     {
         TagService tagService = new TagService(TenantTypeIds.Instance().Tag());
         Tag tag = tagService.Get(tagName);
         if (tag != null)
         {
             return Json("该内容已存在", JsonRequestBehavior.AllowGet);
         }
         else
         {
             result = true;
         }
     }
     return Json(result, JsonRequestBehavior.AllowGet);
 }