private async Task<object> SetShareFinished(ShareThing newShare, SharelinkTagService tagService, ShareService service)
        {
            var mails = new List<ShareThingMail>();
            IEnumerable<dynamic> dynamicTags = from tagJson in newShare.Tags select JsonConvert.DeserializeObject(tagJson);
            var newShareTags = (from dt in dynamicTags
                                select new SharelinkTag()
                                {
                                    Data = dt.data,
                                    TagType = dt.type
                                }).ToList();
            var isPrivateShare = newShareTags.Count(st => st.IsPrivateTag()) > 0;
            newShareTags.Add(new SharelinkTag()
            {
                Data = UserSessionData.UserId,
                TagType = SharelinkTagConstant.TAG_TYPE_SHARELINKER
            });
            mails.Add(new ShareThingMail()
            {
                ShareId = newShare.Id,
                Time = DateTime.UtcNow,
                ToSharelinker = new ObjectId(UserSessionData.UserId)
            });

            if (isPrivateShare == false)
            {
                await MatchLinkerTags(tagService, newShare, mails, newShareTags);
            }
            service.InsertMails(mails);
            Startup.ServicesProvider.GetBahamutPubSubService().PublishShareMessages(mails);
            return new { message = "ok" };
        }
        private async Task SendShowToLinkerTagMessage(ShareService shareService, SharelinkerService userService, ObjectId userId, SharelinkTag newTag)
        {
            var newShare = new ShareThing()
            {
                ShareTime = DateTime.UtcNow,
                ShareType = newTag.IsFocus ? ShareThingConstants.SHARE_TYPE_MESSAGE_FOCUS_TAG : ShareThingConstants.SHARE_TYPE_MESSAGE_ADD_TAG,
                UserId = userId,
                ShareContent = SharelinkTagToResultObject(newTag.Id.ToString(),newTag).ToJson()
            };
            await shareService.PostNewShareThing(newShare);

            var linkers = await userService.GetUserlinksOfUserId(UserSessionData.UserId);
            var linkerIds = from l in linkers select l.SlaveUserObjectId;

            var newMails = new List<ShareThingMail>();
            foreach (var linker in linkerIds)
            {
                if (!Startup.SharelinkCenterList.Contains(linker.ToString()))
                {
                    var newMail = new ShareThingMail()
                    {
                        ShareId = newShare.Id,
                        Time = DateTime.UtcNow,
                        ToSharelinker = linker
                    };
                    newMails.Add(newMail);
                }
            }
            shareService.InsertMails(newMails);

            Startup.ServicesProvider.GetBahamutPubSubService().PublishShareMessages(newMails);
        }