public async Task <IActionResult> GetPadsFitered(GetPadsFilteredQuery query) { var pads = await mediator.Dispatch <GetPadsFilteredQuery, PagedCollection <PadReadModel> >(query); return(Ok(pads)); }
public async override Task <PagedCollection <PadReadModel> > Execute(GetPadsFilteredQuery input, User?user) { var pads = await reader.ReadFiltered(input); return(pads); }
public async Task <PagedCollection <PadReadModel> > ReadFiltered(GetPadsFilteredQuery query) { var queryBuilder = new PadsViewQueryBuilder(); if (query.Brands.Count > 0) { queryBuilder.AddBrandFilter(); } if (query.Series.Count > 0) { queryBuilder.AddSeriesFilter(); } if (query.Categories.Count > 0) { queryBuilder.AddCategoriesFilter(); } if (query.Materials.Count > 0) { queryBuilder.AddMaterialsFilter(); } if (query.Textures.Count > 0) { queryBuilder.AddTexturesFilter(); } if (query.PolisherTypes.Count > 0) { queryBuilder.AddPolisherTypesFilter(); } if (query.HasCenterHole.Count > 0) { queryBuilder.AddHasCenterHoleFilter(); } if (query.Stars.Count > 0) { queryBuilder.AddStarsFilter(); } using (var conn = OpenConnection()) { var pads = await conn.QueryAsync <PadsViewRow>( queryBuilder.ToString(), new { Brands = query.Brands, Series = query.Series, Categories = query.Categories.Flatten(), Materials = query.Materials, Textures = query.Textures, PolisherTypes = query.PolisherTypes.Flatten(), HasCenterHole = query.HasCenterHole, Stars = query.Stars } ); // TODO: Fix this. Paging is broken. return(new PagedCollection <PadReadModel>(new Paging(new PagingOptions(0, 10), pads.Count()), pads.Select(Map).ToList())); } }