コード例 #1
0
        public IActionResult Index(SortFilterPageOptions options)
        {
            var listService  = new ListCustomersService(_context);
            var customerList = listService.SortFilterPage(options).ToList();

            return(View(new CustomerListCombinedDto(options, customerList)));
        }
コード例 #2
0
        public async Task SetupRestOfDto(BooksFilterBy filterBy, string filterValue, int pageSize,
                                         int expectedPageNum, int expectedNumPages)
        {
            //SETUP
            var numBooks = 12;
            var options  = SqliteInMemory.CreateOptions <BookDbContext>();

            using (var context = new BookDbContext(options))
            {
                context.Database.EnsureCreated();
                context.SeedDatabaseDummyBooks(numBooks);

                var sfpDto = new SortFilterPageOptions
                {
                    FilterBy    = BooksFilterBy.ByVotes,
                    FilterValue = "Dummy",
                    PageSize    = 10,
                    PageNum     = 2
                };

                //need to do this to to setup PrevCheckState
                await sfpDto.SetupRestOfDtoAsync(context.Books);

                //ATTEMPT
                sfpDto.PageNum     = 2;
                sfpDto.FilterBy    = filterBy;
                sfpDto.FilterValue = filterValue;
                sfpDto.PageSize    = pageSize;
                await sfpDto.SetupRestOfDtoAsync(context.Books);

                //VERIFY
                sfpDto.PageNum.ShouldEqual(expectedPageNum);
                sfpDto.NumPages.ShouldEqual(expectedNumPages);
            }
        }
コード例 #3
0
        public IActionResult Index(SortFilterPageOptions options, [FromServices] IListBooksService service)
        {
            var output = service.SortFilterPage(options).ToList();

            SetupTraceInfo();
            return(View(new BookListCombinedDto(options, output)));
        }
コード例 #4
0
        // GET: Home
        public ViewResult Index(SortFilterPageOptions options)
        {
            var listServices = new ListCustomersService(_context);
            var customerList = listServices.SortFilterPage(options).ToList();

            return(View(new CustomersListDto(options, customerList)));
        }
コード例 #5
0
        public TestBetterLinq(ITestOutputHelper output)
        {
            _output  = output;
            showLogs = false;
            int count = 1;

            _options = this.CreateUniqueClassOptionsWithLogging <BookDbContext>(log =>
            {
                if (showLogs)
                {
                    _output.WriteLine($"\nLOG {count++:D2}");
                    _output.WriteLine(log.ToString());
                }
            });

            _sfpOptions = new SortFilterPageOptions
            {
                PageSize = 10,
                PageNum  = 0
            };

            using var context = new BookDbContext(_options);
            {
                context.Database.EnsureCreated();
                if (!context.Books.Any())
                {
                    context.SeedDatabaseDummyBooks(100);
                }
            }
        }
コード例 #6
0
        public async Task <IActionResult> Index(SortFilterPageOptions options, [FromServices] IListNoSqlBooksService service)
        {
            var output = await(await service.SortFilterPageAsync(options)).ToListAsync();

            SetupTraceInfo();
            return(View(new BookListNoSqlCombinedDto(options, output)));
        }
コード例 #7
0
        public void SetupRestOfDto(BooksFilterBy filterBy, string filterValue, int pageSize,
                                   int expectedPageNum, int expectedNumPages)
        {
            //SETUP
            var       inMemDb  = new SqliteInMemory();
            const int numBooks = 12;

            using (var db = inMemDb.GetContextWithSetup())
            {
                db.Books.AddRange(EfTestData.CreateDummyBooks(numBooks, false));
                db.SaveChanges();

                var sfpDto = new SortFilterPageOptions
                {
                    FilterBy    = BooksFilterBy.ByVotes,
                    FilterValue = "Dummy",
                    PageNum     = 2
                };

                //need to do this to to setup PrevCheckState
                sfpDto.SetupRestOfDto(db.Books);

                //ATTEMPT
                sfpDto.PageNum     = 2;
                sfpDto.FilterBy    = filterBy;
                sfpDto.FilterValue = filterValue;
                sfpDto.PageSize    = pageSize;
                sfpDto.SetupRestOfDto(db.Books);

                //VERIFY
                sfpDto.PageNum.ShouldEqual(expectedPageNum);
                sfpDto.NumPages.ShouldEqual(expectedNumPages);
            }
        }
コード例 #8
0
 public void OnGet()
 {
     SortFilterPage = new SortFilterPageOptions {
         FilterBy = ProdukterFilterBy.ByNavn, FilterValue = SearchTerm, OrderByOptions = OrderBy, PageNum = CurrentPage, PageSize = PageSize
     };
     Produkts    = _produktService.SortFilterPage(SortFilterPage);
     OrderByList = _htmlHelper.GetEnumSelectList <OrderByOptions>();
     TotalPages  = SortFilterPage.NumPages;
 }
コード例 #9
0
        public JsonResult GetFilterSearchContent
            (SortFilterPageOptions options)
        {
            var service = new
                          BookFilterDropdownService(new EfCoreContext());

            return(Json(service.GetFilterDropDownValues(
                            options.FilterBy), JsonRequestBehavior.AllowGet));
        }
