Finalize hourly inventory configuration

This commit is contained in:
2025-04-03 20:48:03 -04:00
parent eb928a7c56
commit 57f42a0e47
4 changed files with 44 additions and 30 deletions

View File

@@ -14,19 +14,22 @@ using PartSource.Automation.Models.Ftp;
using PartSource.Automation.Services; using PartSource.Automation.Services;
using Ratermania.Automation.Interfaces; using Ratermania.Automation.Interfaces;
namespace PartSource.Automation.Jobs.POC namespace PartSource.Automation.Jobs
{ {
public class BulkUpdateInventory : IAutomationJob public class BulkUpdateInventory : IAutomationJob
{ {
private readonly FtpService _ftpService; private readonly FtpService _ftpService;
private readonly ILogger<BulkUpdateInventory> _logger; private readonly ILogger<BulkUpdateInventory> _logger;
private readonly string _connectionString;
public BulkUpdateInventory(IConfiguration configuration, ILogger<BulkUpdateInventory> logger) public BulkUpdateInventory(IConfiguration configuration, ILogger<BulkUpdateInventory> logger)
{ {
FtpConfiguration ftpConfiguration = configuration.GetSection("FtpServers:AutomationConfiguration").Get<FtpConfiguration>(); FtpConfiguration ftpConfiguration = configuration.GetSection("FtpServers:AutomationConfiguration").Get<FtpConfiguration>();
_ftpService = new FtpService(ftpConfiguration); _ftpService = new FtpService(ftpConfiguration);
_logger = logger; _connectionString = configuration.GetConnectionString("PartSourceDatabase");
_logger = logger;
} }
public async Task Run(CancellationToken token, params string[] arguments) public async Task Run(CancellationToken token, params string[] arguments)
@@ -46,7 +49,7 @@ namespace PartSource.Automation.Jobs.POC
DataTable dataTable = GetDataTable(file); DataTable dataTable = GetDataTable(file);
using SqlConnection connection = new SqlConnection("Server=tcp:ps-whi.database.windows.net,1433;Initial Catalog=ps-whi-test;Persist Security Info=False;User ID=ps-whi;Password=9-^*N5dw!6:|.5Q;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"); using SqlConnection connection = new SqlConnection(_connectionString);
connection.Open(); connection.Open();
using SqlCommand command = new SqlCommand("TRUNCATE TABLE PartAvailability", connection); using SqlCommand command = new SqlCommand("TRUNCATE TABLE PartAvailability", connection);

View File

@@ -17,7 +17,7 @@ namespace PartSource.Automation.Jobs
private readonly ILogger<ExecuteSsisPackages> _logger; private readonly ILogger<ExecuteSsisPackages> _logger;
// TODO: set from config // TODO: set from config
private readonly string[] _ssisPackages = {"Parts Availability" }; private readonly string[] _ssisPackages = {"Parts Price" };
public ExecuteSsisPackages(EmailService emailService, IConfiguration configuration, SsisService ssisService, ILogger<ExecuteSsisPackages> logger) public ExecuteSsisPackages(EmailService emailService, IConfiguration configuration, SsisService ssisService, ILogger<ExecuteSsisPackages> logger)
{ {
@@ -36,7 +36,7 @@ namespace PartSource.Automation.Jobs
{ {
try try
{ {
// _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.");

View File

@@ -14,18 +14,21 @@ using PartSource.Automation.Models.Ftp;
using PartSource.Automation.Services; using PartSource.Automation.Services;
using Ratermania.Automation.Interfaces; using Ratermania.Automation.Interfaces;
namespace PartSource.Automation.Jobs.POC namespace PartSource.Automation.Jobs
{ {
public class PartialInventoryUpdate : IAutomationJob public class PartialInventoryUpdate : IAutomationJob
{ {
private readonly FtpService _ftpService; private readonly FtpService _ftpService;
private readonly ILogger<PartialInventoryUpdate> _logger; private readonly ILogger<PartialInventoryUpdate> _logger;
private readonly string _connectionString;
public PartialInventoryUpdate(IConfiguration configuration, ILogger<PartialInventoryUpdate> logger) public PartialInventoryUpdate(IConfiguration configuration, ILogger<PartialInventoryUpdate> logger)
{ {
FtpConfiguration ftpConfiguration = configuration.GetSection("FtpServers:AutomationConfiguration").Get<FtpConfiguration>(); FtpConfiguration ftpConfiguration = configuration.GetSection("FtpServers:AutomationConfiguration").Get<FtpConfiguration>();
_ftpService = new FtpService(ftpConfiguration); _ftpService = new FtpService(ftpConfiguration);
_connectionString = _connectionString = configuration.GetConnectionString("PartSourceDatabase");
_logger = logger; _logger = logger;
} }
@@ -46,7 +49,7 @@ namespace PartSource.Automation.Jobs.POC
string file = _ftpService.Download($"{lastUploadedFile.Filename}"); string file = _ftpService.Download($"{lastUploadedFile.Filename}");
using SqlConnection connection = new SqlConnection("Server=tcp:ps-whi.database.windows.net,1433;Initial Catalog=ps-whi-test;Persist Security Info=False;User ID=ps-whi;Password=9-^*N5dw!6:|.5Q;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"); using SqlConnection connection = new SqlConnection(_connectionString);
connection.Open(); connection.Open();
using StreamReader reader = new StreamReader(file); using StreamReader reader = new StreamReader(file);

View File

@@ -4,7 +4,6 @@ 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.Jobs.POC;
using PartSource.Automation.Services; using PartSource.Automation.Services;
using PartSource.Data.AutoMapper; using PartSource.Data.AutoMapper;
using PartSource.Data.Contexts; using PartSource.Data.Contexts;
@@ -75,28 +74,37 @@ namespace PartSource.Automation
.AddAutomation(options => .AddAutomation(options =>
{ {
options.HasBaseInterval(new TimeSpan(0, 5, 0)) options.HasBaseInterval(new TimeSpan(0, 5, 0))
.HasMaxFailures(1) .HasMaxFailures(1)
//.HasJob<TestJob>(options => options.HasInterval(new TimeSpan(7, 0, 0, 0))); //.HasJob<TestJob>(options => options.HasInterval(new TimeSpan(7, 0, 0, 0)));
// //
//.HasJob<SyncronizeProducts>(options => options.HasInterval(new TimeSpan(24, 0, 0))) //.HasJob<SyncronizeProducts>(options => options.HasInterval(new TimeSpan(24, 0, 0)))
// .HasJob<ProcessWhiFitment>(options => options.HasInterval(new TimeSpan(24, 0, 0))); // .HasJob<ProcessWhiFitment>(options => options.HasInterval(new TimeSpan(24, 0, 0)));
//.HasJob<ProcessWhiVehicles>(options => options.HasInterval(new TimeSpan(24, 0, 0)) //.HasJob<ProcessWhiVehicles>(options => options.HasInterval(new TimeSpan(24, 0, 0))
//.HasDependency<SyncronizeProducts>() //.HasDependency<SyncronizeProducts>()
//.HasJob<UpdateFitment>(options => options.HasInterval(new TimeSpan(24, 0, 0))); //.HasJob<UpdateFitment>(options => options.HasInterval(new TimeSpan(24, 0, 0)));
//.HasJob<UpdatePositioning>(options => options.HasInterval(new TimeSpan(24, 0, 0)) //.HasJob<UpdatePositioning>(options => options.HasInterval(new TimeSpan(24, 0, 0))
// .HasDependency<UpdateFitment>() // .HasDependency<UpdateFitment>()
// .HasDependency<ProcessWhiFitment>() // .HasDependency<ProcessWhiFitment>()
// .HasDependency<SyncronizeProducts>() // .HasDependency<SyncronizeProducts>()
// .StartsAt(DateTime.Today.AddHours(8)) // .StartsAt(DateTime.Today.AddHours(8))
//) ; //) ;
//.HasJob<StatusCheck>(options => options.HasInterval(new TimeSpan(24, 0, 0)) //.HasJob<StatusCheck>(options => options.HasInterval(new TimeSpan(24, 0, 0))
// .StartsAt(DateTime.Parse("2021-04-01 08:00:00")) // .StartsAt(DateTime.Parse("2021-04-01 08:00:00"))
//) //)
.HasJob<BulkUpdateInventory>(options => .HasJob<ExecuteSsisPackages>(options =>
options.HasInterval(new TimeSpan(1, 0, 0)) options.HasInterval(new TimeSpan(24, 0, 0))
.StartsAt(DateTime.Today.AddHours(-27)) .StartsAt(DateTime.Today.AddHours(-24))
) )
.HasJob<UpdatePricing>(options =>
options.HasInterval(new TimeSpan(24, 0, 0))
.StartsAt(DateTime.Today.AddHours(-22))
.HasDependency<ExecuteSsisPackages>()
)
.HasJob<BulkUpdateInventory>(options =>
options.HasInterval(new TimeSpan(1, 0, 0))
.StartsAt(DateTime.Today.AddHours(-27))
)
.HasJob<PartialInventoryUpdate>(options => .HasJob<PartialInventoryUpdate>(options =>
options.HasInterval(new TimeSpan(1, 0, 0)) options.HasInterval(new TimeSpan(1, 0, 0))
.StartsAt(DateTime.Today.AddHours(-27).AddMinutes(30)) .StartsAt(DateTime.Today.AddHours(-27).AddMinutes(30))