using Data; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Model; using OpenAI_API; using Services.Implemnetation; using Services.Interaces; using Web.AIConfiguration; namespace Web.Extesions { public static class ServicesExtesions { public static void ConfigureSQLConnection(this IServiceCollection services, IConfiguration configuration) { services.AddDbContext(option => { option.UseSqlServer(configuration.GetConnectionString("SurveyVista"), cfg => cfg.MigrationsAssembly("Web")); }); services.AddIdentity(options => { // Identity options configuration options.Password.RequireDigit = true; options.Password.RequireLowercase = true; options.Password.RequiredLength = 6; options.User.RequireUniqueEmail = true; }) .AddRoles() .AddRoleManager>() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); } public static void ConfigurePageServices(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureBannerServices(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureAddress(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureSocialMedia(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureDashboard(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureFooter(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureQuestionnarie(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureQuestion(this IServiceCollection services) { services.AddScoped(); } public static void ConfigureNewsLetter(this IServiceCollection services) { services.AddScoped(); } public static void MailConfiguration(this IServiceCollection services) { services.AddTransient(); } public static void UserResponseConfiguration(this IServiceCollection services) { services.AddTransient(); } public static void MailStatConfiguration(this IServiceCollection services) { services.AddTransient(); } //public static void MailConfiguration(this IServiceCollection services, IConfiguration configuration) //{ // services.AddControllersWithViews(); // services.AddScoped(s => // { // var apiKey = configuration.GetSection("Mailjet")["ApiKey"]; // var apiSecret = configuration.GetSection("Mailjet")["SecretKey"]; // return new MailjetClient(apiKey, apiSecret); // }); //} public static void ConfigureServicesMailJet(this IServiceCollection services, IConfiguration configuration) { // Other configurations... // Retrieve Mailjet settings from appsettings.json var mailjetSettings = configuration.GetSection("MailJet"); var apiKey = mailjetSettings["ApiKey"]; var apiSecret = mailjetSettings["SecretKey"]; // Register Mailjet service with API key and secret key //services.AddSingleton(new MailjetService(apiKey, apiSecret)); // Other configurations... } public static void ConfigureOpenAI(this IServiceCollection services, IConfiguration configuration) { services.Configure(configuration.GetSection("OpenAI")); services.AddSingleton(); } } }