コード例 #10
0
        public async Task <IActionResult> Index(SortFilterPageOptions options, [FromServices] BookDbContext context)
        {
            options.SetupRestOfDto(await context.DapperBookListCountAsync(options));
            var bookList = (await context.DapperBookListQueryAsync(options)).ToList();

            SetupTraceInfo();

            return(View(new BookListCombinedDto(options, bookList)));
        }
コード例 #11
0
        public JsonResult GetFilterSearchContent(SortFilterPageOptions options, [FromServices] IBookFilterDropdownService service)
        {
            var traceIdent = HttpContext.TraceIdentifier;

            return(Json(
                       new TraceIndentGeneric <IEnumerable <DropdownTuple> >(
                           traceIdent,
                           service.GetFilterDropDownValues(
                               options.FilterBy))));
        }
コード例 #12
0
        public async Task <JsonResult> GetFilterSearchContent(SortFilterPageOptions options,
                                                              [FromServices] CosmosDbContext context,
                                                              [FromServices] BookAppSettings settings)
        {
            var traceIdent = HttpContext.TraceIdentifier;
            var dropdowns  = await context.GetFilterDropDownValuesAsync(options.FilterBy, settings.CosmosDatabaseName);

            return(Json(
                       new TraceIndentGeneric <IEnumerable <DropdownTuple> >(
                           traceIdent, dropdowns)));
        }
コード例 #13
0
        public IQueryable <ProduktListDto> SortFilterPage(SortFilterPageOptions options)
        {
            var produkterQuery = _context.Produkter
                                 .AsNoTracking()
                                 .MapProduktToDto()
                                 .OrderProduktBy(options.OrderByOptions)
                                 .FilterProduktBy(options.FilterBy, options.FilterValue);

            options.SetupRestOfDto(produkterQuery);                             // Added
            return(produkterQuery.Page(options.PageNum - 1, options.PageSize)); // Added
        }
コード例 #14
0
        public async Task <IActionResult> Index(SortFilterPageOptions options,
                                                [FromServices] CosmosDbContext context,
                                                [FromServices] BookAppSettings settings)
        {
            options.SetupRestOfDto(await context.CosmosDirectCountAsync(options, settings.CosmosDatabaseName));
            var bookList = (await context.CosmosDirectQueryAsync(options, settings.CosmosDatabaseName)).ToList();

            SetupTraceInfo();

            return(View(new CosmosDirectBookListCombinedDto(options, bookList)));
        }
コード例 #15
0
        public JsonResult GetFilterSearchContent(SortFilterPageOptions options)
        {
            var service = new BookFilterDropdownService(_context);

            var traceIdent = HttpContext.TraceIdentifier; //This makes the logging display work

            return(Json(
                       new TraceIndentGeneric <IEnumerable <DropdownTuple> >(
                           traceIdent,
                           service.GetFilterDropDownValues(
                               options.FilterBy))));
        }
コード例 #16
0
        public async Task OnGetAsync(SortFilterPageOptions options)
        {
            var booksQuery = _service.ReadManyNoTracked <BookListDto>()
                             .OrderBooksBy(options.OrderByOptions)
                             .FilterBooksBy(options.FilterBy,
                                            options.FilterValue);

            await options.SetupRestOfDto(booksQuery);

            BooksList = await booksQuery.Page(options.PageNum - 1, options.PageSize).ToArrayAsync();

            SortFilterPageData = options;
        }
コード例 #17
0
        public static async Task <int> CosmosDirectCountAsync(this CosmosDbContext context,
                                                              SortFilterPageOptions options, string databaseName)
        {
            var container = context.GetCosmosContainerFromDbContext(databaseName);

            var command = BuildQueryString(options, true);

            using (new LogCosmosCommand(command, context))
            {
                var resultSet = container.GetItemQueryIterator <int>(new QueryDefinition(command));
                return((await resultSet.ReadNextAsync()).First());
            }
        }
コード例 #18
0
        CosmosDirectQueryAsync(this CosmosDbContext context,
                               SortFilterPageOptions options, string databaseName)
        {
            var container = context.GetCosmosContainerFromDbContext(databaseName);

            var command = BuildQueryString(options, false);

            using (new LogCosmosCommand(command, context))
            {
                var resultSet = container.GetItemQueryIterator <CosmosBook>(new QueryDefinition(command));
                return(await resultSet.ReadNextAsync());
            }
        }
コード例 #19
0
        public async Task <IQueryable <BookListNoSql> > SortFilterPageAsync(SortFilterPageOptions options)
        {
            var booksQuery = _context.Books
                             .AsNoTracking()
                             .OrderBooksBy(options.OrderByOptions)
                             .FilterBooksBy(options.FilterBy,
                                            options.FilterValue);

            await options.SetupRestOfDtoAsync(booksQuery);

            return(booksQuery.Page(options.PageNum - 1,
                                   options.PageSize));
        }
