public static async Task <PaginationViewModel> SearchAuktionBudsPaginatedAsync(this IAuktionService service, SearchViewModel search, int page = 1)
        {
            // Gather auktions list
            List <AuktionModel> auktions = (await service.ListAuktionsAsync(true))
                                           .Where(search.Matches).ToList();

            // Gather auktions+buds list
            var auktionBudView = new List <AuktionBudViewModel>();

            foreach (AuktionModel a in auktions)
            {
                List <BudModel> buds = await service.ListBudsAsync(a.AuktionID);

                auktionBudView.Add(new AuktionBudViewModel(a, buds));
            }

            // Order whole list
            auktionBudView.Sort(search.GetSortingComparer());

            // Prepare paginated model
            var pageinated = new PaginationViewModel(ref page, auktions.Count);

            pageinated.Model = new SearchResultsViewModel
            {
                SearchModel = search,
                // Take items for this page
                AuktionModel = auktionBudView
                               .Skip(pageinated.StartIndex)
                               .Take(PaginationViewModel.MODELS_PER_PAGE)
                               .ToList()
            };

            return(pageinated);
        }
        public static async Task <AuktionBudViewModel> GetAuktionBudsAsync(this IAuktionService service, int id)
        {
            AuktionModel auktion = await service.GetAuktionAsync(id);

            if (auktion is null)
            {
                return(null);
            }

            return(new AuktionBudViewModel(
                       auktion,
                       await service.ListBudsAsync(auktion.AuktionID)
                       ));
        }
        public static async Task <List <AuktionBudViewModel> > ListAuktionBudsAsync(this IAuktionService service, bool includeClosed = false)
        {
            List <AuktionModel> auktions = await service.ListAuktionsAsync(includeClosed);

            var viewModels = new List <AuktionBudViewModel>();

            foreach (AuktionModel a in auktions)
            {
                List <BudModel> buds = await service.ListBudsAsync(a.AuktionID);

                viewModels.Add(new AuktionBudViewModel(a, buds));
            }

            return(viewModels);
        }
        public static async Task <PaginationViewModel> ListAuktionBudsPaginatedAsync(this IAuktionService service, int page = 1, bool includeClosed = false)
        {
            List <AuktionModel> auktions = await service.ListAuktionsAsync(includeClosed);

            var auktionBudView = new List <AuktionBudViewModel>();

            var viewModel = new PaginationViewModel(ref page, auktions.Count, auktionBudView);

            // Fill list please
            foreach (AuktionModel a in auktions
                     .Skip(viewModel.StartIndex)
                     .Take(PaginationViewModel.MODELS_PER_PAGE))
            {
                List <BudModel> buds = await service.ListBudsAsync(a.AuktionID);

                auktionBudView.Add(new AuktionBudViewModel(a, buds));
            }

            return(viewModel);
        }