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