using Demo.Data.RemoteData.RemoteDataBase;
using Demo.Data.Repository;
using Demo.Domain.UseCase;
using Demo.UI;
using Microsoft.Extensions.DependencyInjection;

// Создаем экземпляр репозиториев
GroupRepositoryImpl groupRepositoryImpl = new GroupRepositoryImpl();
UserRepositoryImpl userRepositoryImpl = new UserRepositoryImpl();
PresenceRepositoryImpl presenceRepositoryImpl = new PresenceRepositoryImpl();
IServiceCollection services = new ServiceCollection();

services.AddDbContext<RemoteDatabaseContext>().
    AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>();
services.AddDbContext<RemoteDatabaseContext>().
    AddSingleton<IUserRepository, SQLUserRepositoryImpl>();
services.AddDbContext<RemoteDatabaseContext>().
    AddSingleton<IPresenceRepository, SQLPresenceRepositoryImpl>();


// Создаем UseCase для пользователей и групп
UserUseCase userUseCase = new UserUseCase(userRepositoryImpl, groupRepositoryImpl);
GroupUseCase groupUseCase = new GroupUseCase(groupRepositoryImpl);
UseCaseGeneratePresence presenceUseCase = new UseCaseGeneratePresence(userRepositoryImpl, presenceRepositoryImpl);

// Создаем пользовательский интерфейс
MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase, presenceUseCase);

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