public async Task<IHttpActionResult> GetCars(string year, string make, string model, string trim) { var carData = new CarData(); carData.Car = await db.Database.SqlQuery<Car>("EXEC GetAllByYearMakeModelAndTrim @year, @make, @model, @trim", new SqlParameter("year", year), new SqlParameter("model", model), new SqlParameter("make", make), new SqlParameter("trim", trim)).FirstAsync(); carData.Recalls = GetRecalls(year, make, model); carData.ImageURLs = GetImages(year, make, model, trim); return Ok(carData); }
public async Task<IHttpActionResult> GetMatchingYearMakeModelAndTrim(string year, string make, string model) { var carData = new CarData(); carData.cars = await db.Database.SqlQuery<Car>("EXEC GetMatchingYearMakeModelAndTrim @year, @make, @model", new SqlParameter("year", year), new SqlParameter("make", make), new SqlParameter("model", model)).ToListAsync(); carData.recalls = GetRecalls(year, make, model); return Ok(carData); }
public async Task<IHttpActionResult> GetMatchingYearMakeModelAndTrim(string year, string make, string model, string trim) { var carData = new CarData(); //execute fomr database, year, make, model, trim carData.cars = await db.Database.SqlQuery<Car>("EXEC GetMatchingYearMakeModelAndTrim @year, @make, @model, @trim", new SqlParameter("year", year), new SqlParameter("make", make), new SqlParameter("model", model), new SqlParameter("trim", trim)).ToListAsync(); carData.recalls = GetRecalls(year, make, model); //string imageURLs carData.imageURLs = GetImages(year, make, model, trim); return Ok(carData); }
public async Task<IHttpActionResult> GetCars(string year, string make, string model) { var carData = new CarData(); carData.car = await db.Database.SqlQuery<Car>("EXEC GetCarsByYearMakeModel @year, @make, @model", new SqlParameter("year", year), new SqlParameter("make", make), new SqlParameter("model", model)).FirstAsync(); carData.recalls = GetRecalls(year, make, model).Result; carData.imageURLs = GetImages(year, make, model, null); return Ok(carData); }
/// <summary> /// Retrieves a car from the database based on the year, make and model, and trim. /// </summary> /// <param name="year1"></param> /// <param name="year2"></param> /// <param name="make"></param> /// <param name="model"></param> /// <param name="trim"></param> /// <returns></returns> public async Task<IEnumerable<CarData>> Get(string year1, string year2, string make, string model, string trim) { var ListOfCars = new List<CarData>(); var retval = db.Database.SqlQuery<Car>("EXEC GetCarsByYearMakeModelAndTrim @year, @year2, @make, @model, @trim", new SqlParameter("year", year1), new SqlParameter("year2", year2), new SqlParameter("make", make), new SqlParameter("model", model), new SqlParameter("trim", trim)); foreach (var item in retval.ToArray<Car>()) { var newCar = new CarData { car = item }; using (var client = new HttpClient()) { try { client.BaseAddress = new System.Uri("http://www.nhtsa.gov"); HttpResponseMessage response = await client.GetAsync( "webapi/api/Recalls/vehicle/modelyear/" + item.model_year + "/make/" + item.make + "/model/" + item.model_name + "?format=json" ); newCar.recall = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()); } catch (Exception e) { newCar.recall = "Recall information not available. Unable to connect to external server."; } } //bring images from api using (var imageClient = new WebClient()) { try { var imageResult = imageClient.DownloadString( "https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=" + item.model_year + "%20" + make + "%20" + model + (string.IsNullOrEmpty(trim) ? "" : ("%20" + trim)) ); newCar.images = JsonConvert.DeserializeObject(imageResult); } catch (Exception e) { newCar.images = "Image information not available. Unable to connect to external server."; } } ListOfCars.Add(newCar); } return ListOfCars; }
public async Task<IHttpActionResult> GetCars(string year, string make, string model, string trim) // will run on its own thread, independently { var carData = new CarData(); carData.car = await db.Database.SqlQuery<Car>("EXEC GetCarsByMakeModelYearTrim @year, @make, @model, @trim", // these have to be exactly as they appear in the stored procedure new SqlParameter("year", year), // the string value here has to be whatever the value was without the @ symbol above: @year -> year, @model -> model, etc... new SqlParameter("make", make), new SqlParameter("model", model), new SqlParameter("trim", trim)) .FirstAsync(); // if the data isn't ready then wait. .ToListAsync() makes this statement awaitable. carData.recalls = GetRecalls(year, make, model); carData.imageURLs = GetImages(year, make, model, trim); if (carData != null) { return Ok(carData); } else { return NotFound(); } }
public async Task<IHttpActionResult> GetCarsByYearMakeModelAndTrim(string year, string make, string model, string trim = "") { SqlParameter yearParam = new SqlParameter("year", year); SqlParameter makeParam = new SqlParameter("make", make); SqlParameter modelParam = new SqlParameter("model", model); SqlParameter trimParam = new SqlParameter("trim", trim); var carData = new CarData(); carData.Car = await db.Database.SqlQuery<Car>("EXEC GetCarsByYearMakeModelAndTrim @year, @make, @model, @trim", yearParam, makeParam, modelParam, trimParam).FirstAsync(); carData.Recalls = GetRecalls(year, make, model); carData.imageURLs = GetImages(year, make, model, trim); if (carData != null) { return Ok(carData); } else { return NotFound(); } }
[Route("api/cars")] //declare 4 parameters year, make, model, and trim of the car public async Task<IHttpActionResult> GetCars(string year, string make, string model, string trim) { var carData = new CarData(); carData.myCar = await db.Database.SqlQuery<myCar>("EXEC CarsByYearMakeModelTrim @year, @make, @model, @trim", new SqlParameter("year", year), new SqlParameter("make", make), new SqlParameter("model", model), new SqlParameter("trim", trim)).FirstAsync(); carData.recalls = Recalls(year, make, model); carData.imageURLs = GetImages(year, make, model, null); if (carData != null) return Ok(carData); else return NotFound(); }