using AutoMapper; using AutoMapper.EquivalencyExpression; using PyroFetes; using FastEndpoints; using FastEndpoints.Swagger; using FastEndpoints.Security; using Microsoft.Net.Http.Headers; using PyroFetes.MappingProfiles; using PyroFetes.Repositories; using PyroFetes.Services.Pdf; using QuestPDF.Infrastructure; WebApplicationBuilder builder = WebApplication.CreateBuilder(args); // Configurer la licence QuestPDF QuestPDF.Settings.License = LicenseType.Community; // On ajoute ici FastEndpoints, un framework REPR et Swagger aux services disponibles dans le projet builder.Services .AddAuthenticationJwtBearer(s => s.SigningKey = "ThisIsASuperSecretJwtKeyThatIsAtLeast32CharsLong") .AddAuthorization() .AddFastEndpoints() .SwaggerDocument(options => { options.ShortSchemaNames = true; }) .AddCors(options => { options.AddDefaultPolicy(policyBuilder => { policyBuilder .WithOrigins("http://localhost:4200") .WithMethods("GET", "POST", "PUT", "DELETE", "PATCH") .AllowAnyHeader() .WithExposedHeaders(HeaderNames.ContentDisposition); }); }); // On ajoute ici la configuration de la base de données builder.Services.AddDbContext(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); // Ajout des services builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); MapperConfiguration mappingConfig = new(mc => { mc.AddCollectionMappers(); mc.AddProfile(new DtoToEntityMappings()); mc.AddProfile(new EntityToDtoMappings()); }, new LoggerFactory()); AutoMapper.IMapper mapper = mappingConfig.CreateMapper(); builder.Services.AddSingleton(mapper); // On construit l'application en lui donnant vie WebApplication app = builder.Build(); app.UseAuthentication() .UseAuthorization() .UseFastEndpoints(options => { options.Endpoints.ShortNames = true; options.Endpoints.RoutePrefix = "API"; }) .UseSwaggerGen(); app.UseHttpsRedirection(); app.UseCors(); app.Run();