private async Task<ShareThing> PostShare(string message, string shareType, string tags, string shareContent, string reshareable, string pShareId, ShareService service) { var b64 = new DBTek.Crypto.Base64(); var tagb64s = string.IsNullOrWhiteSpace(tags) ? new string[0] : tags.Split('#'); var tagJsons = (from tagB64 in tagb64s select b64.DecodeString(tagB64)).ToList(); var ownTag = new { name = "ME", type = SharelinkTagConstant.TAG_TYPE_SHARELINKER, data = UserSessionData.UserId }; tagJsons.Add(ownTag.ToJson()); var reshare = true; try { reshare = bool.Parse(reshareable); } catch { }; var newShare = new ShareThing() { ShareTime = DateTime.UtcNow, Message = message, UserId = new ObjectId(UserSessionData.UserId), ShareType = shareType, ShareContent = shareContent, Tags = tagJsons.ToArray(), Reshareable = reshare, }; if (string.IsNullOrWhiteSpace(pShareId) == false) { newShare.PShareId = new ObjectId(pShareId); } if (newShare.IsUserShareType() == false) { Response.StatusCode = (int)HttpStatusCode.Forbidden; return null; } var share = await service.PostNewShareThing(newShare); return share; }
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); }