using Demo.Data.RemoteData.RemoteDataBase; // Подключаем необходимые пространства имен
using Demo.Data.Repository;
using Demo.Domain.UseCase;
using Demo.UI;
using Microsoft.Extensions.DependencyInjection;

// Создаем экземпляр репозиториев
IServiceCollection services = new ServiceCollection(); // Создаем коллекцию сервисов

// Добавляем контекст базы данных
services.AddDbContext<RemoteDatabaseContext>();

// Добавляем репозитории
services.AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>();
services.AddSingleton<IUserRepository, SQLUserRepositoryImpl>();
services.AddSingleton<IPresenceRepository, SQLPresenceRepositoryImpl>();

// Добавляем юз-кейсы
services.AddSingleton<UserUseCase>();
services.AddSingleton<GroupUseCase>();
services.AddSingleton<UseCaseGeneratePresence>();

// Добавляем пользовательские интерфейсы
services.AddSingleton<GroupConsoleUI>();
services.AddSingleton<PresenceConsole>();
services.AddSingleton<MainMenuUI>();

var serviceProvider = services.BuildServiceProvider(); // Создаем провайдер сервисов

// Создаем пользовательский интерфейс
MainMenuUI mainMenuUI = serviceProvider.GetService<MainMenuUI>();

// Выводим главное меню
mainMenuUI.DisplayMenu(); // Выводим меню
