230 lines
11 KiB
C#
230 lines
11 KiB
C#
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)
|
||
{
|
||
_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("Введите пользователя: ");
|
||
userGuid = Guid.Parse(Console.ReadLine());
|
||
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, userGuid, firstAbsLesson, lastAbsLesson);
|
||
Console.WriteLine("Пользователь отмечен как отсутствующий.");
|
||
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();
|
||
}
|
||
}
|
||
}
|
||
}
|