コード例 #20
0
        public IActionResult Index(SortFilterPageOptions options)
        {
            var listService =
                new ListBooksService(_context);

            var bookList = listService
                           .SortFilterPage(options)
                           .ToList();

            SetupTraceInfo();           //Thsi makes the logging display work

            return(View(new BookListCombinedDto(options, bookList)));
        }
コード例 #21
0
        public IQueryable <BookListDTO> SortFilterPage(SortFilterPageOptions options)
        {
            var BooksQuery = Context.Books.
                             AsNoTracking().
                             MapBookToDto().
                             FilterBooksBy(options.FilterBy, options.FilterValue).
                             OrderBooksBy(options.OrderByOptions);

            options.SetupRestOfDto(BooksQuery);

            return(BooksQuery
                   .Page <BookListDTO>(options.PageNum - 1, options.PageSize));
        }
コード例 #22
0
ファイル: HomeController.cs プロジェクト: HFMaher/ASPNETCORE
        public JsonResult GetFilterSearchContent
            (SortFilterPageOptions options)
        {
            var service = new
                          ProductFilterDropDownService(_context);

            var traceIdent = HttpContext.TraceIdentifier;

            return(Json(

                       service.GetFilterDropDownValues(
                           options.FilterBy)));
        }
コード例 #23
0
        public async Task <IActionResult> Index //#A
            (SortFilterPageOptions options)
        {
            var listService =
                new ListBooksService(_context);

            var bookList = await listService //#B
                           .SortFilterPage(options)
                           .ToListAsync();   //#C

            SetupTraceInfo();                //REMOVE THIS FOR BOOK as it could be confusing

            return(View(new BookListCombinedDto(options, bookList)));
        }
コード例 #24
0
        public IQueryable <BookListDto> SortFilterPage(SortFilterPageOptions options)
        {
            var booksQuery = _context.Books                        //#A
                             .AsNoTracking()                       //#B
                             .MapBookToDto()                       //#C
                             .OrderBooksBy(options.OrderByOptions) //#D
                             .FilterBooksBy(options.FilterBy,      //#E
                                            options.FilterValue);  //#E

            options.SetupRestOfDto(booksQuery);                    //#F

            return(booksQuery.Page(options.PageNum - 1,            //#G
                                   options.PageSize));             //#G
        }
コード例 #25
0
        public async Task TestListBooksServiceOrderNormalOk()
        {
            //SETUP
            using var context = new BookDbContext(_options);

            var service    = new ListBooksService(context);
            var sfpOptions = new SortFilterPageOptions();

            //ATTEMPT
            var query = (await service.SortFilterPageAsync(sfpOptions));

            //VERIFY
            _output.WriteLine(query.ToQueryString());
        }
コード例 #26
0
        public JsonResult GetFilterSearchContent               //#A
            (SortFilterPageOptions options)                    //#B
        {
            var service = new                                  //#C
                          BookFilterDropdownService(_context); //#C

            var traceIdent = HttpContext.TraceIdentifier;      //REMOVE THIS FOR BOOK as it could be confusing

            return(Json(                                       //#D
                       new TraceIndentGeneric <IEnumerable <DropdownTuple> >(
                           traceIdent,
                           service.GetFilterDropDownValues( //#E
                               options.FilterBy))));        //#E
        }
コード例 #27
0
        }                                                      //#A

        public IActionResult Index                             //#B
            (SortFilterPageOptions options)                    //#C
        {
            var listService =                                  //#D
                              new ListBooksService(_context);  //#D

            var bookList = listService                         //#E
                           .SortFilterPage(options)            //#E
                           .ToList();                          //#F

            var traceIdent = HttpContext.TraceIdentifier;      //REMOVE THIS FOR BOOK as it could be confusing

            return(View(new BookListCombinedDto                //#G
                            (traceIdent, options, bookList))); //#G
        }
コード例 #28
0
        private static string FormSelectPart(SortFilterPageOptions options, bool justCount)
        {
            if (justCount)
            {
                return("SELECT value COUNT(c) FROM c");
            }


            return
                (@"SELECT c.BookId, c.Title, c.PublishedOn, c.EstimatedDate, c.YearPublished,
c.OrgPrice, c.ActualPrice, c.PromotionalText, c.ManningBookUrl,
c.AuthorsOrdered, c.ReviewsCount, c.ReviewsAverageVotes, c.Tags, c.TagsString
FROM c
");
        }
コード例 #29
0
ファイル: HomeController.cs プロジェクト: HFMaher/ASPNETCORE
        public IActionResult Index
            (SortFilterPageOptions options)
        {
            var listService =
                new ListProductsService(_context);

            var productList = listService
                              .SortFilterPage(options)
                              .ToList();

            var traceIdent = HttpContext.TraceIdentifier;

            return(View(new ProductListCombinedDto
                            (traceIdent, options, productList)));
        }
コード例 #30
0
        public ActionResult Index(SortFilterPageOptions options)
        {
            var context = new EfCoreContext();

            context.Database.Log = message => Trace.Write(message);
            var listService =
                new ListBooksService(context);

            var bookList = listService
                           .SortFilterPage(options)
                           .ToList();

            return(View(new BookListCombinedDto
                            (options, bookList)));
        }