using AutoMapper; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using PartSource.Automation.Jobs; using PartSource.Automation.Jobs.POC; using PartSource.Automation.Services; using PartSource.Data; using PartSource.Data.AutoMapper; using PartSource.Data.Contexts; using PartSource.Services; using Ratermania.Automation.DependencyInjection; using Ratermania.Automation.Logging; using Ratermania.Shopify.DependencyInjection; using System; using System.IO; using System.Threading.Tasks; namespace PartSource.Automation { class Program { static async Task Main(string[] args){ try { using IHost host = CreateHostBuilder().Build(); await host.StartAsync(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); throw; } } private static IHostBuilder CreateHostBuilder() { return Host.CreateDefaultBuilder() .ConfigureAppConfiguration(builder => { string environment = Environment.GetEnvironmentVariable("AUTOMATION_ENVIRONMENT"); builder.SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true); }) .ConfigureServices((builder, services) => { services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("PartSourceDatabase"), opts => opts.EnableRetryOnFailure()) ) .AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("FitmentDatabase"), opts => { opts.EnableRetryOnFailure(); opts.CommandTimeout(600); }) ) .AddShopify(options => { options.ApiKey = builder.Configuration["Shopify:ApiKey"]; options.ApiSecret = builder.Configuration["Shopify:ApiSecret"]; options.ApiVersion = "2022-10"; options.ShopDomain = builder.Configuration["Shopify:ShopDomain"]; //options.ApiKey = "9a533dad460321c6ce8f30bf5b8691ed"; //options.ApiSecret = "dc9e28365d9858e544d57ac7af43fee7"; //options.ApiVersion = "2022-10"; //options.ShopDomain = "dev-partsource.myshopify.com"; }) .AddAutomation(options => { options.HasBaseInterval(new TimeSpan(0, 15, 0)) .HasMaxFailures(1) //.HasJob(options => options.HasInterval(new TimeSpan(7, 0, 0, 0))); // //.HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0))) // .HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0))); //.HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0)) //.HasDependency() //.HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0))); //.HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0)) // .HasDependency() // .HasDependency() // .HasDependency() // .StartsAt(DateTime.Today.AddHours(8)) //) ; //.HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0)) // .StartsAt(DateTime.Parse("2021-04-01 08:00:00")) //) .HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0)) // .StartsAt(DateTime.Today.AddMinutes(15)) // ) //.HasJob(options => options.HasInterval(new TimeSpan(24, 0, 0)) // .HasDependency() // // .StartsAt(DateTime.Today.AddHours(28)) ); //); //.AddApiServer(); }) .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .AddSingleton() .AddAutoMapper(typeof(PartSourceProfile)); }) .ConfigureLogging((builder, logging) => { logging.AddEventLog(); logging.AddConsole(); // logging.AddProvider(new AutomationLoggerProvider()); }); } } }