private object BuidlListHal(Promise<int> total, IEnumerable<Place> places, SearchPlacesParameters parameters)
        {
            var totalPages = total/parameters.PageSize;

            var builder = new HalBuilder(Request.Url.ToString())
                .AddProperty("pages", totalPages)
                .AddProperty("page", parameters.Page)
                .EmbedListResourceWithProperties(
                    "places",
                    places,
                    place => Settings.ToAbsolute(string.Format("/places/{0}", place.Id)),
                    place => place.Id,
                    place => place.EnglishName,
                    place => place.CornishName,
                    place => place.Type,
                    place => place.Parish);

            if (parameters.Page < totalPages)
                builder.AddLink("next", new SearchUrlBuilder(parameters).NextPage().Build());

            if (parameters.Page > 1)
                builder.AddLink("prev", new SearchUrlBuilder(parameters).PreviousPage().Build());

            return builder.Build();
        }
        private static IEnumerable <Place> SearchPlaces(SearchPlacesParameters searchParameters, out Promise <int> total)
        {
            var         db    = Database.Open();
            SimpleQuery query = null;

            if (searchParameters.IsEnglishSearch)
            {
                query =
                    db.Places.FindAll(db.Places.EnglishName.Like(searchParameters.Keyword.WithWildcards())).OrderByEnglishName();
            }

            if (searchParameters.IsCornishSearch)
            {
                query =
                    db.Places.FindAll(db.Places.CornishName.Like(searchParameters.CornishKeyword.WithWildcards()))
                    .OrderByCornishName();
            }

            var places = query.Skip((searchParameters.Page.Value - 1) * searchParameters.PageSize.Value)
                         .Take(searchParameters.PageSize.Value)
                         .WithTotalCount(out total)
                         .ToList <Place>();

            return(places);
        }
        private object BuidlListHal(Promise <int> total, IEnumerable <Place> places, SearchPlacesParameters parameters)
        {
            var totalPages = total / parameters.PageSize;

            var builder = new HalBuilder(Request.Url.ToString())
                          .AddProperty("pages", totalPages)
                          .AddProperty("page", parameters.Page)
                          .EmbedListResourceWithProperties(
                "places",
                places,
                place => Settings.ToAbsolute(string.Format("/places/{0}", place.Id)),
                place => place.Id,
                place => place.EnglishName,
                place => place.CornishName,
                place => place.Type,
                place => place.Parish);

            if (parameters.Page < totalPages)
            {
                builder.AddLink("next", new SearchUrlBuilder(parameters).NextPage().Build());
            }

            if (parameters.Page > 1)
            {
                builder.AddLink("prev", new SearchUrlBuilder(parameters).PreviousPage().Build());
            }

            return(builder.Build());
        }
 public SearchPlacesParameters(SearchPlacesParameters old)
 {
     Keyword        = old.Keyword;
     CornishKeyword = old.CornishKeyword;
     Page           = old.Page;
     PageSize       = old.PageSize;
 }
        private static IEnumerable<Place> SearchPlaces(SearchPlacesParameters searchParameters, out Promise<int> total)
        {
            var db = Database.Open();
            SimpleQuery query = null;

            if (searchParameters.IsEnglishSearch)
                query =
                    db.Places.FindAll(db.Places.EnglishName.Like(searchParameters.Keyword.WithWildcards())).OrderByEnglishName();

            if (searchParameters.IsCornishSearch)
                query =
                    db.Places.FindAll(db.Places.CornishName.Like(searchParameters.CornishKeyword.WithWildcards()))
                        .OrderByCornishName();

            var places = query.Skip((searchParameters.Page.Value - 1) * searchParameters.PageSize.Value)
                .Take(searchParameters.PageSize.Value)
                .WithTotalCount(out total)
                .ToList<Place>();

            return places;
        }
 public SearchUrlBuilder(SearchPlacesParameters parameters)
 {
     _params = new SearchPlacesParameters(parameters);
 }
 public SearchPlacesParameters(SearchPlacesParameters old)
 {
     Keyword = old.Keyword;
     CornishKeyword = old.CornishKeyword;
     Page = old.Page;
     PageSize = old.PageSize;
 }
 public SearchUrlBuilder(SearchPlacesParameters parameters)
 {
     _params = new SearchPlacesParameters(parameters);
 }