using Demo.UI; using Demo.Data.RemoteData.RemoteDataBase; using Demo.Data.Repository; using Demo.Domain.UseCase; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System.Collections.Generic; using System.IO; using Demo.Domain.Models; namespace Demo { class Program { static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Добавляем сервисы в контейнер builder.Services.AddControllers(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); var app = builder.Build(); // Настройка конвейера обработки запросов if (app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); // Инициализация данных using (var scope = app.Services.CreateScope()) { var services = scope.ServiceProvider; var dbContext = new RemoteDatabaseContext(); DataInitializer.Initialize(dbContext); } // Запуск консольного меню var context = new RemoteDatabaseContext(); var userRepository = new SQLUserRepositoryImpl(context); var groupRepository = new SQLGroupRepositoryImpl(context); var presenceRepository = new SQLPresenceRepository(context); var userUseCase = new UserUseCase(userRepository); var groupUseCase = new GroupUseCase(groupRepository); var presenceUseCase = new UseCasePresence(presenceRepository); var userConsole = new UserConsole(userUseCase); var groupConsole = new GroupConsole(groupUseCase); var presenceConsole = new PresenceConsole(presenceUseCase, userUseCase); // Передаем userUseCase var excelExporter = new ExcelExporter(); // Создаем данные для экспорта var group = new Group { Name = "Group 1" }; var users = new List { new User { Id = Guid.NewGuid(), FIO = "User 1" } }; // Используем Guid для Id var presence = new List { new Presence { UserId = users[0].Id, IsAttendance = true } }; // Указываем путь для сохранения файла string directoryPath = @"C:\Users\Наиль\Source\Repos\slarny4\Demo1\Excel"; string filePath = Path.Combine(directoryPath, "GroupInfo.xlsx"); // Проверяем, существует ли директория, и если нет, создаем её if (!Directory.Exists(directoryPath)) { Directory.CreateDirectory(directoryPath); } // Вызываем метод для экспорта данных в Excel excelExporter.ExportGroupInfoToExcel(group, users, presence, filePath); var mainMenu = new MainMenu(userConsole, groupConsole, presenceConsole, excelExporter, groupUseCase, userUseCase, presenceUseCase); mainMenu.ShowMenu(); // Запуск веб-сервера app.Run(); } } }