//using Microsoft.EntityFrameworkCore; //using PartSource.Automation.Jobs.Interfaces; //using PartSource.Automation.Services; //using PartSource.Data; //using PartSource.Data.Models; //using PartSource.Data.Nexpart; //using PartSource.Services; //using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using BaseVehicle = PartSource.Data.Models.BaseVehicle; //namespace PartSource.Automation.Jobs //{ // public class BuildVehicleCache : IAutomationJob // { // private readonly NexpartService _nexpartService; // private readonly PartSourceContext _partSourceContext; // private readonly IServiceProvider _serviceProvider; // public BuildVehicleCache(IServiceProvider serviceProvider, PartSourceContext partSourceContext, NexpartService nexpartService) // { // _nexpartService = nexpartService; // _partSourceContext = partSourceContext; // _serviceProvider = serviceProvider; // } // public void Run() // { // try // { // //AddMakes(); // //AddModels(); // // AddEngines(); // //AddYearMakeModels(); // AddSubmodels(); // } // catch (Exception ex) // { // ; // } // } // private void AddEngines() // { // IList baseVehicles = _partSourceContext.BaseVehicles.ToList(); // foreach (BaseVehicle baseVehicle in baseVehicles) // { // try // { // WHIEngineSearch whiEngineSearch = new WHIEngineSearch // { // VehicleIdentifier = new VehicleIdentifier // { // BaseVehicleId = baseVehicle.Id // } // }; // WHIEngineSearchResponse response = _nexpartService.SendRequest(whiEngineSearch).Result; // foreach (WHIEngine engine in response.ResponseBody.WHIEngine) // { // try // { // if (!_partSourceContext.Engines.Any(e => e.Id == engine.Id)) // { // _partSourceContext.Engines.Add(new Data.Models.Engine // { // Id = engine.Id, // Description = engine.Description // }); // } // _partSourceContext.SaveChanges(); // } // catch (Exception ex) // { // Console.WriteLine($"Failed to add engine { engine.Id } - { ex.Message }"); // } // } // } // catch (Exception ex) // { // Console.WriteLine($"Failed to add engines for base vehicle { baseVehicle.Id } - { ex.Message }"); // } // } // } // private void AddSubmodels() // { // int maxBaseVehicleId = _partSourceContext.Submodels.Any() // ? _partSourceContext.Submodels.Max(s => s.BaseVehicleId) // : 0; // IList baseVehicles = _partSourceContext.BaseVehicles.AsNoTracking().Where(b => b.Id > maxBaseVehicleId).ToList(); // foreach (BaseVehicle baseVehicle in baseVehicles) // { // try // { // SubModelSearch smSearch = new SubModelSearch() // { // MakeId = baseVehicle.VehicleMakeId, // ModelId = baseVehicle.VehicleModelId, // Year = baseVehicle.Year, // RegionId = 2 // }; // SubModelSearchResponse smResponse = _nexpartService.SendRequest(smSearch).Result; // SubModel[] subModels = smResponse.ResponseBody?.SubModel; // if (subModels == null) // { // continue; // } // foreach (SubModel submodel in subModels) // { // EngineSearch requestContent = new EngineSearch() // { // VehicleIdentifier = new VehicleIdentifier() // { // BaseVehicleId = baseVehicle.Id // }, // SubModelId = int.Parse(submodel.Id) // }; // EngineSearchResponse response = _nexpartService.SendRequest(requestContent).Result; // if (response.ResponseBody == null) // { // continue; // } // foreach (Data.Nexpart.Engine engine in response.ResponseBody.Engine) // { // VehicleIdSearch vidSearch = new VehicleIdSearch // { // VehicleIdentifier = new VehicleIdentifier() // { // BaseVehicleId = baseVehicle.Id, // EngineConfigId = engine.Id // }, // Criterion = new Criterion[] // { // new Criterion // { // Attribute = "SUB_MODEL", // Id = int.Parse(submodel.Id) // } // }, // RegionId = new RegionId // { // Value = 2 // }, // ResultOption = new ResultOption[] // { // new ResultOption // { // Value = "WHI_ENGINE" // } // } // }; // VehicleIdSearchResponse vidResponse = _nexpartService.SendRequest(vidSearch).Result; // if (vidResponse != null && vidResponse.ResponseBody.VehicleToEngineConfigId > 0) // { // _partSourceContext.Submodels.Add(new Submodel // { // VehicleToEngineConfigId = vidResponse.ResponseBody.VehicleToEngineConfigId, // SubmodelId = int.Parse(submodel.Id), // BaseVehicleId = baseVehicle.Id, // EngineId = vidResponse.ResponseBody.WHIEngineId // }); // } // } // } // _partSourceContext.SaveChanges(); // } // catch (Exception ex) // { // Console.WriteLine($"Failed to add BaseVehicleId {baseVehicle.Id}: {ex.Message}"); // } // } // } // private void AddYearMakeModels() // { // BaseVehicleSearch request = new BaseVehicleSearch // { // Years = new Years // { // From = 1950, // To = 2020 // }, // Region = new[] // { // new Region // { // Id = 2 // } // }, // VehicleType = new[] // { // new VehicleType // { // Id = 5 // }, // new VehicleType // { // Id = 6 // }, // new VehicleType // { // Id = 7 // } // } // }; // BaseVehicleSearchResponse response = _nexpartService.SendRequest(request).Result; // foreach (Data.Nexpart.BaseVehicle vehicle in response.ResponseBody.BaseVehicle) // { // _partSourceContext.BaseVehicles.Add(new Data.Models.BaseVehicle // { // Id = (int)vehicle.BaseVehicleId, // VehicleMakeId = (int)vehicle.MakeId, // VehicleModelId = (int)vehicle.ModelId, // Year = (int)vehicle.Year // }); // } // _partSourceContext.SaveChanges(); // } // private void AddMakes() // { // MakeSearch requestContent = new MakeSearch() // { // VehicleTypeId = new int[] { 5, 6, 7 }, // RegionId = new int[] { 2 } // }; // MakeSearchResponse response = _nexpartService.SendRequest(requestContent).Result; // foreach (Make make in response.ResponseBody.Make) // { // _partSourceContext.VehicleMakes.Add(new VehicleMake // { // Id = make.Id, // Name = make.Value // }); // } // _partSourceContext.SaveChanges(); // } // private void AddModels() // { // IList vehicleMakes = _partSourceContext.VehicleMakes.ToList(); // IDictionary vehicleModels = new Dictionary(); // foreach (VehicleMake vehicleMake in vehicleMakes) // { // for (int year = 1950; year <= 2020; year++) // { // ModelSearch requestContent = new ModelSearch() // { // MakeId = vehicleMake.Id, // Year = year, // VehicleTypeId = new int[] { 5, 6, 7 }, // RegionId = new int[] { 2 } // }; // ModelSearchResponse response = _nexpartService.SendRequest(requestContent).Result; // if (response.ResponseBody == null || response.ResponseBody.Length == 0) // { // continue; // } // foreach (Model model in response.ResponseBody[0].Model) // { // bool result = vehicleModels.TryGetValue(model.Id, out VehicleModel throwaway); // if (!result) // { // VehicleModel vehicleModel = new VehicleModel // { // Id = model.Id, // Name = model.Value, // VehicleMakeId = vehicleMake.Id // }; // vehicleModels.Add(model.Id, vehicleModel); // } // } // } // } // _partSourceContext.VehicleModels.AddRange(vehicleModels.Values); // _partSourceContext.SaveChanges(); // } // } //}