/// <summary> /// 取得主題討論詳細資訊 /// </summary> /// <param name="eventId">活動代碼</param> /// <param name="msgEventId">留言代碼 / 回覆代碼</param> /// <returns></returns> public DiscussionDetail GetDetailByEventId(Guid eventId, Guid?msgEventId = null, int?maxResult = 10) { var db = _uow.DbContext; //取得活動資料 var sqlData = db.Activitys.FirstOrDefault(t => t.OuterKey == eventId); if (sqlData == null) { return(null); } else { //取得主題討論詳細資料 var discussionInformation = db.ActDiscussion.Where(t => t.EventId == eventId).FirstOrDefault(); var creatorInfo = db.Members.Find(sqlData.CreateUser); var outerKey = Utility.OuterKeyHelper.GuidToPageToken(eventId); var result = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionDetail() { ModuleKey = "discussion", sOuterKey = outerKey, Publish_Utc = sqlData.Publish_Utc, ToRoomId = sqlData.ToRoomId, Id = sqlData.Id, ActivityDate = sqlData.ActivityDate, StartDate = sqlData.StartDate, Duration = sqlData.Duration, Title = discussionInformation.Name, Content = discussionInformation.Description, Created_Utc = discussionInformation.Created.Utc.Value, Comments = new List <DiscussionMessage>() }; if (sqlData.Deleted != null) { result.Deleted_Utc = sqlData.Deleted.Local; } //查詢留言者資訊 if (creatorInfo != null) { // var creatorInfo = new iThink.Service.Service.MemberService().GetPhotoMember(creatorAccount); result.CreatorAccount = creatorInfo.Account; result.CreatorPhoto = creatorInfo.Photo; result.CreatorName = creatorInfo.Name; } //查詢主題討論檔案 var checkFiles = discussionFileService.GetDiscussionFileByEventId(eventId); if (checkFiles != null) { result.FileList = checkFiles; } else { result.FileList = new List <FileStorageViewModel>(); } //查詢主題討論按讚資訊 var checkLike = discussionLikeService.GetLikeArrayByEventId(eventId); if (checkLike != null) { result.LikeArray = checkLike.ToArray(); } var checkMsgList = new List <Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionMessage>(); //總共留言+回覆筆數 var msgCount = 0; //所有留言回覆列表 var totalMsgList = discussionMsgService.GetAllMsgList(eventId); result.TotalCount = totalMsgList.Count(); //查詢主題討論的留言 if (msgEventId == null) { //取得主題留言列表 checkMsgList = discussionMsgService.GetMessageList(eventId); if (checkMsgList != null) { msgCount = checkMsgList.Count(); if (msgCount > maxResult.Value) { result.Comments = checkMsgList.OrderByDescending(t => t.CreateTime).Take(maxResult.Value).Reverse().ToList(); result.OlderCount = checkMsgList.Count() - maxResult.Value; } else { result.Comments = checkMsgList.OrderBy(t => t.CreateTime).ToList(); result.OlderCount = 0; } } } //特定留言查詢 else { //判斷msgEventId是否為回覆 true 為回覆 | false 為留言 var checkMsgIsReply = (db.ActModuleMessage.FirstOrDefault(t => t.OuterKey == msgEventId.Value && t.Parent != null)) != null ? true : false; if (checkMsgIsReply) { //查詢回覆所屬的留言結果 checkMsgList = discussionMsgService.GetDiscussionMsgList(eventId, msgEventId.Value); } else { //特定留言查詢後的列表 checkMsgList = discussionMsgService.GetMessageList(eventId, msgEventId); } var olderCount = totalMsgList.Where(t => t.Parent == null || t.Parent == 0).Count(); result.OlderCount = olderCount - checkMsgList.Count(); checkMsgList = checkMsgList.Take(maxResult.Value).ToList(); result.Comments = checkMsgList.OrderBy(t => t.CreateTime).ToList(); } return(result); } }
/// <summary> /// 編輯主題討論後的查詢 /// </summary> /// <param name="eventId"></param> /// <returns></returns> public DiscussionDetail GetUpdateDetailByEventId(Guid eventId, int discussionId, string[] removeFiles) { var db = _uow.DbContext; //刪除主題討論與檔案的關聯 discussionFileService.DeleteDiscussionFileReference(discussionId, removeFiles); //取得活動資料 var sqlData = db.Activitys.FirstOrDefault(t => t.OuterKey == eventId); if (sqlData == null) { return(null); } else { //取得主題討論詳細資料 var discussionInformation = db.ActDiscussion.Where(t => t.EventId == eventId).FirstOrDefault(); var creatorAccount = db.Members.Find(sqlData.CreateUser); var outerKey = Utility.OuterKeyHelper.GuidToPageToken(eventId); var result = new Infrastructure.ViewModel.ActivityFunction.Discussion.DiscussionDetail() { ModuleKey = "discussion", sOuterKey = outerKey, Publish_Utc = sqlData.Publish_Utc, ToRoomId = sqlData.ToRoomId, Id = sqlData.Id, ActivityDate = sqlData.ActivityDate, StartDate = sqlData.StartDate, Duration = sqlData.Duration, Deleted_Utc = sqlData.Deleted.Utc, Title = discussionInformation.Name, Content = discussionInformation.Description, Created_Utc = discussionInformation.Created.Utc.Value }; //查詢留言者資訊 if (creatorAccount != null) { // var creatorInfo = new iThink.Service.Service.MemberService().GetPhotoMember(creatorAccount); result.CreatorAccount = creatorAccount.Account; result.CreatorPhoto = creatorAccount.Photo; result.CreatorName = creatorAccount.Name; } //查詢主題討論檔案 var checkFiles = discussionFileService.GetDiscussionFileByEventId(eventId); if (checkFiles != null) { result.FileList = checkFiles; } else { result.FileList = new List <FileStorageViewModel>(); } //查詢主題討論按讚資訊 var checkLike = discussionLikeService.GetLikeArrayByEventId(eventId); if (checkLike != null) { result.LikeArray = checkLike.ToArray(); } //所有留言回覆列表 var totalMsgList = discussionMsgService.GetAllMsgList(eventId); result.TotalCount = totalMsgList.Count(); return(result); } }