321 lines
12 KiB
C#
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();
|
|
// }
|
|
|
|
|
|
// }
|
|
//}
|