public HttpResponseMessage PostAds(AdQueryModel data, string sort = "date", string dir = "desc", string items = Util.ITEMNUMBER, string pageno = Util.PAGENUMBER)
        {
            AdsResult             result = new AdsResult();
            IEnumerable <AdModel> adModel;
            SearchHelper          helper = new SearchHelper();

            int           noOfItems  = Util.parseQStringNumber(items);
            int           pageNumber = Util.parseQStringNumber(pageno, true);
            SortBy        sortBy     = Util.parseQstringSortBy(sort);
            SortDirection sortDir    = Util.parseQstringSortDirection(dir);

            try
            {
                if (data == null)
                {
                    adModel = unitOfWork.AdRepository.Get().Select(x => Mapper.Map <AdModel>(x));
                }
                else
                {
                    adModel = unitOfWork.AdRepository.Get(a => helper.AdSearchCriteria(a, data)).Select(x => Mapper.Map <AdModel>(x));
                }

                if (adModel != null)
                {
                    //picking up total number of records before we do sorting and get results only for one page
                    result.numberOfResults = adModel.Count();
                    adModel        = (helper.SortResults(sortBy, sortDir, noOfItems, pageNumber, adModel));
                    result.adModel = AddImagePaths(adModel);
                    result.paidAds = AddImagePaths(GetPaidAds(data, helper));
                    return(OK(result));
                }
                else
                {
                    return(NotFound("Error occured. Could not query database."));
                }
            }
            catch (ObjectNotFoundException)
            {
                return(NotFound("Ad not found."));
            }
            catch (Exception ex)
            {
                return(InternalServerError("Error occured. Could not query database.", ex));
            }
        }