presence/ui/MainMenu.cs
2024-11-15 11:04:29 +03:00

239 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using data.Repository;
using domain.Models;
using domain.UseCase;
using System;
using ui.ui;
namespace ui
{
public class MainMenuUI
{
private readonly UserConsoleUI _userConsoleUI;
private readonly GroupConsoleUI _groupConsoleUI;
private readonly PresenceConsole _presenceConsoleUI;
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase, IPresenceRepository presenceRepository)
{
_userConsoleUI = new UserConsoleUI(userUseCase);
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
_presenceConsoleUI = new PresenceConsole(presenceUseCase,presenceRepository);
}
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))
{
_userConsoleUI.RemoveUserByGuid(userGuid);
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "3":
Console.Write("Введите Guid пользователя для обновления: ");
if (Guid.TryParse(Console.ReadLine(), out Guid updateUserGuid))
{
_userConsoleUI.UpdateUserByGuid(updateUserGuid);
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "4":
Console.Write("Введите Guid пользователя для поиска: ");
if (Guid.TryParse(Console.ReadLine(), out Guid findUserGuid))
{
_userConsoleUI.FindUserByGuid(findUserGuid);
}
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 группы для удаления: ");
string groupIdForDeleteStr = Console.ReadLine();
if (!string.IsNullOrWhiteSpace(groupIdForDeleteStr) && int.TryParse(groupIdForDeleteStr, out int groupIdForDelete)) // Проверяем, что строка не пустая и может быть преобразована в int
{
_groupConsoleUI.RemoveGroup(groupIdForDeleteStr);
}
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":
Console.Write("Введите GUID пользователя: ");
string userGuidInput = Console.ReadLine();
Guid newUserGuid;
// Проверка на корректность GUID
if (!Guid.TryParse(userGuidInput, out newUserGuid))
{
Console.WriteLine("Ошибка: введён некорректный GUID.");
break;
}
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());
// Проверка существования группы и пользователя
_presenceConsoleUI.MarkUserAsAbsent(DateTime.Now, absGroupId, newUserGuid, firstAbsLesson, lastAbsLesson);
break;
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();
}
}
}
}