122 lines
4.4 KiB
C#
122 lines
4.4 KiB
C#
using PartSource.Services;
|
|
using PartSource.Automation.Factories;
|
|
using PartSource.Automation.Jobs.Interfaces;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Configuration.FileExtensions;
|
|
using Microsoft.Extensions.Configuration.Json;
|
|
|
|
using PartSource.Data;
|
|
using System.IO;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using PartSource.Automation.Models.Configuration;
|
|
using PartSource.Automation.Jobs;
|
|
using PartSource.Automation.Services;
|
|
using PartSource.Services.Integrations;
|
|
|
|
using Ratermania.Shopify.DependencyInjection;
|
|
using PartSource.Automation.Models;
|
|
|
|
namespace PartSource.Automation
|
|
{
|
|
internal class Program
|
|
{
|
|
|
|
private static void Main(string[] args)
|
|
{
|
|
IServiceProvider serviceProvider = ConfigureServices();
|
|
|
|
JobFactory jobFactory = serviceProvider.GetService<JobFactory>();
|
|
EmailService emailService = serviceProvider.GetService<EmailService>();
|
|
|
|
foreach (string arg in args)
|
|
{
|
|
Console.Write($"Running job {arg}... ");
|
|
|
|
try
|
|
{
|
|
IAutomationJob job = jobFactory.Build(arg);
|
|
AutomationJobResult result = job.Run().Result;
|
|
|
|
if (result.IsSuccess)
|
|
{
|
|
emailService.Send($"{arg} Completed Successfully", result.Message);
|
|
}
|
|
|
|
else
|
|
{
|
|
emailService.Send($"{arg} Failed", result.Message);
|
|
}
|
|
|
|
Console.WriteLine("Done");
|
|
}
|
|
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine(ex.Message);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static IServiceProvider ConfigureServices()
|
|
{
|
|
string environment = Environment.GetEnvironmentVariable("PS_AUTOMATION_ENVIRONMENT");
|
|
|
|
IConfigurationBuilder builder = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
|
.AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true);
|
|
|
|
IConfigurationRoot configuration = builder.Build();
|
|
|
|
EmailConfiguration emailConfiguration = new EmailConfiguration();
|
|
FtpConfiguration ftpConfiguration = new FtpConfiguration();
|
|
SsisConfiguration ssisConfiguration = new SsisConfiguration();
|
|
|
|
configuration.Bind("emailConfiguration", emailConfiguration);
|
|
configuration.Bind("ftpConfiguration", ftpConfiguration);
|
|
configuration.Bind("ssisConfiguration", ssisConfiguration);
|
|
|
|
ServiceProvider serviceProvider = new ServiceCollection()
|
|
.AddDbContext<PartSourceContext>(options =>
|
|
options.UseSqlServer(configuration.GetConnectionString("PartSourceDatabase"), opts => opts.EnableRetryOnFailure())
|
|
)
|
|
|
|
.AddShopify<ShopifyClient>(options => {
|
|
options.ApiKey = configuration["Shopify:ApiKey"];
|
|
options.ApiSecret = configuration["Shopify:ApiSecret"];
|
|
options.ApiVersion = "2020-01";
|
|
options.ShopDomain = configuration["Shopify:ShopDomain"];
|
|
})
|
|
|
|
|
|
.AddSingleton(emailConfiguration)
|
|
.AddSingleton(ftpConfiguration)
|
|
.AddSingleton(ssisConfiguration)
|
|
.AddSingleton<NexpartService>()
|
|
.AddSingleton<VehicleService>()
|
|
.AddSingleton<SsisService>()
|
|
.AddSingleton<FtpService>()
|
|
.AddSingleton<EmailService>()
|
|
.AddSingleton<AddAndUpdateProducts>()
|
|
//.AddSingleton<BuildCategories>()
|
|
//.AddSingleton<BackupProducts>()
|
|
//.AddSingleton<BuildVehicleCache>()
|
|
.AddSingleton<DeleteProducts>()
|
|
.AddSingleton<StatusCheck>()
|
|
.AddSingleton<UpdateFitment>()
|
|
.AddSingleton<UpdatePricing>()
|
|
.AddSingleton<UpdatePositioning>()
|
|
.AddSingleton<ExecuteSsisPackages>()
|
|
.AddSingleton<JobFactory>()
|
|
.BuildServiceProvider();
|
|
|
|
return serviceProvider;
|
|
}
|
|
}
|
|
}
|