Ejemplo n.º 1
0
        /// <summary>
        /// 取得個人主題討論紀錄
        /// </summary>
        /// <param name="eventId"></param>
        /// <param name="memberId"></param>
        /// <returns></returns>
        public Infrastructure.ViewModel.DiscussionViewModel GetForMem(Guid eventId, int memberId)
        {
            //取得主題討論資訊
            var db  = _uow.DbContext;
            var adr = _uow.EntityRepository <ActDiscussion>().GetFirst(x => x.EventId == eventId);

            if (adr != null)
            {
                //取得留言資訊
                //var msg = _msgRep.Get(x => x.ActDiscussionId == adr.Id && x.CreateUser == memberId);
                var msg = db.ActDiscussionMsg.Where(x => x.ActDiscussionId == adr.Id);


                //取得活動牆資訊
                var ar = db.Activitys.Where(x => x.OuterKey == eventId).FirstOrDefault();
                if (ar.CardisShow == true)
                {
                    //取得建立主題討論者資訊
                    var memberInfo = _uow.MembersRepo.MemberInfo(adr.CreateUser.Value);

                    //取得發言(登入)者的資訊
                    var me = _uow.MembersRepo.MemberInfo(memberId);

                    //var fileInfo = googleService.GetFileList(systemManager,);
                    var vm = new Infrastructure.ViewModel.DiscussionViewModel()
                    {
                        ActivityId        = adr.Id,
                        LearningId        = adr.LearningId,
                        EventId           = eventId,
                        OuterKey          = eventId,
                        GoogleDriveFolder = adr.GoogleDriveUrl,
                        Creator           = adr.CreateUser.Value.ToString(),
                        CreateDate        = Convert.ToDateTime(adr.Created.Local.ToString()),
                        Created_Utc       = Convert.ToDateTime(adr.Created.Utc.Value),
                        Deleted_Utc       = adr.Deleted.Utc,
                        ModuleKey         = Utility.ParaCondition.ModuleType.Discussion,
                        CreatorAccount    = memberInfo.Account,
                        CreatorName       = memberInfo.Name,
                        Duration          = ar.Duration,
                        Name           = adr.Name,
                        CreatorPhoto   = memberInfo.Photo,
                        MsgSenderPhoto = me.Photo,
                        Description    = adr.Description,
                        ToRoomId       = ar.ToRoomId,
                        FileCount      = adr.FileCount,
                        Publish_Utc    = ar.Publish_Utc
                    };

                    vm.Msg  = new List <Infrastructure.BusinessObject.MsgContent>();
                    vm.Like = new Infrastructure.BusinessObject.LikeCount();
                    //先查看本主題討論是否有點過讚
                    var discussionLike = likeService.CheckLikeInfo(eventId, adr.Name, false, memberId);
                    if (discussionLike != null)
                    {
                        vm.Like = discussionLike;
                    }

                    #region //取得該主題討論區的所有留言
                    if (msg != null)
                    {
                        foreach (var _msg in msg)
                        {
                            var resMsg = new Infrastructure.BusinessObject.MsgContent();
                            resMsg.Like = new Infrastructure.BusinessObject.LikeCount();
                            var _info = db.ActModuleMessage.Where(t => t.ActivityId == ar.Id && t.Id == _msg.ActModuleMsgId && t.Visibility != false).FirstOrDefault();

                            //如果沒被刪除或有資料時
                            if (_info != null)
                            {
                                // var _msgMember = 0;
                                resMsg.MsgInfo = _info;
                                //取得建立主題討論者資訊
                                var msgMember = _uow.MembersRepo.MemberInfo(_info.CreateUser.Value);
                                resMsg.MemberInfo = new Infrastructure.ValueObject.LearningCircleMemberInfo()
                                {
                                    AccountId  = msgMember.Account,
                                    MemberId   = msgMember.Id,
                                    Email      = msgMember.Email,
                                    MemberName = msgMember.Name,
                                    Picture    = msgMember.Photo
                                };

                                /* if (_info.CreateUser != null)
                                 * {
                                 *   _msgMember = Convert.ToInt32(_info.CreateUser);
                                 * }*/
                                //查看是否有該留言的讚
                                var _likeInfo = likeService.CheckLikeInfo(_info.OuterKey, _info.Content, true, memberId);

                                //塞讚資訊
                                if (_likeInfo != null)
                                {
                                    resMsg.Like = _likeInfo;
                                    //vm.Like.Add(discussionLike);
                                }

                                //查看是否為自己留言
                                if (_info.CreateUser.Equals(memberId))
                                {
                                    resMsg.IsMy = true;
                                }
                                else
                                {
                                    resMsg.IsMy = false;
                                }

                                vm.Msg.Add(resMsg);
                            }
                        }
                    }
                    #endregion
                    return(vm);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }