Пример #1
0
        public ActivitysNoticeViewModel GetNoticeList(int memberId, int maxResult, int?ActivityNoticeId = 0)
        {
            var data = _uow.ActivitysNoticesRepo.GetActivitysNoticeDatas(memberId, maxResult, ActivityNoticeId);

            /* foreach(var item in data)
             * {
             *   item.OuterKey = DeveloperTools.ApiData.Utility.GuidToPageToken(item.EventId);
             * }*/

            var rtn = new ActivitysNoticeViewModel()
            {
                UnreadCount = (data.FirstOrDefault() == null ? 0 : data.FirstOrDefault().UnreadCount),
                Data        = data
            };

            return(rtn);
        }
Пример #2
0
        public ActivitysNoticeViewModel GetNoticeList(string circleKey, int memberId, int maxResult, int?ActivityNoticeId = 0)
        {
            var db     = _uow.DbContext;
            var result = new ActivitysNoticeViewModel();
            //查出目前MemberId在circleKey中的已讀情況
            var checkLastRead = db.ActivitysReadMark.FirstOrDefault(t => t.ToRoomId == "myNotice" && t.memberId == memberId);
            var unReadCount   = (checkLastRead != null && checkLastRead.LastReadActivityIdEnd > 0) ?
                                db.ActivitysNotice.Where(t => t.ToRoomId.ToLower() == circleKey.ToLower() && t.Id > checkLastRead.LastReadActivityIdEnd && t.MemberId == memberId).Count() :
                                db.ActivitysNotice.Where(t => t.ToRoomId.ToLower() == circleKey.ToLower() && t.MemberId == memberId).Count();
            var finalData = new List <Infrastructure.ValueObject.ActivitysNoticeData>();
            //只取得活動相關的動態通知
            var actData = (from n in db.ActivitysNotice
                           join lc in db.LearningCircle on n.ToRoomId equals lc.LearningOuterKey
                           join a in db.Activitys on n.EventId equals a.OuterKey
                           join m in db.Members on n.MemberId equals m.Id
                           where n.MemberId == memberId
                           select new Infrastructure.ValueObject.ActivitysNoticeData()
            {
                CircleId = lc.Id,
                CircleName = lc.Name,
                Id = n.Id,
                EventId = n.EventId,
                NoticeContent = n.NoticeContent,
                HasClick = n.HasClick,
                CreateTime = n.CreateTime,
                ModuleKey = a.ModuleKey,
                Title = (a.ModuleKey == "signIn" && a.ModuleKey != null) ? "點名活動(" + a.Created.Utc.Value.Year + "/" + a.Created.Utc.Value.Month + "/" + a.Created.Utc.Value.Day + " " + a.Created.Utc.Value.Hour + ":" + a.Created.Utc.Value.Minute + ")" : null,
                ToRoomId = lc.LearningOuterKey,
                DeleteTime = a.Deleted.Utc,
                //  IsDelete = a.Deleted.Utc.HasValue ? true : false,
                UnreadCount = unReadCount
            }).OrderByDescending(t => t.CreateTime).Take(maxResult);
            //只取得訊息相關的動態通知
            var msgData = (from n in db.ActivitysNotice
                           join lc in db.LearningCircle on n.ToRoomId equals lc.LearningOuterKey
                           join amm in db.ActModuleMessage on n.EventId equals amm.OuterKey
                           join a in db.Activitys on amm.ActivityId equals a.Id
                           join m in db.Members on n.MemberId equals m.Id
                           where n.MemberId == memberId
                           select new Infrastructure.ValueObject.ActivitysNoticeData()
            {
                CircleId = lc.Id,
                CircleName = lc.Name,
                Id = n.Id,
                EventId = n.EventId,
                NoticeContent = n.NoticeContent,
                HasClick = n.HasClick,
                CreateTime = n.CreateTime,
                ModuleKey = a.ModuleKey,
                ToRoomId = lc.LearningOuterKey,
                DeleteTime = a.Deleted.Utc,
                // IsDelete = a.Deleted.Utc.HasValue ? true : false,
                UnreadCount = unReadCount
            }).OrderByDescending(t => t.CreateTime).Take(maxResult);


            if (ActivityNoticeId > 0)
            {
                actData = actData.Where(t => t.Id < ActivityNoticeId);
                msgData = msgData.Where(t => t.Id < ActivityNoticeId);
            }


            finalData.AddRange(actData);
            finalData.AddRange(msgData);
            foreach (var data in finalData)
            {
                data.IsDelete = (data.DeleteTime.HasValue ? true : false);
                data.OuterKey = Utility.OuterKeyHelper.GuidToPageToken(data.EventId);
            }
            result.UnreadCount = unReadCount;
            result.Data        = finalData.OrderByDescending(t => t.CreateTime).Take(maxResult).ToList();
            return(result);
        }