public async Task <QueryResult <Likes> > ListAsync(LikesQuery query) { IQueryable <Likes> queryable = _context.Likes.AsNoTracking(); if (!String.IsNullOrEmpty(query.RequestIpAddress)) { queryable = queryable.Where(w => w.RequestIpAddress == query.RequestIpAddress); } if (!String.IsNullOrEmpty(query.RequestUserAgent)) { queryable = queryable.Where(w => w.RequestUserAgent == query.RequestUserAgent); } if (!String.IsNullOrEmpty(query.RequestUsername)) { queryable = queryable.Where(w => w.RequestUsername == query.RequestUsername); } if (!String.IsNullOrEmpty(query.ClientReferenceId)) { queryable = queryable.Where(w => w.ClientReferenceId == query.ClientReferenceId); } if (!String.IsNullOrEmpty(query.PostId)) { queryable = queryable.Where(w => w.PostId == query.PostId); } int totalItems = await queryable.CountAsync(); List <Likes> likes = await queryable.OrderByDescending(w => w.CreatedOn).Skip((query.ViewPage - 1) * query.ItemsPerPage) .Take(query.ItemsPerPage) .ToListAsync(); return(new QueryResult <Likes> { Items = likes, TotalItems = totalItems, ViewPage = query.ViewPage, ItemsPerPage = query.ItemsPerPage, }); }
public async Task <ApiResponse <LikesQueryResult <Likes> > > GetAllLikesForPost(LikesQuery query) { ApiResponse <LikesQueryResult <Likes> > response = new ApiResponse <LikesQueryResult <Likes> >(); var resultMessage = ""; try { QueryResult <Likes> result = await _likeRepository.ListAsync(query); if (result == null || result.TotalItems == 0) { resultMessage = "Coult not find any likes for specified query"; throw new AppException(resultMessage); } resultMessage = "Data Retrieved"; response.Message = resultMessage; response.Status = Helpers.ApiReponseStatusCodes.Success; response.Data = new LikesQueryResult <Likes> { TotalLikes = result.TotalItems, Likes = result.Items, ViewPage = result.ViewPage, LikesPerPage = result.ItemsPerPage }; return(response); } catch (Exception ex) { _logger.Log(LogLevel.Error, ex.StackTrace); _logger.Log(LogLevel.Error, ex.Message); throw new AppException(ex.Message); } }