using System.Text.Json.Serialization; using Microsoft.AspNetCore.Cors.Infrastructure; using Microsoft.Extensions.Options; using OFBButte.Application.Configuration; using OFBButte.Application.Database; using OFBButte.Application.Email; using OFBButte.Database; using OFBButte.Infrastructure.Email; var builder = WebApplication.CreateBuilder(args); string CorsPolicy = "OFBCorsPolicy"; builder.Services.AddCors(options => { options.AddPolicy(CorsPolicy, policy => { policy.WithOrigins("http://localhost:4200", "https://test.ofbbutte.com", "https://ofbbutte.com") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); builder.Services.ConfigureHttpJsonOptions(options => { options.SerializerOptions.Converters.Add(new JsonStringEnumConverter()); options.SerializerOptions.Converters.Add(new JsonStringBooleanConverter()); }); // App Settings var appSettings = builder.Configuration.GetSection("App").Get(); builder.Services.AddSingleton(appSettings); // DB Context builder.Services.AddDbContext(o => { OFBContext.UseMySql(o, builder.Configuration.GetConnectionString("OFBContext")); }); builder.Services.AddScoped(s => s.GetService()); // Email Service builder.Services.AddScoped(s => { var options = s.GetService>(); return new EmailSender(options.Value.Environment != "Prod"); }); var app = builder.Build(); app.UseCors(CorsPolicy); app.MapGet("/", () => $"OFB API - {app.Environment.EnvironmentName} - {appSettings.Environment}"); app.MapMissionaryRoutes(); app.Run();