WIP
This commit is contained in:
@@ -14,7 +14,7 @@ namespace PartSource.Api.Controllers
|
|||||||
{
|
{
|
||||||
[Route("v2/[controller]")]
|
[Route("v2/[controller]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[ApiExplorerSettings(GroupName = "v1")]
|
[ApiExplorerSettings(GroupName = "v2")]
|
||||||
public class PartsController : BaseNexpartController
|
public class PartsController : BaseNexpartController
|
||||||
{
|
{
|
||||||
private readonly NexpartService _nexpartService;
|
private readonly NexpartService _nexpartService;
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\ratermania\Packages\Shopify\Shopify.csproj" />
|
||||||
<ProjectReference Include="..\PartSource.Data\PartSource.Data.csproj" />
|
<ProjectReference Include="..\PartSource.Data\PartSource.Data.csproj" />
|
||||||
<ProjectReference Include="..\PartSource.Services\PartSource.Services.csproj" />
|
<ProjectReference Include="..\PartSource.Services\PartSource.Services.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using AutoMapper;
|
using System.IO;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||||
@@ -8,10 +8,8 @@ using Microsoft.Extensions.DependencyInjection;
|
|||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Serialization;
|
using Newtonsoft.Json.Serialization;
|
||||||
using PartSource.Data.AutoMapper;
|
|
||||||
using PartSource.Data.Contexts;
|
using PartSource.Data.Contexts;
|
||||||
using PartSource.Services;
|
using PartSource.Services;
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace PartSource.Api
|
namespace PartSource.Api
|
||||||
{
|
{
|
||||||
@@ -49,8 +47,6 @@ namespace PartSource.Api
|
|||||||
c.IncludeXmlComments(Path.Combine(System.AppContext.BaseDirectory, "PartSource.Data.xml"));
|
c.IncludeXmlComments(Path.Combine(System.AppContext.BaseDirectory, "PartSource.Data.xml"));
|
||||||
});
|
});
|
||||||
|
|
||||||
services.AddAutoMapper(typeof(PartSourceProfile));
|
|
||||||
|
|
||||||
services.AddTransient<PartService>();
|
services.AddTransient<PartService>();
|
||||||
services.AddTransient<FitmentService>();
|
services.AddTransient<FitmentService>();
|
||||||
services.AddTransient<NexpartService>();
|
services.AddTransient<NexpartService>();
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"PartSourceDatabase": "Server=tcp:ps-whi.database.windows.net,1433;Initial Catalog=ps-whi-stage;Persist Security Info=False;User ID=ps-whi;Password=9-^*N5dw!6:|.5Q;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
|
"PartSourceDatabase": "Server=tcp:ps-whi.database.windows.net,1433;Initial Catalog=ps-whi-stage;Persist Security Info=False;User ID=ps-whi;Password=9-^*N5dw!6:|.5Q;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
|
||||||
//"FitmentDatabase": "Data Source=localhost;Initial Catalog=WhiFitment;Integrated Security=true"
|
"FitmentDatabase": "Data Source=localhost;Initial Catalog=WhiFitment;Integrated Security=true"
|
||||||
"FitmentDatabase": "Server=tcp:ps-automation.eastus2.cloudapp.azure.com,1433;Initial Catalog=WhiFitment;User ID=sa;Password=GZ0`-ekd~[2u;Encrypt=True;TrustServerCertificate=True;Connection Timeout=300"
|
// "FitmentDatabase": "Server=tcp:ps-automation.eastus2.cloudapp.azure.com,1433;Initial Catalog=WhiFitment;User ID=sa;Password=GZ0`-ekd~[2u;Encrypt=True;TrustServerCertificate=True;Connection Timeout=300"
|
||||||
},
|
},
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
|
|||||||
@@ -38,18 +38,18 @@ namespace PartSource.Automation.Jobs
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
FtpFileInfo lastUploadedFile = _ftpService.ListFilesExtended()
|
// FtpFileInfo lastUploadedFile = _ftpService.ListFilesExtended()
|
||||||
.Where(f => f.FileType == FtpFileType.File && f.Filename.IndexOf(package) > -1)
|
//.Where(f => f.FileType == FtpFileType.File && f.Filename.IndexOf(package) > -1)
|
||||||
.OrderByDescending(f => f.Modified)
|
//.OrderByDescending(f => f.Modified)
|
||||||
.FirstOrDefault();
|
//.FirstOrDefault();
|
||||||
|
|
||||||
if (lastUploadedFile == null)
|
// if (lastUploadedFile == null)
|
||||||
{
|
// {
|
||||||
_logger.LogInformation($"No {package} file available.");
|
// _logger.LogInformation($"No {package} file available.");
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
_ftpService.Download($"{package}.txt");
|
// _ftpService.Download($"{package}.txt");
|
||||||
_ssisService.Execute($"{package}.dtsx");
|
_ssisService.Execute($"{package}.dtsx");
|
||||||
|
|
||||||
_logger.LogInformation($"Execution of SSIS package {package} completed successfully.");
|
_logger.LogInformation($"Execution of SSIS package {package} completed successfully.");
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ namespace PartSource.Automation.Jobs
|
|||||||
Part? existing = await _fitmentContext.Parts.FirstOrDefaultAsync(p => p.Sku == part.Sku);
|
Part? existing = await _fitmentContext.Parts.FirstOrDefaultAsync(p => p.Sku == part.Sku);
|
||||||
if (existing == null)
|
if (existing == null)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Adding SKU {Sku}: {LineCode} {PartNumber}", part.Sku, part.LineCode, part.PartNumber);
|
||||||
|
|
||||||
await _fitmentContext.Parts.AddAsync(part);
|
await _fitmentContext.Parts.AddAsync(part);
|
||||||
await _fitmentContext.SaveChangesAsync();
|
await _fitmentContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,15 +32,11 @@ namespace PartSource.Automation.Jobs
|
|||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_whiSeoService = whiSeoService;
|
_whiSeoService = whiSeoService;
|
||||||
|
|
||||||
_seoDataType = SeoDataType.Fitment;
|
_seoDataType = SeoDataType.Fitment;
|
||||||
|
|
||||||
_ftpConfiguration = configuration.GetSection("ftpServers:WhiConfiguration").Get<FtpConfiguration>();
|
_ftpConfiguration = configuration.GetSection("ftpServers:WhiConfiguration").Get<FtpConfiguration>();
|
||||||
|
|
||||||
_noteDictionary = new ConcurrentDictionary<string, string>();
|
_noteDictionary = new ConcurrentDictionary<string, string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "CA2008:Do not create tasks without passing a TaskScheduler", Justification = "<Pending>")]
|
|
||||||
public async Task Run(CancellationToken token, params string[] arguments)
|
public async Task Run(CancellationToken token, params string[] arguments)
|
||||||
{
|
{
|
||||||
_whiSeoService.TruncateFitmentTables();
|
_whiSeoService.TruncateFitmentTables();
|
||||||
@@ -56,7 +52,7 @@ namespace PartSource.Automation.Jobs
|
|||||||
fileGroups.Enqueue(fileGroup);
|
fileGroups.Enqueue(fileGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
Task[] taskArray = new Task[18];
|
Task[] taskArray = new Task[12];
|
||||||
for (int i = 0; i < taskArray.Length; i++)
|
for (int i = 0; i < taskArray.Length; i++)
|
||||||
{
|
{
|
||||||
taskArray[i] = Task.Factory.StartNew(() =>
|
taskArray[i] = Task.Factory.StartNew(() =>
|
||||||
@@ -91,12 +87,12 @@ namespace PartSource.Automation.Jobs
|
|||||||
_logger.LogInformation($"Created fitment table for part group {tableName}.");
|
_logger.LogInformation($"Created fitment table for part group {tableName}.");
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
}, token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
|
||||||
}
|
}
|
||||||
|
|
||||||
Task.WaitAll(taskArray);
|
Task.WaitAll(taskArray);
|
||||||
_whiSeoService.SaveNotes(_noteDictionary);
|
|
||||||
|
|
||||||
|
_whiSeoService.SaveNotes(_noteDictionary);
|
||||||
_whiSeoService.CreateFitmentView();
|
_whiSeoService.CreateFitmentView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,8 @@ namespace PartSource.Automation.Jobs
|
|||||||
&& int.TryParse(columns[35], out int engineConfigId)
|
&& int.TryParse(columns[35], out int engineConfigId)
|
||||||
&& int.TryParse(columns[36], out int vehicleToEngineConfigId))
|
&& int.TryParse(columns[36], out int vehicleToEngineConfigId))
|
||||||
{
|
{
|
||||||
if (regionId == 2 && new[] { 5, 6, 7 }.Contains(vehicleTypeId))
|
if (new[] { 5, 6, 7 }.Contains(vehicleTypeId))
|
||||||
|
//if (regionId == 2 && new[] { 5, 6, 7 }.Contains(vehicleTypeId))
|
||||||
{
|
{
|
||||||
dataTable.Rows.Add(new object[] { year, makeId, makeName, modelId, modelName, regionId, regionName, vehicleTypeId, engineConfigId, engineDescription, baseVehicleId, vehicleToEngineConfigId, submodelId, submodelName });
|
dataTable.Rows.Add(new object[] { year, makeId, makeName, modelId, modelName, regionId, regionName, vehicleTypeId, engineConfigId, engineDescription, baseVehicleId, vehicleToEngineConfigId, submodelId, submodelName });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ using Ratermania.Automation.Interfaces;
|
|||||||
using Ratermania.Shopify;
|
using Ratermania.Shopify;
|
||||||
using Ratermania.Shopify.Resources;
|
using Ratermania.Shopify.Resources;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace PartSource.Automation.Jobs
|
namespace PartSource.Automation.Jobs
|
||||||
{
|
{
|
||||||
@@ -37,20 +38,24 @@ namespace PartSource.Automation.Jobs
|
|||||||
|
|
||||||
public async Task Run(CancellationToken token, params string[] arguments)
|
public async Task Run(CancellationToken token, params string[] arguments)
|
||||||
{
|
{
|
||||||
|
string logfile = Path.Combine(Path.GetTempPath(), $"missing_fitment_{DateTime.Now:yyyy-MM-dd}.csv");
|
||||||
|
using StreamWriter noFitmentWriter = File.AppendText(logfile);
|
||||||
|
noFitmentWriter.WriteLine("SKU,LineCode,PartNumber");
|
||||||
|
|
||||||
IList<string> productTypes = await _fitmentContext.ProductTypes
|
_logger.LogInformation($"Logging products without fitment to {logfile}");
|
||||||
|
|
||||||
|
IList<ProductType> productTypes = await _fitmentContext.ProductTypes
|
||||||
.Where(p => p.Active)
|
.Where(p => p.Active)
|
||||||
.Select(p => HttpUtility.UrlEncode(p.Name))
|
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
foreach (string productType in productTypes)
|
foreach (ProductType productType in productTypes)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Processing {productType}", HttpUtility.UrlDecode(productType));
|
_logger.LogInformation("Processing {productType}", productType.Name);
|
||||||
|
|
||||||
IEnumerable<Product> products = null;
|
IEnumerable<Product> products = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
products = await _shopifyClient.Products.Get(new Dictionary<string, object> { { "limit", 250 }, { "product_type", productType } });
|
products = await _shopifyClient.Products.Get(new Dictionary<string, object> { { "limit", 250 }, { "product_type", HttpUtility.UrlEncode(productType.Name) } });
|
||||||
//products = new List<Product>
|
//products = new List<Product>
|
||||||
//{
|
//{
|
||||||
// await _shopifyClient.Products.GetById(7458071052335)
|
// await _shopifyClient.Products.GetById(7458071052335)
|
||||||
@@ -88,6 +93,12 @@ namespace PartSource.Automation.Jobs
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Temporarily skip castrol oils
|
||||||
|
if (importData.LineCode == "CST")
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Extract Partsource bullet points if present.
|
// Extract Partsource bullet points if present.
|
||||||
string bodyHtml = string.IsNullOrEmpty(product.BodyHtml)
|
string bodyHtml = string.IsNullOrEmpty(product.BodyHtml)
|
||||||
? string.Empty
|
? string.Empty
|
||||||
@@ -99,6 +110,8 @@ namespace PartSource.Automation.Jobs
|
|||||||
if (!vehicleIdFitment.Any())
|
if (!vehicleIdFitment.Any())
|
||||||
{
|
{
|
||||||
Console.WriteLine($"No fitment data for {importData.LineCode} {importData.PartNumber}");
|
Console.WriteLine($"No fitment data for {importData.LineCode} {importData.PartNumber}");
|
||||||
|
noFitmentWriter.WriteLine($"\"{importData.VariantSku}\",\"{importData.LineCode}\",\"{importData.PartNumber}\"");
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,6 +194,9 @@ namespace PartSource.Automation.Jobs
|
|||||||
products = await _shopifyClient.Products.GetPrevious();
|
products = await _shopifyClient.Products.GetPrevious();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
productType.Active = false;
|
||||||
|
await _fitmentContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,20 +100,20 @@ namespace PartSource.Automation.Jobs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
//try
|
||||||
{
|
//{
|
||||||
count += products.Count();
|
// count += products.Count();
|
||||||
products = await _shopifyClient.Products.GetNext();
|
// products = await _shopifyClient.Products.GetNext();
|
||||||
_logger.LogInformation($"Total updated: {count}");
|
// _logger.LogInformation($"Total updated: {count}");
|
||||||
}
|
//}
|
||||||
|
|
||||||
catch (Exception ex)
|
//catch (Exception ex)
|
||||||
{
|
//{
|
||||||
_logger.LogWarning(ex, "Failed to get the next set of products. Retrying");
|
// _logger.LogWarning(ex, "Failed to get the next set of products. Retrying");
|
||||||
products = await _shopifyClient.Products.GetPrevious();
|
// products = await _shopifyClient.Products.GetPrevious();
|
||||||
}
|
//}
|
||||||
|
|
||||||
_emailService.Send("Pricing Update Completed", $"The pricing update has completed.");
|
// _emailService.Send("Pricing Update Completed", $"The pricing update has completed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,10 @@
|
|||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Configurations>Debug;Release;Also Debug</Configurations>
|
<Configurations>Debug;Release;Also Debug</Configurations>
|
||||||
|
<ServerGarbageCollection>true</ServerGarbageCollection>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="11.0.1" />
|
|
||||||
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
|
|
||||||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.2">
|
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.2">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
@@ -21,11 +20,11 @@
|
|||||||
<PackageReference Include="Ratermania.Automation" Version="6.16.9" />
|
<PackageReference Include="Ratermania.Automation" Version="6.16.9" />
|
||||||
<PackageReference Include="Ratermania.Automation.Common" Version="6.16.9" />
|
<PackageReference Include="Ratermania.Automation.Common" Version="6.16.9" />
|
||||||
<PackageReference Include="Ratermania.JwtSpot" Version="6.16.9" />
|
<PackageReference Include="Ratermania.JwtSpot" Version="6.16.9" />
|
||||||
<PackageReference Include="Ratermania.Shopify" Version="6.16.11" />
|
|
||||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\ratermania\Packages\Shopify\Shopify.csproj" />
|
||||||
<ProjectReference Include="..\PartSource.Data\PartSource.Data.csproj" />
|
<ProjectReference Include="..\PartSource.Data\PartSource.Data.csproj" />
|
||||||
<ProjectReference Include="..\PartSource.Services\PartSource.Services.csproj" />
|
<ProjectReference Include="..\PartSource.Services\PartSource.Services.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using PartSource.Automation.Jobs;
|
using PartSource.Automation.Jobs;
|
||||||
using PartSource.Automation.Services;
|
using PartSource.Automation.Services;
|
||||||
using PartSource.Data.AutoMapper;
|
|
||||||
using PartSource.Data.Contexts;
|
using PartSource.Data.Contexts;
|
||||||
using PartSource.Services;
|
using PartSource.Services;
|
||||||
using Ratermania.Automation.DependencyInjection;
|
using Ratermania.Automation.DependencyInjection;
|
||||||
using Ratermania.Shopify.DependencyInjection;
|
using Ratermania.Shopify.DependencyInjection;
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace PartSource.Automation
|
namespace PartSource.Automation
|
||||||
{
|
{
|
||||||
@@ -63,7 +62,7 @@ namespace PartSource.Automation
|
|||||||
{
|
{
|
||||||
options.ApiKey = builder.Configuration["Shopify:ApiKey"];
|
options.ApiKey = builder.Configuration["Shopify:ApiKey"];
|
||||||
options.ApiSecret = builder.Configuration["Shopify:ApiSecret"];
|
options.ApiSecret = builder.Configuration["Shopify:ApiSecret"];
|
||||||
options.ApiVersion = "2024-10";
|
options.ApiVersion = "2025-10";
|
||||||
options.ShopDomain = builder.Configuration["Shopify:ShopDomain"];
|
options.ShopDomain = builder.Configuration["Shopify:ShopDomain"];
|
||||||
|
|
||||||
//options.ApiKey = "9a533dad460321c6ce8f30bf5b8691ed";
|
//options.ApiKey = "9a533dad460321c6ce8f30bf5b8691ed";
|
||||||
@@ -74,7 +73,7 @@ namespace PartSource.Automation
|
|||||||
|
|
||||||
.AddAutomation(options =>
|
.AddAutomation(options =>
|
||||||
{
|
{
|
||||||
options.HasBaseInterval(new TimeSpan(0, 5, 0))
|
options.HasBaseInterval(new TimeSpan(24, 0, 0))
|
||||||
.HasMaxFailures(5)
|
.HasMaxFailures(5)
|
||||||
//.HasJob<TestJob>(options => options.HasInterval(new TimeSpan(7, 0, 0, 0)));
|
//.HasJob<TestJob>(options => options.HasInterval(new TimeSpan(7, 0, 0, 0)));
|
||||||
//
|
//
|
||||||
@@ -96,7 +95,7 @@ namespace PartSource.Automation
|
|||||||
// options.HasInterval(new TimeSpan(24, 0, 0))
|
// options.HasInterval(new TimeSpan(24, 0, 0))
|
||||||
// .StartsAt(DateTime.Today.AddHours(-24))
|
// .StartsAt(DateTime.Today.AddHours(-24))
|
||||||
// )
|
// )
|
||||||
.HasJob<UpdatePricing>(options =>
|
.HasJob<PartsSync>(options =>
|
||||||
options.HasInterval(new TimeSpan(24, 0, 0))
|
options.HasInterval(new TimeSpan(24, 0, 0))
|
||||||
.StartsAt(DateTime.Today.AddHours(-22))
|
.StartsAt(DateTime.Today.AddHours(-22))
|
||||||
//.HasDependency<ExecuteSsisPackages>()
|
//.HasDependency<ExecuteSsisPackages>()
|
||||||
@@ -124,9 +123,7 @@ namespace PartSource.Automation
|
|||||||
.AddSingleton<VehicleService>()
|
.AddSingleton<VehicleService>()
|
||||||
.AddSingleton<VehicleFitmentService>()
|
.AddSingleton<VehicleFitmentService>()
|
||||||
.AddSingleton<NexpartService>()
|
.AddSingleton<NexpartService>()
|
||||||
.AddSingleton<PartService>()
|
.AddSingleton<PartService>();
|
||||||
|
|
||||||
.AddAutoMapper(typeof(PartSourceProfile));
|
|
||||||
})
|
})
|
||||||
.ConfigureLogging((builder, logging) =>
|
.ConfigureLogging((builder, logging) =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,9 +87,7 @@ namespace PartSource.Automation.Services
|
|||||||
using SqlConnection connection = new SqlConnection(_connectionString);
|
using SqlConnection connection = new SqlConnection(_connectionString);
|
||||||
connection.Open();
|
connection.Open();
|
||||||
|
|
||||||
string sql = string.Empty;
|
using SqlCommand command = new SqlCommand($"CREATE TABLE [FitmentTemp].[{tableName}]([LineCode] [nvarchar](10) NOT NULL, [PartNumber] [nvarchar](25) NOT NULL, [BaseVehicleId] [int] NOT NULL, [EngineConfigId] [int] NOT NULL, [Position] [nvarchar](250) null, [FitmentNoteHash] [nvarchar](40) null, PartTerminologyId [int] not null)", connection);
|
||||||
|
|
||||||
using SqlCommand command = new SqlCommand($"EXEC CreateFitmentTempTable @tableName = '{tableName}'", connection);
|
|
||||||
command.ExecuteNonQuery();
|
command.ExecuteNonQuery();
|
||||||
|
|
||||||
using SqlBulkCopy bulk = new SqlBulkCopy(connection)
|
using SqlBulkCopy bulk = new SqlBulkCopy(connection)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"FitmentDatabase": "Data Source=localhost;Initial Catalog=WhiFitment;Integrated Security=true;TrustServerCertificate=true",
|
//"FitmentDatabase": "Data Source=localhost;Initial Catalog=WhiFitment;Integrated Security=true;TrustServerCertificate=true",
|
||||||
//"FitmentDatabase": "Server=tcp:ps-automation.eastus2.cloudapp.azure.com,1433;Initial Catalog=WhiFitment;User ID=sa;Password=GZ0`-ekd~[2u;Encrypt=True;TrustServerCertificate=True;Connection Timeout=300",
|
"FitmentDatabase": "Server=tcp:ps-automation.eastus2.cloudapp.azure.com,1433;Initial Catalog=WhiFitment;User ID=sa;Password=GZ0`-ekd~[2u;Encrypt=True;TrustServerCertificate=True;Connection Timeout=300",
|
||||||
"PartSourceDatabase": "Server=tcp:ps-whi.database.windows.net,1433;Initial Catalog=ps-whi-stage;Persist Security Info=False;User ID=ps-whi;Password=9-^*N5dw!6:|.5Q;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
|
"PartSourceDatabase": "Server=tcp:ps-whi.database.windows.net,1433;Initial Catalog=ps-whi-stage;Persist Security Info=False;User ID=ps-whi;Password=9-^*N5dw!6:|.5Q;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
|
||||||
},
|
},
|
||||||
"emailConfiguration": {
|
"emailConfiguration": {
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
using AutoMapper;
|
|
||||||
using PartSource.Data.Dtos;
|
|
||||||
using PartSource.Data.Models;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace PartSource.Data.AutoMapper
|
|
||||||
{
|
|
||||||
public class PartSourceProfile : Profile
|
|
||||||
{
|
|
||||||
public PartSourceProfile()
|
|
||||||
{
|
|
||||||
CreateMap<Vehicle, MakeDto>();
|
|
||||||
CreateMap<Vehicle, ModelDto>();
|
|
||||||
CreateMap<Vehicle, SubmodelDto>();
|
|
||||||
CreateMap<Vehicle, BaseVehicleDto>();
|
|
||||||
CreateMap<Vehicle, EngineDto>();
|
|
||||||
CreateMap<Vehicle, VehicleDto>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="11.0.1" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.5">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="11.0.1" />
|
<PackageReference Include="AutoMapper" Version="11.0.1" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<PackageReference Include="Ratermania.Shopify" Version="6.16.11" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\ratermania\Packages\Shopify\Shopify.csproj" />
|
||||||
<ProjectReference Include="..\PartSource.Data\PartSource.Data.csproj" />
|
<ProjectReference Include="..\PartSource.Data\PartSource.Data.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PartSource.Services", "Part
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PartSource.Automation", "PartSource.Automation\PartSource.Automation.csproj", "{C85D675B-A76C-4F9C-9C57-1E063211C946}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PartSource.Automation", "PartSource.Automation\PartSource.Automation.csproj", "{C85D675B-A76C-4F9C-9C57-1E063211C946}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shopify", "..\ratermania\Packages\Shopify\Shopify.csproj", "{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shopify.BulkUpdate", "..\ratermania\Packages\Shopify.BulkUpdate\Shopify.BulkUpdate.csproj", "{E9F85D14-D6A6-1412-E0E6-69D47766694A}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Also Debug|Any CPU = Also Debug|Any CPU
|
|
||||||
Also Debug|x64 = Also Debug|x64
|
|
||||||
Also Debug|x86 = Also Debug|x86
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
Debug|x86 = Debug|x86
|
Debug|x86 = Debug|x86
|
||||||
@@ -24,12 +25,6 @@ Global
|
|||||||
Release|x86 = Release|x86
|
Release|x86 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Also Debug|Any CPU.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Also Debug|Any CPU.Build.0 = Also Debug|Any CPU
|
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Also Debug|x64.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Also Debug|x64.Build.0 = Also Debug|Any CPU
|
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Also Debug|x86.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Also Debug|x86.Build.0 = Also Debug|Any CPU
|
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -42,12 +37,6 @@ Global
|
|||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Release|x64.Build.0 = Release|Any CPU
|
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Release|x86.ActiveCfg = Release|Any CPU
|
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Release|x86.Build.0 = Release|Any CPU
|
{126B8961-1D86-4F73-9BB9-79ECE78E9257}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Also Debug|Any CPU.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Also Debug|Any CPU.Build.0 = Also Debug|Any CPU
|
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Also Debug|x64.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Also Debug|x64.Build.0 = Also Debug|Any CPU
|
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Also Debug|x86.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Also Debug|x86.Build.0 = Also Debug|Any CPU
|
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -60,12 +49,6 @@ Global
|
|||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Release|x64.Build.0 = Release|Any CPU
|
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Release|x86.ActiveCfg = Release|Any CPU
|
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Release|x86.Build.0 = Release|Any CPU
|
{B4848BCD-6BCC-44BD-AD6E-38511AEC1851}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Also Debug|Any CPU.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Also Debug|Any CPU.Build.0 = Also Debug|Any CPU
|
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Also Debug|x64.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Also Debug|x64.Build.0 = Also Debug|Any CPU
|
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Also Debug|x86.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Also Debug|x86.Build.0 = Also Debug|Any CPU
|
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -78,12 +61,6 @@ Global
|
|||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Release|x64.Build.0 = Release|Any CPU
|
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Release|x86.ActiveCfg = Release|Any CPU
|
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Release|x86.Build.0 = Release|Any CPU
|
{2E7BCDF6-643E-405A-A69A-4907DF5491AF}.Release|x86.Build.0 = Release|Any CPU
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Also Debug|Any CPU.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Also Debug|Any CPU.Build.0 = Also Debug|Any CPU
|
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Also Debug|x64.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Also Debug|x64.Build.0 = Also Debug|Any CPU
|
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Also Debug|x86.ActiveCfg = Also Debug|Any CPU
|
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Also Debug|x86.Build.0 = Also Debug|Any CPU
|
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
@@ -96,6 +73,30 @@ Global
|
|||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Release|x64.Build.0 = Release|Any CPU
|
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Release|x86.ActiveCfg = Release|Any CPU
|
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Release|x86.Build.0 = Release|Any CPU
|
{C85D675B-A76C-4F9C-9C57-1E063211C946}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{DBAE670D-D4DC-CF6C-0615-1026D17A92D0}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{E9F85D14-D6A6-1412-E0E6-69D47766694A}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
Reference in New Issue
Block a user