using _0_Framework.Application; using _0_Framework.Application.Sms; using _0_Framework.Application.UID; using _0_Framework.InfraStructure.Mongo; using AccountManagement.Configuration; using BackgroundInstitutionContract.Task; using BackgroundInstitutionContract.Task.Jobs; using CompanyManagment.App.Contracts.Hubs; using CompanyManagment.EFCore.Services; using GozareshgirProgramManager.Application._Bootstrapper; using GozareshgirProgramManager.Application.Interfaces; using GozareshgirProgramManager.Application.Modules.Users.Commands.CreateUser; using GozareshgirProgramManager.Infrastructure; using GozareshgirProgramManager.Infrastructure.Persistence.Seed; using Hangfire; using Microsoft.AspNetCore.Identity; using MongoDB.Driver; using PersonalContractingParty.Config; using Query.Bootstrapper; using Shared.Contracts.PmUser.Queries; using WorkFlow.Infrastructure.Config; var builder = WebApplication.CreateBuilder(args); var hangfireConnectionString = builder.Configuration.GetConnectionString("HangfireDb"); builder.Services.AddHangfire(x => x.UseSqlServerStorage(hangfireConnectionString)); builder.Services.AddHangfireServer(); var connectionString = builder.Configuration.GetConnectionString("MesbahDb"); var connectionStringTestDb = builder.Configuration.GetConnectionString("TestDb"); builder.Services.AddSingleton(); builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.Configure(builder.Configuration); builder.Services.AddScoped(); #region MongoDb var mongoConnectionSection = builder.Configuration.GetSection("MongoDb"); var mongoDbSettings = mongoConnectionSection.Get(); var mongoClient = new MongoClient(mongoDbSettings.ConnectionString); var mongoDatabase = mongoClient.GetDatabase(mongoDbSettings.DatabaseName); builder.Services.AddSingleton(mongoDatabase); #endregion builder.Services.AddProgramManagerApplication(); builder.Services.AddProgramManagerInfrastructure(builder.Configuration); PersonalBootstrapper.Configure(builder.Services, connectionString); TestDbBootStrapper.Configure(builder.Services, connectionStringTestDb); AccountManagementBootstrapper.Configure(builder.Services, connectionString); WorkFlowBootstrapper.Configure(builder.Services, connectionString); QueryBootstrapper.Configure(builder.Services); JobsBootstrapper.Configure(builder.Services); builder.Services.AddHttpClient(); builder.Services.AddHttpContextAccessor(); builder.Services.AddSignalR(); var app = builder.Build(); app.MapHub("/sendSmsHub"); app.MapHangfireDashboard(); app.MapGet("/", () => "Hello World!"); using (var scope = app.Services.CreateScope()) { var jobScheduler = scope.ServiceProvider.GetRequiredService(); jobScheduler.Register(); } app.Run();