Files
Partsource/PartSource.Automation/Jobs/BuildVehicleCache.cs
2020-04-12 20:52:03 -04:00

321 lines
12 KiB
C#

//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<BaseVehicle> 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, WHIEngineSearchResponse>(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<BaseVehicle> 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<SubModelSearch, SubModelSearchResponse>(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<EngineSearch, EngineSearchResponse>(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<VehicleIdSearch, VehicleIdSearchResponse>(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<BaseVehicleSearch, BaseVehicleSearchResponse>(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<MakeSearch, MakeSearchResponse>(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<VehicleMake> vehicleMakes = _partSourceContext.VehicleMakes.ToList();
// IDictionary<int, VehicleModel> vehicleModels = new Dictionary<int, VehicleModel>();
// 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<ModelSearch, ModelSearchResponse>(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();
// }
// }
//}