Initial commit
This commit is contained in:
120
PartSource.Automation/Program.cs
Normal file
120
PartSource.Automation/Program.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
using PartSource.Data.Shopify;
|
||||
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<AddProducts>()
|
||||
//.AddSingleton<BuildCategories>()
|
||||
//.AddSingleton<BackupProducts>()
|
||||
//.AddSingleton<BuildVehicleCache>()
|
||||
.AddSingleton<DeleteProducts>()
|
||||
.AddSingleton<UpdateFitment>()
|
||||
.AddSingleton<UpdatePricing>()
|
||||
.AddSingleton<ExecuteSsisPackages>()
|
||||
.AddSingleton<JobFactory>()
|
||||
.BuildServiceProvider();
|
||||
|
||||
return serviceProvider;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user