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()); }
//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)); }