public IActionResult GetAllPublishers(string keyword, int page = 1, int pageSize = 10, int sort = 0, string criteria = "publisherId")
        {
            try
            {
                var list       = _publisherService.GetPublishers(keyword);
                int totalCount = list.Count();
                criteria = criteria.ToLower();
                var response = _mapper.Map <IEnumerable <Publisher>, IEnumerable <PublisherForListDto> >(list);
                if (response != null)
                {
                    foreach (var item in response)
                    {
                        item.BookTitleCount = _publisherService.CountBookTitleInPublisher(item.PublisherID);
                    }
                }

                #region sort by criteria
                if (criteria.Equals("publisherid"))
                {
                    if (sort == 0)
                    {
                        response = response.OrderByDescending(x => x.PublisherID).Skip((page - 1) * pageSize).Take(pageSize);
                    }
                    else
                    {
                        response = response.OrderBy(x => x.PublisherID).Skip((page - 1) * pageSize).Take(pageSize);
                    }
                }
                if (criteria.Equals("publisher"))
                {
                    if (sort == 0)
                    {
                        response = response.OrderByDescending(x => x.publisher).Skip((page - 1) * pageSize).Take(pageSize);
                    }
                    else
                    {
                        response = response.OrderBy(x => x.publisher).Skip((page - 1) * pageSize).Take(pageSize);
                    }
                }
                if (criteria.Equals("booktitlecount"))
                {
                    if (sort == 0)
                    {
                        response = response.OrderByDescending(x => x.BookTitleCount).Skip((page - 1) * pageSize).Take(pageSize);
                    }
                    else
                    {
                        response = response.OrderBy(x => x.BookTitleCount).Skip((page - 1) * pageSize).Take(pageSize);
                    }
                }
                #endregion

                var paginationSet = new PaginationSet <PublisherForListDto>()
                {
                    Items = response,
                    Total = totalCount,
                };

                return(Ok(paginationSet));
            }
            catch (System.Exception)
            {
                return(BadRequest());
            }
        }