using data.Domain.UseCase;
using data.RemoteData.RemoteDataBase;
using data.Repository;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Добавление контекста базы данных и репозиториев
builder.Services.AddDbContext<RemoteDatabaseContext>(); // Подключение через конфигурацию

// Регистрируем репозитории и UseCase
builder.Services.AddScoped<IUserRepository, SQLUserRepositoryImpl>();
builder.Services.AddScoped<IPresenceRepository, SQLPresenceRepositoryImpl>();
builder.Services.AddScoped<IGroupRepository, SQLGroupRepositoryImpl>();
builder.Services.AddScoped<UseCaseGeneratePresence>();

// Добавление контроллеров
builder.Services.AddControllers();

// Добавление Swagger для API документации
builder.Services.AddEndpointsApiExplorer(); // Для создания OpenAPI документации
builder.Services.AddSwaggerGen(); // Генерация документации Swagger

var app = builder.Build();

// Конфигурация Swagger UI для разработки
if (app.Environment.IsDevelopment())
{
    app.UseSwagger(); // Включаем Swagger
    app.UseSwaggerUI(); // Включаем Swagger UI
}

// Основные Middleware
app.UseHttpsRedirection(); // Перенаправление на HTTPS
app.MapControllers(); // Маршрутизация для контроллеров

app.Run(); // Запуск приложения
