presence/ui/MainMenu.cs

239 lines
12 KiB
C#
Raw Permalink Normal View History

2024-11-11 09:07:11 +00:00
using data.Repository;
using domain.Models;
using domain.UseCase;
using System;
2024-11-14 11:46:38 +00:00
using ui.ui;
2024-11-11 09:07:11 +00:00
namespace ui
{
public class MainMenuUI
{
private readonly UserConsoleUI _userConsoleUI;
private readonly GroupConsoleUI _groupConsoleUI;
private readonly PresenceConsole _presenceConsoleUI;
2024-11-15 07:44:04 +00:00
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase, IPresenceRepository presenceRepository)
2024-11-11 09:07:11 +00:00
{
_userConsoleUI = new UserConsoleUI(userUseCase);
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
2024-11-15 08:04:29 +00:00
_presenceConsoleUI = new PresenceConsole(presenceUseCase,presenceRepository);
2024-11-11 09:07:11 +00:00
}
public void DisplayMenu()
{
while (true)
{
Console.WriteLine("\n==================== Главная Панель ====================\n");
Console.WriteLine("~~~~~~~~~~~~~~~ УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ ~~~~~~~~~~~~~~~");
Console.WriteLine("1. Показать список всех пользователей");
Console.WriteLine("2. Удалить пользователя по его Guid");
Console.WriteLine("3. Обновить данные пользователя по Guid");
Console.WriteLine("4. Найти пользователя по его Guid");
Console.WriteLine();
Console.WriteLine("~~~~~~~~~~~~~~~ УПРАВЛЕНИЕ ГРУППАМИ ~~~~~~~~~~~~~~~");
Console.WriteLine("5. Показать список всех групп");
Console.WriteLine("6. Создать новую группу");
Console.WriteLine("7. Удалить группу по ID");
Console.WriteLine("8. Изменить название существующей группы");
Console.WriteLine("9. Найти группу по ее ID");
Console.WriteLine();
Console.WriteLine("~~~~~~~~~~~~~~~ УПРАВЛЕНИЕ ПОСЕЩАЕМОСТЬЮ ~~~~~~~~~~~~~~~");
Console.WriteLine("10. Сгенерировать посещаемость на текущий день");
Console.WriteLine("11. Сгенерировать посещаемость на текущую неделю");
Console.WriteLine("12. Показать посещаемость всех пользователей");
Console.WriteLine("13. Отметить пользователя как отсутствующего");
Console.WriteLine("14. Вывести посещаемость группы по ID");
Console.WriteLine("15. Создать Excel файл");
Console.WriteLine("16. Информация о посещаемости");
Console.WriteLine();
Console.WriteLine("========================================================");
Console.WriteLine("0. Выход из программы");
Console.Write("\nВыберите команду: ");
string command = Console.ReadLine();
Console.WriteLine();
switch (command)
{
case "1":
_userConsoleUI.DisplayAllUsers();
break;
case "2":
Console.Write("Введите Guid пользователя для удаления: ");
if (Guid.TryParse(Console.ReadLine(), out Guid userGuid))
{
2024-11-13 09:00:26 +00:00
_userConsoleUI.RemoveUserByGuid(userGuid);
2024-11-11 09:07:11 +00:00
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "3":
Console.Write("Введите Guid пользователя для обновления: ");
if (Guid.TryParse(Console.ReadLine(), out Guid updateUserGuid))
{
2024-11-13 09:00:26 +00:00
_userConsoleUI.UpdateUserByGuid(updateUserGuid);
2024-11-11 09:07:11 +00:00
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "4":
Console.Write("Введите Guid пользователя для поиска: ");
if (Guid.TryParse(Console.ReadLine(), out Guid findUserGuid))
{
2024-11-13 09:00:26 +00:00
_userConsoleUI.FindUserByGuid(findUserGuid);
2024-11-11 09:07:11 +00:00
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "5":
_groupConsoleUI.DisplayAllGroups();
break;
case "6":
Console.Write("Введите название новой группы: ");
string newGroupName = Console.ReadLine();
_groupConsoleUI.AddGroup(newGroupName);
break;
case "7":
Console.Write("Введите ID группы для удаления: ");
2024-11-13 09:00:26 +00:00
string groupIdForDeleteStr = Console.ReadLine();
2024-11-11 09:07:11 +00:00
if (!string.IsNullOrWhiteSpace(groupIdForDeleteStr) && int.TryParse(groupIdForDeleteStr, out int groupIdForDelete)) // Проверяем, что строка не пустая и может быть преобразована в int
{
2024-11-13 09:00:26 +00:00
_groupConsoleUI.RemoveGroup(groupIdForDeleteStr);
2024-11-11 09:07:11 +00:00
}
else
{
Console.WriteLine("Неверный формат ID группы");
}
break;
case "8":
Console.Write("Введите ID группы для изменения: ");
if (int.TryParse(Console.ReadLine(), out int groupIdToUpdate))
{
Console.Write("Введите новое название группы: ");
string newName = Console.ReadLine();
_groupConsoleUI.UpdateGroupName(groupIdToUpdate, newName);
}
else
{
Console.WriteLine("Неверный формат ID группы");
}
break;
case "9":
Console.Write("Введите ID группы для поиска: ");
if (int.TryParse(Console.ReadLine(), out int idGroupToFind))
{
_groupConsoleUI.FindGroupById(idGroupToFind);
}
else
{
Console.WriteLine("Неверный формат ID группы");
}
break;
case "10":
Console.Write("Введите номер первого занятия: ");
int firstLesson = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
int lastLesson = int.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int groupIdForPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.GeneratePresenceForDay(DateTime.Now, groupIdForPresence, firstLesson, lastLesson);
break;
case "11":
Console.Write("Введите номер первого занятия: ");
int firstLessonForWeek = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
int lastLessonForWeek = int.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int groupIdForWeekPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.GeneratePresenceForWeek(DateTime.Now, groupIdForWeekPresence, firstLessonForWeek, lastLessonForWeek);
break;
case "12":
Console.Write("Введите дату (гггг-мм-дд): ");
DateTime date = DateTime.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int groupForPresenceView = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayPresence(date, groupForPresenceView);
break;
case "13":
2024-11-15 08:04:29 +00:00
Console.Write("Введите GUID пользователя: ");
string userGuidInput = Console.ReadLine();
Guid newUserGuid;
// Проверка на корректность GUID
if (!Guid.TryParse(userGuidInput, out newUserGuid))
{
Console.WriteLine("Ошибка: введён некорректный GUID.");
break;
}
2024-11-11 09:07:11 +00:00
Console.Write("Введите номер первого занятия: ");
int firstAbsLesson = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
int lastAbsLesson = int.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int absGroupId = int.Parse(Console.ReadLine());
2024-11-15 08:04:29 +00:00
// Проверка существования группы и пользователя
_presenceConsoleUI.MarkUserAsAbsent(DateTime.Now, absGroupId, newUserGuid, firstAbsLesson, lastAbsLesson);
2024-11-11 09:07:11 +00:00
break;
2024-11-14 11:46:38 +00:00
2024-11-11 09:07:11 +00:00
case "14":
Console.Write("Введите ID группы: ");
int groupIdForAllPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayAllPresenceByGroup(groupIdForAllPresence);
break;
case "15":
_presenceConsoleUI.ExportAttendanceToExcel();
break;
case "16":
Console.Write("Введите ID группы: ");
int searchGroupId = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayGeneralPresenceForGroup(searchGroupId);
break;
case "0":
Console.WriteLine("Выход...");
return;
default:
Console.WriteLine("Неверный выбор, попробуйте снова.");
break;
}
Console.WriteLine();
}
}
}
}