public object Get(GetListing request)
        {
            var listing = new Listing();

            using (IDbConnection db = DbFactory.Open())
            {
                listing = db.Select<Listing>().Where(ar =>
                    (ar.Id == request.Id || request.Id == null)).First();
            }

            // add categories
            var categoryService = this.ResolveService<CategoryServices>();
            var categores = ((GetCategoriesResponse)categoryService.Get(new GetCategories())).Result;
            listing.Category = categores.First(ar => ar.Id == listing.CategoryId);
            

            //build page hierarchy
            var pageHierarchy = new List<PageHierarchy>();
            int rank = 0;

            //if (request.CategoryId != null)
            {
                var level = categores.First(ar => ar.Id == listing.CategoryId);
                pageHierarchy.Add(new PageHierarchy(rank, new Link { DisplayName = level.Name, Type = "Breadcrumb", Url = (new GetListings { CategoryId = level.Id }).ToGetUrl() }));
                bool hasParent = level.ParentCategoryId.HasValue;
                while (hasParent)
                {
                    rank++;
                    level = categores.First(ar => ar.Id == level.ParentCategoryId);
                    pageHierarchy.Add(new PageHierarchy(rank, new Link { DisplayName = level.Name, Type = "Breadcrumb", Url = (new GetListings { CategoryId = level.Id }).ToGetUrl() }));
                    hasParent = level.ParentCategoryId.HasValue;
                }
            }
            if (request.Id != null)
                pageHierarchy.Add(new PageHierarchy(rank, new Link { DisplayName = listing.Title, Type = "Breadcrumb", Url = "" }));



            return new GetListingResponse { PageHierarchy = pageHierarchy.OrderByDescending(ar => ar.Rank).ToList(), Result = listing };
        }
        public Listing Get(int id)
        {
            var query = new GetListing(1);

            return(_database.Execute(query));
        }