Vizual_Zurnal/Zurnal/ui/MainMenu.cs
2024-12-06 10:26:58 +03:00

234 lines
12 KiB
C#
Raw Permalink 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.UseCase;
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.Write("\nВыберите команду(Help - справка по командам)~> ");
string command = Console.ReadLine();
switch (command)
{
case "Help":
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\n\nМанипуляции с пользователем:");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("SMe User - Показать список всех пользователей; \nDrop User - Удалить пользователя по его Guid;");
Console.WriteLine("Update User - Обновить данные пользователя по Guid; \nFind User - Найти пользователя по его Guid;");
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Манипуляции с групами:");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("SMe Group - Показать список всех групп; \nCr Group - Создать новую группу");
Console.WriteLine("Drop Group - Удалить группу по ID; \nRN Group - Изменить название существующей группы; \nFind Group - Найти группу по ее ID;");
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Манипуляции с Посещаемостью:");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Gen day-pres - Сгенерировать посещаемость на текущий день; \nGen weak-pres - Сгенерировать посещаемость на текущую неделю;");
Console.WriteLine("SMe pres - Показать посещаемость всех пользователей; \nMAM - Отметить пользователя как отсутствующего;");
Console.WriteLine("SMe pres ForId - Вывести посещаемость группы по ID; \nToXl - Создать Excel файл; \nInfo pres - Информация о посещаемости;");
Console.WriteLine("\n\n");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Exit - Выход из программы;");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
break;
case "SMe User":
_userConsoleUI.DisplayAllUsers();
break;
case "Drop User":
Console.Write("Введите Guid пользователя для удаления: ");
if (Guid.TryParse(Console.ReadLine(), out Guid userGuid))
{
_userConsoleUI.RemoveUserByGuid(userGuid);
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "Update User":
Console.Write("Введите Guid для обновления: ");
if (Guid.TryParse(Console.ReadLine(), out Guid updateUserGuid))
{
_userConsoleUI.UpdateUserByGuid(updateUserGuid);
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "Find User":
Console.Write("Введите Guid для поиска: ");
if (Guid.TryParse(Console.ReadLine(), out Guid findUserGuid))
{
_userConsoleUI.FindUserByGuid(findUserGuid);
}
else
{
Console.WriteLine("Неверный формат Guid");
}
break;
case "SMe Group":
_groupConsoleUI.DisplayAllGroups();
break;
case "Cr Group":
Console.Write("Введите название новой группы: ");
string newGroupName = Console.ReadLine();
_groupConsoleUI.AddGroup(newGroupName);
break;
case "Drop Group":
Console.Write("Введите ID группы для удаления: ");
string groupIdForDeleteStr = Console.ReadLine();
if (!string.IsNullOrWhiteSpace(groupIdForDeleteStr) && int.TryParse(groupIdForDeleteStr, out int groupIdForDelete))
{
_groupConsoleUI.RemoveGroup(groupIdForDeleteStr);
}
else
{
Console.WriteLine("Неверный формат ID группы");
}
break;
case "RN Group":
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 "Find Group":
Console.Write("Введите ID группы для поиска: ");
if (int.TryParse(Console.ReadLine(), out int idGroupToFind))
{
_groupConsoleUI.FindGroupById(idGroupToFind);
}
else
{
Console.WriteLine("Неверный формат ID группы");
}
break;
case "Gen day-pres":
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 "Gen weak-pres":
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 "SMe pres":
Console.Write("Введите дату (гггг-мм-дд): ");
DateTime date = DateTime.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int groupForPresenceView = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayPresence(date, groupForPresenceView);
break;
case "MAM":
Console.Write("Введите GUID пользователя: ");
string userGuidInput = Console.ReadLine();
Guid newUserGuid;
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.MarkUserAsMissing(DateTime.Now, absGroupId, newUserGuid, firstAbsLesson, lastAbsLesson);
break;
case "SMe pres ForId":
Console.Write("Введите ID группы: ");
int groupIdForAllPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayAllPresenceByGroup(groupIdForAllPresence);
break;
case "ToXl":
_presenceConsoleUI.ExportAttendanceToExcel();
break;
case "Info pres":
Console.Write("Введите ID группы: ");
int searchGroupId = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayGeneralPresenceForGroup(searchGroupId);
break;
case "Exit":
Console.WriteLine("Выход...");
return;
case "exit":
Console.WriteLine("Выход...");
return;
default:
Console.WriteLine("Нет такой команды. Давай по новой");
break;
}
Console.WriteLine();
}
}
}
}