Vizual_Zurnal/Zurnal/ui/MainMenu.cs

234 lines
12 KiB
C#
Raw Normal View History

2024-12-06 07:26:58 +00:00
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();
}
}
}
}