예제 #1
0
        private async Task WebApiRequest(VehicleLookupDto lookup)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    // Process Request.
                    client.BaseAddress = new Uri(lookup.RequestBaseURL);
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls |
                                                           SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                    HttpResponseMessage resp = await client.GetAsync(lookup.RequestString);

                    // Read Response.
                    lookup.RequestSuccess     = resp.IsSuccessStatusCode;
                    lookup.ResponseStatusCode = resp.StatusCode;
                    lookup.RequestMessage     = resp.RequestMessage.Content?.ReadAsStringAsync().Result;
                    lookup.ResponseContent    = resp.Content?.ReadAsStringAsync().Result;
                }
            }
            catch (Exception e)
            {
                // Set Status.
                lookup.RequestSuccess     = false;
                lookup.ResponseStatusCode = HttpStatusCode.BadRequest;

                // Load Last Exception Message.
                var innerEx = e;
                while (innerEx.InnerException != null)
                {
                    innerEx = innerEx.InnerException;
                }
                lookup.RequestMessage = innerEx.Message;
            }

            // Update Lookup.
            lookup.VehicleLookupId =
                Conn.ExecuteScalar <int>(
                    "Repair.usp_SaveVehicleLookup @VehicleVIN, @Service, @RequestBaseURL, @RequestString, @RequestSuccess, @ResponseStatusCode, @RequestMessage, @ResponseContent",
                    lookup);
        }
예제 #2
0
        private async Task <IVehicleDto> NhtsaVehicleSearch(string vin)
        {
            // Create Result
            IVehicleDto result = new VehicleDto {
                VehicleVIN = vin
            };

            // Lookup Settings.
            var lookup = new VehicleLookupDto
            {
                VehicleVIN     = vin.ToUpper(),
                Service        = VehicleLookupService.NHTSA,
                RequestBaseURL = "https://vpic.nhtsa.dot.gov/",
                RequestString  = $"api/vehicles/DecodeVin/{vin}?format=json"
            };

            // Perform Lookup.
            await WebApiRequest(lookup);

            // Check Response.
            if (!lookup.RequestSuccess)
            {
                return(result);
            }

            // Load Response.
            dynamic response = JsonConvert.DeserializeObject(lookup.ResponseContent);

            // Check Response.
            if (response.Message != "Results returned successfully")
            {
                return(result);
            }

            // Load Results.
            var results = ((IEnumerable)response.Results).Cast <dynamic>().ToList();

            // Load Vehicle Information.
            var make  = results.Where(r => r.Variable == "Make").Select(r => r.Value.ToString()).FirstOrDefault();
            var model = results.Where(r => r.Variable == "Model").Select(r => r.Value.ToString()).FirstOrDefault();
            var year  = results.Where(r => r.Variable == "Model Year").Select(r => r.Value.ToString()).FirstOrDefault();
            var tran  = results.Where(r => r.Variable == "Transmission Style").Select(r => r.Value.ToString()).FirstOrDefault();

            // Check Make.
            if (string.IsNullOrEmpty(make))
            {
                return(result);
            }

            // Populate Vehicle.
            var vehicle = new VehicleDto
            {
                VehicleVIN          = lookup.VehicleVIN.ToUpper(),
                VehicleMakeName     = make,
                VehicleModel        = string.IsNullOrEmpty(model) ? "Unknown" : model,
                VehicleYear         = string.IsNullOrEmpty(year) ? "UNKN" : year,
                VehicleTransmission = string.IsNullOrEmpty(tran) ? "Unknown" : tran,
                ManualEntryInd      = false
            };

            // Update Vehicle.
            result = Update(vehicle, lookup.VehicleLookupId);

            // Return.
            return(result);
        }