コード例 #1
0
        private async Task <int> GetForumNewMessages(Data.Forums.Forum forum, IEnumerable <LastForumView <TUser> > lastViewed)
        {
            var last = lastViewed.Where(l => l.Forum == forum).Select(f => f.LastView).SingleOrDefault();
            var numberOfNewMessages = await session.Select <Thread <TUser> >().CountAll().From().Where(t => t.Forum == forum && t.CreationDate > last).ScalarAsync <int>();

            numberOfNewMessages += await session.Select <CommentInThread <TUser> >().CountAll().From().LeftJoinOnId(x => x.Commentable).LeftJoinOnId(x => x.Comment).Where(x => x.Comment.CreationDate > last && x.Commentable.Forum == forum).ScalarAsync <int>();

            return(numberOfNewMessages);
        }
コード例 #2
0
        public async Task <IHttpActionResult <ForumView> > Post([FromBody] ForumView value)
        {
            using (var transaction = session.BeginTransaction())
            {
                var forum = new Data.Forums.Forum {
                    Name = value.Name, ReadRole = value.ReadRole, WriteRole = value.WriteRole
                };
                await session.SaveAsync(forum);

                transaction.Commit();
                value = forumDataMapping.ToForumView(forum, 0);
            }
            return(Created("GetForum", value.Id, value));
        }
コード例 #3
0
 public ForumView ToForumView(Data.Forums.Forum forum, int numberOfNewComments)
 {
     if (forum == null)
     {
         return(null);
     }
     return(new ForumView
     {
         Id = forum.Id,
         Name = forum.Name,
         NumberOfNewMessages = numberOfNewComments,
         ReadRole = forum.ReadRole,
         WriteRole = forum.WriteRole
     });
 }