示例#1
0
        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);
        }
示例#2
0
        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);

        }
示例#3
0
        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);
        }
示例#5
0
        /// <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;
        }
示例#6
0
        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();
            }
        }
示例#7
0
        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();
            }
        }
示例#8
0
        [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();
        }