Beispiel #1
0
        public async Task <IActionResult> GetPadsFitered(GetPadsFilteredQuery query)
        {
            var pads = await mediator.Dispatch <GetPadsFilteredQuery, PagedCollection <PadReadModel> >(query);

            return(Ok(pads));
        }
Beispiel #2
0
        public async override Task <PagedCollection <PadReadModel> > Execute(GetPadsFilteredQuery input, User?user)
        {
            var pads = await reader.ReadFiltered(input);

            return(pads);
        }
Beispiel #3
0
        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()));
            }
        }