/// <summary> /// 某個留言被回覆的推播 /// </summary> /// <param name="circleKey">學習圈代碼</param> /// <param name="eventId">主題討論代碼</param> /// <param name="eventName">主題討論名稱</param> /// <param name="replyMember">回覆者資訊</param> /// <param name="beReplyMemberInfo">被回覆的人資訊</param> /// <param name="isTag">是否為回覆</param> /// <returns></returns> private async Task PushMsgReplyAsync(string circleKey, Guid eventId, string eventName, Infrastructure.Entity.Member replyMember, Infrastructure.Entity.Member beReplyMemberInfo, bool?isTag = false) { var eventMessage = isTag.Value ? (string.Format("{0}回應了一則主題討論的回覆", replyMember.Name)) : (string.Format("{0}回應了一則主題討論的留言", replyMember.Name)); var noticeMsg = isTag.Value ? string.Format("{0}回應了一則主題討論的回覆:「{1}」", replyMember.Name, eventName) : string.Format("{0}回應了一則主題討論的留言:「{1}」", replyMember.Name, eventName); discussionMsgService = new DiscussionFuncMsg(); // var pushMember =replyMember.Id!= beReplyMemberInfo.Id ? new string[1] { beReplyMemberInfo.Account } : new string[0]; var replyMembers = discussionMsgService.GetReplyMemberList(eventId, replyMember).ToList(); if (replyMembers.Count() > 0) { noticeService = new NoticeService(); //新增多筆訊息資料 noticeService.AddMultipleNotice(replyMembers, eventId, circleKey, noticeMsg); //廣播訊息資訊 SendNotice(replyMembers, circleKey); var pushService = new PushService(); if (isTag.Value) { await pushService.PushMsgAsync("ToDiscussionActivity", circleKey, eventId, "推播_查看主題討論-回覆被回覆", replyMembers.Select(t => t.Account).ToArray(), eventMessage); } else { await pushService.PushMsgAsync("ToDiscussionActivity", circleKey, eventId, "推播_查看主題討論-留言被回覆", replyMembers.Select(t => t.Account).ToArray(), eventMessage); } } }
/// <summary> /// 主題討論留言推播 /// </summary> /// <param name="circleKey"></param> /// <param name="eventId"></param> /// <param name="eventName"></param> /// <param name="replyMemberInfo"></param> /// <returns></returns> private async Task PushDiscussionSendMsgAsync(string circleKey, Guid eventId, string eventName, Infrastructure.Entity.Member replyMemberInfo) { discussionMsgService = new DiscussionFuncMsg(); var eventMessage = string.Format("{0}回應了一則主題討論", replyMemberInfo.Name); var noticeMsg = string.Format("{0}回應了一則主題討論:「 {1}」", replyMemberInfo.Name, eventName); var replyMembers = discussionMsgService.GetReplyMemberList(eventId, replyMemberInfo).ToList(); noticeService = new NoticeService(); //新增多筆訊息資料 noticeService.AddMultipleNotice(replyMembers, eventId, circleKey, noticeMsg); //廣播訊息資訊 SendNotice(replyMembers, circleKey); var pushMembers = replyMembers.Select(t => t.Account).ToArray(); var pushService = new PushService(); if (replyMembers.Count > 0) { await pushService.PushMsgAsync("ToDiscussionActivity", circleKey, eventId, "推播_查看主題討論-被留言", pushMembers, eventMessage); } }
/// <summary> /// 建立新的留言資訊 /// </summary> /// <returns></returns> public async Task <IHttpActionResult> Post() { var response = new Infrastructure.ViewModel.Base.ResultBaseModel <DiscussionSendMsg>(); var actModuleMessageService = new MessageService(); var discussionservice = new DiscussionService(); #region 將request值塞入model中 await SetFileData(); if (multipartFormDataStreamProvider.FormData == null) { response.Message = "遺漏參數"; response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; return(Content(HttpStatusCode.BadRequest, response)); } //設定參數 var token = multipartFormDataStreamProvider.FormData.Get("iCanToken") != null?multipartFormDataStreamProvider.FormData.GetValues("iCanToken")[0] : null; var circleKey = multipartFormDataStreamProvider.FormData.Get("classId") != null?multipartFormDataStreamProvider.FormData.GetValues("classId")[0] : null; var activityOuterKey = multipartFormDataStreamProvider.FormData.Get("activityOuterKey") != null?multipartFormDataStreamProvider.FormData.GetValues("activityOuterKey")[0] : null; var msg = multipartFormDataStreamProvider.FormData.Get("msg") != null?multipartFormDataStreamProvider.FormData.GetValues("msg")[0] : null; var commentOuterKey = multipartFormDataStreamProvider.FormData.Get("commentOuterKey") != null?multipartFormDataStreamProvider.FormData.GetValues("commentOuterKey")[0] : null; var replyOuterKey = multipartFormDataStreamProvider.FormData.Get("replyOuterKey") != null?multipartFormDataStreamProvider.FormData.GetValues("replyOuterKey")[0] : null; token = (token == null && multipartFormDataStreamProvider.FormData.Get("token") != null) ? multipartFormDataStreamProvider.FormData.GetValues("token")[0] : token; circleKey = (circleKey == null && multipartFormDataStreamProvider.FormData.Get("circleKey") != null) ? multipartFormDataStreamProvider.FormData.GetValues("circleKey")[0] : circleKey; multipartFormDataModel = new DiscussionSendMsgRequestModel() { ActivityOuterKey = activityOuterKey, CircleKey = circleKey, CommentOuterKey = commentOuterKey, Msg = msg, ReplyOuterKey = replyOuterKey, Token = Guid.Parse(token) }; #endregion memberService = new MemberService(); //驗證token var checkMember = memberService.TokenToMember(multipartFormDataModel.Token).Result; if (checkMember != null) { //查看主題討論是否存在 var discussionDBData = discussionservice.GetDBDiscussionInfo(multipartFormDataModel.ActivityOuterKey); if (discussionDBData != null) { discussionMsgService = new DiscussionFuncMsg(); var newMsg = discussionMsgService.AddMessage(multipartFormDataModel.CircleKey, multipartFormDataModel.Msg, checkMember.Id, multipartFormDataModel.ActivityOuterKey, multipartFormDataModel.CommentOuterKey, multipartFormDataModel.ReplyOuterKey); //新增成功 if (newMsg != null) { //是否有附加檔案 if (fileStreams != null && fileStreams.Count > 0) { var fileService = new FileService(); var discussionFileService = new DiscussionFuncFile(); // var files = await MutipartFileProxy(checkMember); var uploadFileInfo = fileService.UploadFiles(checkMember.Id, multipartFormDataFiles, fileStreams.ToArray()); newMsg.Comment.Photos = uploadFileInfo; //建立主題討論與檔案的關聯 var msgFileReference = discussionFileService.DiscussionFileReference(discussionDBData.Id, uploadFileInfo, newMsg.Id); } response.Success = true; response.Message = "成功建立留言"; objHub = GlobalHost.ConnectionManager.GetHubContext <SignalRHub.WiicoHub>(); objHub.Clients.Group(multipartFormDataModel.CircleKey.ToLower()).appendComment(newMsg); response.Data = new DiscussionSendMsg[1] { newMsg }; //推播給回覆者訊息 if (newMsg.Comment.Parent.HasValue) { //查出被回覆訊息資訊 var replyMsgInfo = actModuleMessageService.GetMsgDBInfoByOuterKey(newMsg.CommentOuterkey); memberService = new MemberService(); //查出被回覆者資訊 // var replyMemberInfo = memberService.GetMemberInfo(replyMsgInfo.CreateUser.Value); var replyMemberInfo = memberService.UserIdToAccount(replyMsgInfo.CreateUser.Value); if (newMsg.Comment.ReplyOuterKey == null) { //推播給被回覆者 PushMsgReplyAsync(multipartFormDataModel.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, false); } else { PushMsgReplyAsync(multipartFormDataModel.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, true); } } //推播給學習圈內所有人 else { PushDiscussionSendMsgAsync(multipartFormDataModel.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember); } } else { response.Success = false; response.Message = "建立留言失敗"; response.State = Infrastructure.ViewModel.Base.LogState.Error; } } else { response.Success = false; response.Message = "主題討論不存在"; response.State = Infrastructure.ViewModel.Base.LogState.Error; } } else { response.Success = false; response.Message = "驗證身分失敗"; response.State = Infrastructure.ViewModel.Base.LogState.Logout; } return(Ok(response)); }
public Infrastructure.ViewModel.Base.ResultBaseModel <DiscussionLoadComment> Get(Guid token, string circleKey, string activityOuterKey, string commentOuterKey, int maxResult = 10, bool?isNewer = true) { var response = new Infrastructure.ViewModel.Base.ResultBaseModel <DiscussionLoadComment>(); response.Success = false; response.Data = new DiscussionLoadComment[0]; try { //訊息列表 var msgData = new List <DiscussionMessage>(); //回應資訊 var resultData = new DiscussionLoadComment(); memberService = new MemberService(); // 是否為合法使用者 var checkMember = memberService.TokenToMember(token); discussionMsgService = new DiscussionFuncMsg(); if (checkMember != null) { var replyOuterKey = Guid.Empty; var eventId = Service.Utility.OuterKeyHelper.CheckOuterKey(activityOuterKey); if (eventId.HasValue == false) { response.Message = "outerKey格式錯誤"; return(response); } //如果要查中間 if (commentOuterKey != null) { var replyEventId = Service.Utility.OuterKeyHelper.CheckOuterKey(activityOuterKey); if (replyEventId.HasValue == false) { response.Message = "outerKey格式錯誤"; return(response); } replyOuterKey = replyEventId.Value; resultData.OuterKey = commentOuterKey; msgData = discussionMsgService.GetMessageList(eventId.Value, replyOuterKey, isNewer).OrderByDescending(t => t.CreateTime).Take(maxResult).Reverse().ToList(); } //查全部 else { msgData = discussionMsgService.GetMessageList(eventId.Value, null, isNewer).OrderBy(t => t.CreateTime).ToList(); resultData.OuterKey = activityOuterKey; } if (msgData != null) { resultData.Comments = msgData; response.Success = true; response.Message = "查詢成功"; response.Data = new DiscussionLoadComment[1] { resultData }; } else { response.Success = false; response.Message = "查詢失敗"; } } return(response); } catch (Exception ex) { var msg = string.Format("{0}\n\n{1}", ex.Message, ex.StackTrace); response.Success = false; response.Message = "取得留言發生意外: " + msg; return(response); } }
/// <summary> /// 建立新的留言資訊 /// </summary> /// <returns></returns> public IHttpActionResult Post() { var result = new Infrastructure.ViewModel.Base.ResultBaseModel <DiscussionSendMsg>(); var requestFormData = HttpContext.Current.Request.Form; var actModuleMessageService = new MessageService(); var discussionservice = new DiscussionService(); #region 將request值塞入model中 var msgData = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionSendMsgRequestModel() { Token = Guid.Parse(requestFormData["token"].ToString()), CircleKey = requestFormData["circleKey"].ToString(), ActivityOuterKey = requestFormData["activityOuterKey"].ToString() }; if (requestFormData["commentOuterKey"] != null) { msgData.CommentOuterKey = requestFormData["commentOuterKey"].ToString(); } if (requestFormData["replyOuterKey"] != null) { msgData.ReplyOuterKey = requestFormData["replyOuterKey"].ToString(); } if (requestFormData["msg"] != null) { msgData.Msg = HttpUtility.UrlDecode(requestFormData["msg"].ToString()); } #endregion var msgFiles = HttpContext.Current.Request.Files; memberService = new MemberService(); //驗證token var checkMember = memberService.TokenToMember(msgData.Token).Result; if (checkMember != null) { //查看主題討論是否存在 var discussionDBData = discussionservice.GetDBDiscussionInfo(msgData.ActivityOuterKey); if (discussionDBData != null) { discussionMsgService = new DiscussionFuncMsg(); var newMsg = discussionMsgService.AddMessage(msgData.CircleKey, msgData.Msg, checkMember.Id, msgData.ActivityOuterKey, msgData.CommentOuterKey, msgData.ReplyOuterKey); //新增成功 if (newMsg != null) { //是否有附加檔案 if (msgFiles.Count > 0) { var fileService = new FileService(); var discussionFileService = new DiscussionFuncFile(); // var files = await MutipartFileProxy(checkMember); var uploadFileInfo = fileService.UploadFile(checkMember.Id, msgFiles); newMsg.Comment.Photos = uploadFileInfo; //建立主題討論與檔案的關聯 var msgFileReference = discussionFileService.DiscussionFileReference(discussionDBData.Id, uploadFileInfo, newMsg.Id); } result.Success = true; result.Message = "成功建立留言"; objHub = GlobalHost.ConnectionManager.GetHubContext <WiicoApi.SignalRHub.WiicoHub>(); objHub.Clients.Group(msgData.CircleKey.ToLower()).appendComment(newMsg); result.Data = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionSendMsg[1] { newMsg }; //推播給回覆者訊息 if (newMsg.Comment.Parent.HasValue) { //查出被回覆訊息資訊 var replyMsgInfo = actModuleMessageService.GetMsgDBInfoByOuterKey(newMsg.CommentOuterkey); memberService = new MemberService(); //查出被回覆者資訊 var replyMemberInfo = memberService.UserIdToAccount(replyMsgInfo.CreateUser.Value); if (newMsg.Comment.ReplyOuterKey == null) { //推播給被回覆者 PushMsgReplyAsync(msgData.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, false); } else { PushMsgReplyAsync(msgData.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember, replyMemberInfo, true); } } //推播給學習圈內所有人 else { PushDiscussionSendMsgAsync(msgData.CircleKey, newMsg.Comment.EventId, discussionDBData.Name, checkMember); } } else { result.Success = false; result.Message = "建立留言失敗"; } } else { result.Success = false; result.Message = "主題討論不存在"; } } else { result.Success = false; result.Message = "驗證身分失敗"; } return(Ok(result)); }