// GET: VehicleMake
        public async Task <ActionResult> Index(string sortBy, string currentFilter, string searchString, int?page)
        {
            VehicleFilters filters = new VehicleFilters(searchString, currentFilter);
            VehicleSorting sorting = new VehicleSorting(sortBy);
            VehiclePaging  paging  = new VehiclePaging(page);

            var vehicles = await _vehicleService.GetVehicleMakeListAsync(filters, sorting, paging);

            List <VehicleMakeViewModel> vehiclesListDest = iMapper.Map <List <VehicleMakeViewModel> >(vehicles);
            var paginatedVehiclesList = new StaticPagedList <VehicleMakeViewModel>(vehiclesListDest, paging.Page ?? 1, paging.ResultsPerPage, paging.TotalCount);

            UpdateView(ViewBag, filters, sorting, paging);

            return(View(paginatedVehiclesList));
        }
        public async Task ShouldReturnEmptyModelList()
        {
            //Arrange
            var vehicleModels = new List <IVehicleModel>().AsEnumerable();

            string searchString = "";
            string sortBy       = "";
            int    page         = 0;

            VehicleFilters filters = new VehicleFilters(searchString);
            VehicleSorting sorting = new VehicleSorting(sortBy);
            VehiclePaging  paging  = new VehiclePaging(page);

            _modelRepoMock.Setup(x => x.GetAll(filters, sorting, paging)).Returns(Task.FromResult(vehicleModels));
            //Act
            var result = await _sut.GetVehicleModels(filters, sorting, paging);

            //Assert
            result.Should().BeEmpty();
        }
        // Index methods
        private void UpdateView(dynamic ViewBag, VehicleFilters filters, VehicleSorting sorting, VehiclePaging paging)
        {
            ViewBag.CurrentSort = sorting.SortBy;
            ViewBag.SortByName  = sorting.SortByName;
            ViewBag.SortByAbrv  = sorting.SortByAbrv;

            // paging - if searchString is updated, return to page 1

            if (filters.SearchString != null)
            {
                paging.Page = 1;
            }
            else // else keep the filter
            {
                filters.SearchString = filters.CurrentFilter;
            }

            // current filter - keeps filter between pages
            ViewBag.CurrentFilter = filters.SearchString;
        }
        private void UpdateView(dynamic ViewBag, VehicleFilters filters, VehicleSorting sorting, VehiclePaging paging)
        {
            // current sort by - keep sorting between pages
            ViewBag.CurrentSort = sorting.SortBy;
            // sort by
            ViewBag.SortByName = String.IsNullOrEmpty(sorting.SortBy) ? "name_desc" : "";
            ViewBag.SortByAbrv = sorting.SortBy == "Abrv" ? "abrv_desc" : "Abrv";
            ViewBag.SortById   = sorting.SortBy == "MakeId" ? "makeid_desc" : "MakeId";

            // paging - if searchString is updated, return to page 1
            if (filters.SearchString != null)
            {
                paging.Page = 1;
            }
            else // else keep the filter
            {
                filters.SearchString = filters.CurrentFilter;
            }
            // current filter - keeps filter between pages
            ViewBag.CurrentFilter = filters.SearchString;
        }
        public async Task <IHttpActionResult> GetVehicleModels(string sortBy, string searchString, int?page)
        {
            VehicleFilters filters = new VehicleFilters(searchString);
            VehicleSorting sorting = new VehicleSorting(sortBy);
            VehiclePaging  paging  = new VehiclePaging(page);

            IEnumerable <IVehicleModel> vehicleModels = await _vehicleService.GetVehicleModels(filters, sorting, paging);

            List <VehicleModelViewModel> vehicleModelsDest = iMapper.Map <List <VehicleModelViewModel> >(vehicleModels);

            return(Ok(new
            {
                models = vehicleModelsDest,
                pagingInfo = new
                {
                    resultsPerPage = paging.ResultsPerPage,
                    totalCount = paging.TotalCount,
                    pageNumber = paging.Page,
                }
            }));
        }
        public async Task ShouldReturnModelList()
        {
            //Arrange
            var vehicleModels = new List <IVehicleModel>()
            {
                new VehicleModel()
                {
                    Id     = 1,
                    Name   = "123",
                    Abrv   = "Mercedes",
                    MakeId = 1
                },
                new VehicleModel()
                {
                    Id     = 2,
                    Name   = "A5",
                    Abrv   = "Audi",
                    MakeId = 2
                },
            }.AsEnumerable();

            string searchString = "";
            string sortBy       = "";
            int    page         = 0;

            VehicleFilters filters = new VehicleFilters(searchString);
            VehicleSorting sorting = new VehicleSorting(sortBy);
            VehiclePaging  paging  = new VehiclePaging(page);

            _modelRepoMock.Setup(x => x.GetAll(filters, sorting, paging)).Returns(Task.FromResult(vehicleModels));
            //Act
            var result = await _sut.GetVehicleModels(filters, sorting, paging);

            //Assert
            result.Should().BeEquivalentTo(vehicleModels);
        }
        public async Task <IEnumerable <IVehicleMake> > GetVehicleMakes(VehicleFilters filters, VehicleSorting sorting, VehiclePaging paging)
        {
            IEnumerable <IVehicleMake> query = await _repository.GetAll(filters, sorting, paging);

            return(query.ToList());
        }
 public async Task <IEnumerable <VehicleModel> > GetVehicleModelList(VehicleFilters filters, VehicleSorting sorting, VehiclePaging paging)
 {
     return(await _vehicleRepository.GetVehicleModelList(filters, sorting, paging));
 }
