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()); }
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)); }
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()); }
public ActionResult <IEnumerable <Car> > GetCars([FromQuery] CarsResourceParameters carsResourceParameters) { var carsFromRepo = _carRentalRepository.GetCars(carsResourceParameters); return(Ok(carsFromRepo)); }