public IEnumerable <ShortCar> SearchUsed(ListingSearchPerameters perameters) { List <Cars> shortCars = Cars.Where(c => c.CarTypeId == 1).ToList(); if (perameters.MaxYear != null) { shortCars = shortCars.Where(c => c.CarYear < perameters.MaxYear).ToList(); } if (perameters.MinYear != null) { shortCars = shortCars.Where(c => c.CarYear > perameters.MinYear).ToList(); } if (perameters.MinPrice != null) { shortCars = shortCars.Where(c => c.SalesPrice > perameters.MinPrice).ToList(); } if (perameters.MaxPrice != null) { shortCars = shortCars.Where(c => c.SalesPrice < perameters.MaxPrice).ToList(); } IMCarModelRepo carModelRepository = new IMCarModelRepo(); int modelID = carModelRepository.GetAll().Where(c => perameters.MakeModel == c.CarModelName).FirstOrDefault().CarModelId; IMMakeRepo carMakeRepo = new IMMakeRepo(); int makeID = carMakeRepo.GetAll().Where(c => perameters.MakeModel == c.MakeName).FirstOrDefault().MakeId; IMMakeRepo makeRepo = new IMMakeRepo(); if (perameters.MakeModel != null) { shortCars = shortCars.Where(c => c.CarModelId == modelID || makeRepo.GetAll().Where(m => m.MakeId == makeID).FirstOrDefault().MakeName == perameters.MakeModel).ToList(); } List <ShortCar> toReturn = new List <ShortCar>(); foreach (var car in shortCars) { toReturn.Add(new ShortCar() { CarId = car.CarId, CarModel = carModelRepository.GetAll().Where(c => c.CarModelId == car.CarModelId).FirstOrDefault().CarModelName, CarMake = carMakeRepo.Get(carModelRepository.GetAll().Where(c => c.CarModelId == car.CarModelId).FirstOrDefault().MakeId).MakeName, Photo = Cars.Where(c => c.CarId == car.CarId).FirstOrDefault().Photo, Price = Cars.Where(c => c.CarId == car.CarId).FirstOrDefault().SalesPrice, Year = Cars.Where(c => c.CarId == car.CarId).FirstOrDefault().CarYear, }); } return(toReturn); }
public IHttpActionResult SearchNew(int?minYear, int?maxYear, int?minPrice, int?maxPrice, string make) { var repo = RepositoryManagerFactory.Create(); try { var perameters = new ListingSearchPerameters() { MakeModel = make, MaxPrice = maxPrice, MinPrice = minPrice, MinYear = minYear, MaxYear = maxYear }; var result = repo.SearchNew(perameters); return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public IEnumerable <ShortCar> SearchUsed(ListingSearchPerameters perameters) { List <ShortCar> listings = new List <ShortCar>(); using (var sqlConnection = new System.Data.SqlClient.SqlConnection()) { sqlConnection.ConnectionString = ConfigurationManager .ConnectionStrings["DefaultConnection"] .ConnectionString; SqlCommand command = new SqlCommand(); command.Connection = sqlConnection; string query = "Select CarId, Photo, CarModelName, MakeName, SalesPrice, CarYear from Cars inner join CarModel on Cars.CarModelId = CarModel.CarModelId inner join Make on CarModel.MakeId = Make.MakeId where 1 = 1 "; query += "And CarTypeId = 1 "; if (!string.IsNullOrEmpty(perameters.MakeModel)) { query += "And CarModelName like @ModelName "; command.Parameters.AddWithValue("@ModelName", perameters.MakeModel); query += "Or MakeName like @MakeName "; command.Parameters.AddWithValue("@MakeName", perameters.MakeModel); } if (perameters.MinPrice.HasValue) { query += "AND SalesPrice >= @MinPrice "; command.Parameters.AddWithValue("@MinPrice", perameters.MinPrice.Value); } if (perameters.MinYear.HasValue) { query += "AND CarYear >= @MinYear "; command.Parameters.AddWithValue("@MinYear", perameters.MinYear.Value); } if (perameters.MaxPrice.HasValue) { query += "AND SalesPrice <= @MaxPrice "; command.Parameters.AddWithValue("@MaxPrice", perameters.MaxPrice.Value); } if (perameters.MaxYear.HasValue) { query += "AND CarYear <= @MaxYear "; command.Parameters.AddWithValue("@MaxYear", perameters.MaxYear.Value); } command.CommandText = query; sqlConnection.Open(); using (SqlDataReader dr = command.ExecuteReader()) { while (dr.Read()) { ShortCar row = new ShortCar(); row.CarId = (int)dr["CarId"]; row.CarMake = dr["MakeName"].ToString(); row.Year = (int)dr["CarYear"]; row.Price = (int)dr["SalesPrice"]; row.CarModel = dr["CarModelName"].ToString(); if (dr["Photo"] != DBNull.Value) { row.Photo = dr["Photo"].ToString(); } listings.Add(row); } } return(listings); } }
public IEnumerable <ShortCar> SearchUsed(ListingSearchPerameters perameters) { return(carsRepository.SearchUsed(perameters)); }