using PostFundManagement.Application.Extensions; using PostFundManagement.Domain.Abstractions; using PostFundManagement.Domain.Mediator; using PostFundManagement.Infrastructure.Database.Services; using PostFundManagement.Jobs; var builder = Host.CreateApplicationBuilder(args); builder.Services.AddFeatureManagement(); builder.Services.AddSharedServices(); builder.Services.AddHostedService(); builder.Services.AddRegisterServicesWithCaching(builder.Configuration); builder.Services.AddEndpointAndServiceCaching(builder.Configuration); builder.Services.AddTransient(); builder.Services.AddSkorubaApiService(builder.Configuration); builder.Services.AddHttpContextAccessor(); builder.Services.AddMediator(); builder.Services.AddScoped(typeof(IPipelineBehavior<,>), typeof(TelemetryPipelineBehavior<,>)); builder.Services.AddScoped(typeof(IPipelineBehavior<,>), typeof(LoggingPipelineBehavior<,>)); builder.Services.AddQuartzScheduler(DefaultSchedulerName, builder.Configuration); builder.Services.AddEmailServices(builder.Configuration); builder.Services.AddHashServices(builder.Configuration); builder.Services.AddGarageS3(builder.Configuration); builder.Services.AddHttpClient(); builder.Services.AddDataProtectionDatabase(builder.Configuration); builder.Services.AddApplicationDbContext(builder.Configuration); var host = builder.Build(); var schedulerFactory = host.Services.GetRequiredService(); var scheduler = await schedulerFactory.GetScheduler(); if (scheduler!.Status != SchedulerStatus.Running) await scheduler.Start(); host.Run();