234 lines
12 KiB
C#
234 lines
12 KiB
C#
|
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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|