2023-02-02 10:50:02 -05:00
|
|
|
|
using MSAdminUsuarios.Context;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
using Security;
|
2023-03-21 18:55:21 -05:00
|
|
|
|
using System.Reflection;
|
|
|
|
|
using MSAdminUsuarios.Models;
|
|
|
|
|
using Microsoft.Extensions.Options;
|
|
|
|
|
using RabbitMQ.Client;
|
|
|
|
|
using MSAdminUsuarios.Utils;
|
|
|
|
|
using RabbitMQ.Client.Events;
|
2023-06-29 10:31:09 -05:00
|
|
|
|
using Microsoft.AspNetCore.Rewrite;
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
|
|
2023-03-21 18:55:21 -05:00
|
|
|
|
var config = new ConfigurationBuilder()
|
|
|
|
|
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
|
|
|
|
.AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true);
|
|
|
|
|
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2023-03-21 18:55:21 -05:00
|
|
|
|
// Add services to the container.
|
2023-02-02 10:50:02 -05:00
|
|
|
|
builder.Services.AddControllers();
|
|
|
|
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
|
|
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
|
|
|
builder.Services.AddSwaggerGen();
|
|
|
|
|
|
2023-03-21 18:55:21 -05:00
|
|
|
|
|
|
|
|
|
#region Logging
|
|
|
|
|
// Add logging configuration
|
|
|
|
|
builder.Logging.ClearProviders();
|
|
|
|
|
builder.Logging.AddConsole();
|
|
|
|
|
builder.Logging.AddDebug();
|
|
|
|
|
|
|
|
|
|
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
|
|
|
|
|
|
|
|
|
|
#warning Cuidado! NO cambiar nombre del proyecto! 19/03/23 -LM
|
|
|
|
|
string projectName = Assembly.GetEntryAssembly()?.GetName().Name ?? "MSAdminUsuarios";
|
|
|
|
|
var logger = loggerFactory.CreateLogger(projectName);
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Config: Base de Datos
|
2023-02-02 10:50:02 -05:00
|
|
|
|
// Cadena de Conexion a Bases de Datos
|
2023-03-21 18:55:21 -05:00
|
|
|
|
var ConString = builder.Configuration.GetSection("ConnectionStrings:ConString").Get<string>();
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2023-06-29 10:31:09 -05:00
|
|
|
|
// Configuraci<63>n del DbContext
|
2023-02-02 10:50:02 -05:00
|
|
|
|
builder.Services.AddDbContext<ModelContext>(options =>
|
|
|
|
|
{
|
2023-03-21 18:55:21 -05:00
|
|
|
|
//IConfiguration configuration = builder.Configuration;
|
2023-02-02 10:50:02 -05:00
|
|
|
|
options.UseOracle(
|
2023-03-21 18:55:21 -05:00
|
|
|
|
ConString,
|
|
|
|
|
options =>
|
|
|
|
|
options.UseOracleSQLCompatibility("11")
|
2023-02-02 10:50:02 -05:00
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
|
2023-03-21 18:55:21 -05:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Config: RabbitMQ
|
|
|
|
|
|
|
|
|
|
//Get config desde appsettings.json
|
|
|
|
|
builder.Services.Configure<RabbitMQConfig>(builder.Configuration.GetSection("RabbitMQConfig"));
|
|
|
|
|
|
|
|
|
|
builder.Services.AddSingleton<IConnection>(sp =>
|
|
|
|
|
{
|
|
|
|
|
var config = sp.GetRequiredService<IOptions<RabbitMQConfig>>().Value;
|
|
|
|
|
|
|
|
|
|
var factory = new ConnectionFactory
|
|
|
|
|
{
|
|
|
|
|
HostName = config.HostName,
|
|
|
|
|
UserName = config.UserName,
|
|
|
|
|
Password = config.Password
|
|
|
|
|
};
|
|
|
|
|
return factory.CreateConnection();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
builder.Services.AddScoped<IModel>(provider =>
|
|
|
|
|
{
|
2023-06-29 10:31:09 -05:00
|
|
|
|
// Creaci<63>n de channel, declaraci<63>n de queues y binding
|
2023-03-21 18:55:21 -05:00
|
|
|
|
return RabbitMQService.GetRabbitMQChannel(provider, projectName);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Config: Cors
|
|
|
|
|
|
2023-02-02 10:50:02 -05:00
|
|
|
|
// Enable Cors
|
|
|
|
|
builder.Services.AddCors(options => {
|
|
|
|
|
options.AddPolicy(name: "widthoutCors",
|
|
|
|
|
builder => {
|
|
|
|
|
builder.AllowAnyOrigin()
|
|
|
|
|
.AllowAnyMethod()
|
|
|
|
|
.AllowAnyHeader();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2023-03-21 18:55:21 -05:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Mapping / Build
|
2023-02-02 10:50:02 -05:00
|
|
|
|
var app = builder.Build();
|
|
|
|
|
|
|
|
|
|
// Configure the HTTP request pipeline.
|
|
|
|
|
if (app.Environment.IsDevelopment() || app.Environment.IsProduction())
|
|
|
|
|
{
|
|
|
|
|
app.UseSwagger();
|
|
|
|
|
app.UseSwaggerUI();
|
|
|
|
|
app.UseCors("widthoutCors");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(app.Environment.IsDevelopment())
|
|
|
|
|
{
|
|
|
|
|
Environment.SetEnvironmentVariable("Mode", "Dev");
|
|
|
|
|
} else
|
|
|
|
|
{
|
|
|
|
|
Environment.SetEnvironmentVariable("Mode", "Prod");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// app.UseHttpsRedirection();
|
|
|
|
|
|
2023-06-29 10:31:09 -05:00
|
|
|
|
var option = new RewriteOptions();
|
|
|
|
|
option.AddRedirect("^$", "swagger");
|
|
|
|
|
app.UseRewriter(option);
|
|
|
|
|
|
2023-02-02 10:50:02 -05:00
|
|
|
|
app.UseAuthorization();
|
|
|
|
|
|
|
|
|
|
app.MapControllers();
|
|
|
|
|
|
2023-03-21 18:55:21 -05:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Start and Subscribe to RabbitMQ event
|
|
|
|
|
RabbitMQService.ListenForIntegrationEvents(projectName, builder);
|
|
|
|
|
|
|
|
|
|
app.Run();
|