Esempio n. 9
0
        // Vehicle Make
        public async Task <IEnumerable <VehicleMake> > GetVehicleMakeList(VehicleFilters filters, VehicleSorting sorting, VehiclePaging paging)
        {
            IQueryable <VehicleMake> vehicles = from vehicle in _entities.VehicleMakes
                                                select vehicle;

            //filter/find
            if (filters.ShouldApplyFilters())
            {
                vehicles = vehicles.Where(m => m.Name.Contains(filters.FilterBy) || m.Abrv.Contains(filters.FilterBy));
            }

            paging.TotalCount = vehicles.Count();
            // sort
            switch (sorting.SortBy)
            {
            case "name_desc":
                vehicles = vehicles.OrderByDescending(v => v.Name);
                break;

            case "Abrv":
                vehicles = vehicles.OrderBy(v => v.Abrv);
                break;

            case "abrv_desc":
                vehicles = vehicles.OrderByDescending(v => v.Abrv);
                break;

            default:     // sort by name
                vehicles = vehicles.OrderBy(v => v.Name);
                break;
            }

            return(await vehicles.Skip(paging.ItemsToSkip).Take(paging.ResultsPerPage).ToListAsync());
        }
        public async Task <IEnumerable <IVehicleModel> > GetAll(VehicleFilters filters, VehicleSorting sorting, VehiclePaging paging)
        {
            IQueryable <VehicleModelEntityModel> models = _genericRepository.GetAll();

            if (filters.ShouldApplyFilters())
            {
                models = models.Where(m => m.Name.Contains(filters.FilterBy) ||
                                      m.Abrv.Contains(filters.FilterBy) ||
                                      m.MakeId.ToString().Contains(filters.FilterBy));
            }

            paging.TotalCount = models.Count();

            switch (sorting.SortBy)
            {
            case "name_desc":
                models = models.OrderByDescending(v => v.Name);
                break;

            case "Abrv":
                models = models.OrderBy(v => v.Abrv);
                break;

            case "abrv_desc":
                models = models.OrderByDescending(v => v.Abrv);
                break;

            case "MakeId":
                models = models.OrderBy(v => v.MakeId);
                break;

            case "makeid_desc":
                models = models.OrderByDescending(v => v.MakeId);
                break;

            default:
                models = models.OrderBy(v => v.Name);
                break;
            }
            return(await models.Skip(paging.ItemsToSkip).Take(paging.ResultsPerPage).ProjectTo <VehicleModel>(_mapperConfiguration).ToListAsync());
        }
Esempio n. 11
0
        public async Task <IEnumerable <VehicleModel> > GetVehicleModelList(VehicleFilters filters, VehicleSorting sorting, VehiclePaging paging)
        {
            IQueryable <VehicleModel> models = from model in _entities.VehicleModels
                                               select model;

            if (filters.ShouldApplyFilters())
            {
                models = models.Where(m => m.Name.Contains(filters.FilterBy) ||
                                      m.Abrv.Contains(filters.FilterBy) ||
                                      m.MakeId.ToString().Contains(filters.FilterBy));
            }

            paging.TotalCount = models.Count();
            // sort
            switch (sorting.SortBy)
            {
            case "name_desc":
                models = models.OrderByDescending(v => v.Name);
                break;

            case "Abrv":
                models = models.OrderBy(v => v.Abrv);
                break;

            case "abrv_desc":
                models = models.OrderByDescending(v => v.Abrv);
                break;

            case "MakeId":
                models = models.OrderBy(v => v.MakeId);
                break;

            case "makeid_desc":
                models = models.OrderByDescending(v => v.MakeId);
                break;

            default:     // sort by name
                models = models.OrderBy(v => v.Name);
                break;
            }
            return(await models.Skip(paging.ItemsToSkip).Take(paging.ResultsPerPage).ToListAsync());
        }