Esempio n. 1
0
        private string GetTypesSql(EventCategory eventCategory)
        {
            var sqlBuilder = new StringBuilder("(");
            var i          = 0;
            var eventTypes = EventCategoryTypeHelper.GetEventCategoryTypes(eventCategory);

            eventTypes.ForEach(e =>
            {
                sqlBuilder.Append((int)e);
                if (i < eventTypes.Count - 1)
                {
                    sqlBuilder.Append(", ");
                }
                i++;
            });

            sqlBuilder.Append(")");

            return(sqlBuilder.ToString());
        }
Esempio n. 2
0
        //public async Task<PagedList<EventViewModel>> GetUserReceivedEventsAsync(PagingParameters pagingParameters)
        //{
        //    var claim = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier);
        //    var myId = claim == null ? Guid.Empty : Guid.Parse(claim.Value);

        //    var queryableDto = from e in _dbContext.Events
        //                       join u in _dbContext.Users
        //                       on e.FromUserId equals u.Id
        //                       where e.ToUserId == myId
        //                       orderby e.CreatedTime descending
        //                       select new EventViewModel
        //                       {
        //                           FromUser = new UserViewModel
        //                           {
        //                               Id = u.Id,
        //                               Nickname = u.Nickname,
        //                               Avatar = u.Avatar,
        //                               OrgAuthStatus = u.OrgAuthStatus,
        //                               Followed = (from ur in _dbContext.UserRelations
        //                                           where ur.FollowerId == myId && ur.FollowedUserId == u.Id
        //                                           select ur.Id)
        //                                          .Any()
        //                           },
        //                           EventType = e.EventType,
        //                           Image = (from p in _dbContext.Posts
        //                                    where p.Id == e.PostId
        //                                    select p.Image)
        //                                   .SingleOrDefault(),
        //                           CreatedTime = e.CreatedTime,
        //                           PostId = e.PostId,
        //                           CommentId = e.CommentId,
        //                           CommentText = e.CommentText,
        //                           CircleId = e.CircleId,
        //                           CircleName = e.CircleName,
        //                           OrderId = e.OrderId,
        //                           Processed = e.Processed,
        //                           Readed = e.Readed,
        //                           Id = e.Id
        //                       };

        //    return await PagedList<EventViewModel>.ToPagedListAsync(queryableDto, pagingParameters);
        //}

        public async Task <PagedList <EventViewModel> > GetUserCategoryEventsAsync(EventCategory eventCategory, PagingParameters pagingParameters)
        {
            var myId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var eventTypes = EventCategoryTypeHelper.GetEventCategoryTypes(eventCategory);

            var queryableDto = from e in _dbContext.Events
                               where e.ToUserId == myId && eventTypes.Contains(e.EventType)
                               orderby e.CreatedTime descending
                               select new EventViewModel
            {
                FromUser = e.FromUser == null ? null : new UserViewModel
                {
                    Id            = e.FromUser.Id,
                    Nickname      = e.FromUser.Nickname,
                    Avatar        = e.FromUser.Avatar,
                    OrgAuthStatus = e.FromUser.OrgAuthStatus,
                    Followed      = (from ur in _dbContext.UserRelations
                                     where ur.FollowerId == myId && ur.FollowedUserId == e.FromUser.Id
                                     select ur.Id)
                                    .Any()
                },
                EventType = e.EventType,
                Image     = (from p in _dbContext.Posts
                             where p.Id == e.PostId
                             select p.Image)
                            .SingleOrDefault(),
                CreatedTime = e.CreatedTime,
                PostId      = e.PostId,
                CommentId   = e.CommentId,
                CommentText = e.CommentText,
                CircleId    = e.CircleId,
                CircleName  = e.CircleName,
                OrderId     = e.OrderId,
                Processed   = e.Processed,
                Readed      = e.Readed,
                Id          = e.Id
            };

            //var queryableDto2 = from e in _dbContext.Events
            //                   join u in _dbContext.Users
            //                   on e.FromUserId equals u.Id
            //                   where e.ToUserId == myId && eventTypes.Contains(e.EventType)
            //                   orderby e.CreatedTime descending
            //                   select new EventViewModel
            //                   {
            //                       FromUser = new UserViewModel
            //                       {
            //                           Id = u.Id,
            //                           Nickname = u.Nickname,
            //                           Avatar = u.Avatar,
            //                           OrgAuthStatus = u.OrgAuthStatus,
            //                           Followed = (from ur in _dbContext.UserRelations
            //                                       where ur.FollowerId == myId && ur.FollowedUserId == u.Id
            //                                       select ur.Id)
            //                                      .Any()
            //                       },
            //                       EventType = e.EventType,
            //                       Image = (from p in _dbContext.Posts
            //                                where p.Id == e.PostId
            //                                select p.Image)
            //                               .SingleOrDefault(),
            //                       CreatedTime = e.CreatedTime,
            //                       PostId = e.PostId,
            //                       CommentId = e.CommentId,
            //                       CommentText = e.CommentText,
            //                       CircleId = e.CircleId,
            //                       CircleName = e.CircleName,
            //                       OrderId = e.OrderId,
            //                       Processed = e.Processed,
            //                       Readed = e.Readed,
            //                       Id = e.Id
            //                   };

            return(await PagedList <EventViewModel> .ToPagedListAsync(queryableDto, pagingParameters));
        }