private async Task <IActionResult> GetBlueprints([FromBody] BrowseBlueprintsInputModel inputModel, string searchTerm, int page = 1)
        {
            if (page <= 0)
            {
                return(this.BadRequest());
            }

            // Default behavior is show all types.
            if (inputModel is null || !inputModel.Types.Any())
            {
                inputModel = await this.DefaultInputModel();
            }

            int count;
            IEnumerable <BlueprintListingModel> blueprints;

            if (string.IsNullOrWhiteSpace(searchTerm))
            {
                (count, blueprints) = await this.blueprintsService
                                      .GetBlueprintsPageAsync <BlueprintListingModel>(inputModel.Types, page);
            }
            else
            {
                (count, blueprints) = await this.blueprintsService
                                      .SearchAsync <BlueprintListingModel>(inputModel.Types, searchTerm, page);
            }

            var model = new BrowseBlueprintsModel()
            {
                Count      = count,
                Blueprints = blueprints,
            };

            return(this.Ok(model));
        }
        public async Task <BrowseBlueprintsModel> SearchBlueprintsAsync(BrowseBlueprintsInputModel model, string searchTerm, int page = 1)
        {
            var result = await this.httpClient.PostAsJsonAsync($"api/blueprints/search/{searchTerm}/page/{page}", model);

            if (!result.IsSuccessStatusCode)
            {
                return(null);
            }

            return(await result.Content.ReadFromJsonAsync <BrowseBlueprintsModel>());
        }
 public async Task <IActionResult> Search([FromBody] BrowseBlueprintsInputModel inputModel, string searchTerm, int page = 1)
 => await this.GetBlueprints(inputModel, searchTerm, page);
 public async Task <IActionResult> BrowseBlueprints([FromBody] BrowseBlueprintsInputModel inputModel, int page = 1)
 => await this.GetBlueprints(inputModel, null, page);