public IEnumerable <Car> GetCars(CarsResourceParameters carsResourceParameters)
        {
            var collection = _context.Cars as IQueryable <Car>;

            // Filtering
            if (!string.IsNullOrWhiteSpace(carsResourceParameters.Brand))
            {
                var brand = carsResourceParameters.Brand.Trim();
                collection = collection.Where(c => c.Brand == brand);
            }

            if (!string.IsNullOrWhiteSpace(carsResourceParameters.PricePerDay))
            {
                var pricePerDay = decimal.Parse(carsResourceParameters.PricePerDay.Trim());
                collection = collection.Where(c => c.PricePerDay == pricePerDay);
            }

            //Searching
            if (!string.IsNullOrWhiteSpace(carsResourceParameters.SearchQuery))
            {
                var searchQuery = carsResourceParameters.SearchQuery.Trim();
                collection = collection.Where(c => c.Brand.Contains(searchQuery) || c.Model.Contains(searchQuery));
            }

            return(collection
                   .OrderBy(c => c.PricePerDay)
                   .ToList());
        }
Exemple #2
0
        public async Task <IActionResult> Get([FromQuery] CarsResourceParameters carsResourceParameters)
        {
            _logger.LogInformation("API ENTRY: Inside get all cars API call.");
            var cars = await _carsService.GetCars(carsResourceParameters);

            return(Ok(cars));
        }
Exemple #3
0
        public async Task <IEnumerable <CarDto> > GetCars(CarsResourceParameters carsResourceParameters)
        {
            try
            {
                _logger.LogInformation(LoggingEvents.ListItems, "Get all Cars with filter", null);

                if (carsResourceParameters == null)
                {
                    throw new ArgumentNullException(nameof(carsResourceParameters));
                }

                if (string.IsNullOrWhiteSpace(carsResourceParameters.Name) &&
                    string.IsNullOrWhiteSpace(carsResourceParameters.Year))
                {
                    return(await GetCars());
                }

                IEnumerable <Car> cars = Enumerable.Empty <Car>();

                if (!string.IsNullOrWhiteSpace(carsResourceParameters.Name))
                {
                    _logger.LogInformation(LoggingEvents.ListItems, "Get all Cars with name filter", null);

                    var nameFilter = carsResourceParameters.Name.Trim();
                    cars = await _carsRepository.GetByName(nameFilter.ToUpper());
                }

                if (!string.IsNullOrWhiteSpace(carsResourceParameters.Year))
                {
                    _logger.LogInformation(LoggingEvents.ListItems, "Get all Cars with year filter", null);

                    var yearFilter = Int32.Parse(carsResourceParameters.Year.Trim());
                    if (cars.Count() == 0)
                    {
                        _logger.LogInformation(LoggingEvents.GetItem, "No Cars found with year filter", null);
                        cars = await _carsRepository.GetByYear(yearFilter);
                    }
                    else
                    {
                        _logger.LogInformation(LoggingEvents.GetItem, "Found Cars found with year filter", null);
                        cars = cars.Where(c => c.fromyear <= yearFilter && c.toyear >= yearFilter);
                    }
                }

                if (cars.Count() == 0)
                {
                    _logger.LogInformation(LoggingEvents.GetItem, "No Cars found", null);
                    return(Enumerable.Empty <CarDto>());
                }

                return(cars.Select(c => c.Map()));
            }
            catch (Exception ex)
            {
                _logger.LogError(LoggingEvents.ListItems, ex, ex.Message, null);
                throw;
            }
        }
        public async void CarsController_GetAll_Valid()
        {
            // Arrange
            var mockCar = MockCarData.GetAllModelListAsync();
            CarsResourceParameters parameters = new CarsResourceParameters {
            };
            var mockCarService = new MockCarService().MockGetAll(mockCar);
            var mockLogging    = new Mock <ILogger <CarsController> >();
            var controller     = new CarsController(mockCarService.Object, mockLogging.Object);

            // Act
            var result = await controller.Get(parameters);

            // Assert
            Assert.IsAssignableFrom <IActionResult>(result);
            mockCarService.VerifyGetAll(Times.Once());
        }
        public async void CarsService_GetAllFilter_NoCars()
        {
            // Arrange
            var mockCar = MockCarData.GetEmptyEntityListAsync();
            CarsResourceParameters parameters = new CarsResourceParameters {
                Name = "M2B", Year = "1966"
            };
            var mockCarFilterRepo = new MockCarRepository().MockGetByYear(mockCar);
            var mockCarLoggerRepo = new MockLoggerRepository <CarsService>();
            var mockCarsService   = new CarsService(mockCarFilterRepo.Object, mockCarLoggerRepo.Object);

            // Act
            var cars = await mockCarsService.GetCars(parameters);

            // Assert
            Assert.Empty(cars);
            mockCarFilterRepo.VerifyGetByNameForCar(Times.Once());
            mockCarFilterRepo.VerifyGetByYearForCar(Times.Once());
        }
        public async void CarsController_GetAll_Empty()
        {
            // Arrange
            var mockCar = MockCarData.GetEmptyModelListAsync();
            CarsResourceParameters parameters = new CarsResourceParameters {
            };
            var mockCarService = new MockCarService().MockGetAll(mockCar);
            var mockLogging    = new Mock <ILogger <CarsController> >();
            var controller     = new CarsController(mockCarService.Object, mockLogging.Object);

            // Act
            var result = await controller.Get(parameters);

            // Assert
            var okResult = result.Should().BeOfType <OkObjectResult>().Subject;
            var car      = okResult.Value.Should().BeAssignableTo <IEnumerable <CarDto> >().Subject;

            car.Count().Should().Be(0);
            mockCarService.VerifyGetAll(Times.Once());
        }
Exemple #7
0
        public ActionResult <IEnumerable <Car> > GetCars([FromQuery] CarsResourceParameters carsResourceParameters)
        {
            var carsFromRepo = _carRentalRepository.GetCars(carsResourceParameters);

            return(Ok(carsFromRepo));
        }