2024-11-08 16:52:52 +00:00
|
|
|
|
using Demo.domain.Models;
|
|
|
|
|
using Demo.Domain.UseCase;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
|
|
|
|
|
namespace Demo.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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void DisplayMenu()
|
|
|
|
|
{
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("\n=-= Главное меню =-=\n");
|
|
|
|
|
|
2024-11-14 07:53:42 +00:00
|
|
|
|
// Меню команд
|
2024-11-08 16:52:52 +00:00
|
|
|
|
Console.WriteLine("=-= Команды с Пользователями =-=");
|
|
|
|
|
Console.WriteLine("1. Вывести всех пользователей");
|
|
|
|
|
Console.WriteLine("2. Удалить пользователя по id");
|
|
|
|
|
Console.WriteLine("3. Обновить пользователя по id");
|
|
|
|
|
Console.WriteLine("4. Найти пользователя по id");
|
|
|
|
|
Console.WriteLine();
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("=-= Команды с Группами =-=");
|
|
|
|
|
Console.WriteLine("5. Вывести все группы");
|
|
|
|
|
Console.WriteLine("6. Добавить группу");
|
|
|
|
|
Console.WriteLine("7. Изменить название группы");
|
|
|
|
|
Console.WriteLine("8. Поиск группы по ID");
|
|
|
|
|
Console.WriteLine();
|
2024-11-14 07:53:42 +00:00
|
|
|
|
|
2024-11-08 16:52:52 +00:00
|
|
|
|
Console.WriteLine("=-= Команды Presence =-=");
|
|
|
|
|
Console.WriteLine("9. Сгенерировать посещаемость на день");
|
|
|
|
|
Console.WriteLine("10. Сгенерировать посещаемость на неделю");
|
|
|
|
|
Console.WriteLine("11. Показать посещаемость");
|
|
|
|
|
Console.WriteLine("12. Отметить пользователя как отсутствующего");
|
|
|
|
|
Console.WriteLine("13. Вывести всю посещаемость группы");
|
|
|
|
|
Console.WriteLine("14. Вывести общую информацию об посещаемости по группе");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("15. Вывести отчёт в Excel");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
Console.WriteLine();
|
|
|
|
|
Console.WriteLine("0. Выход");
|
|
|
|
|
|
|
|
|
|
Console.Write("\nВаш выбор: ");
|
|
|
|
|
string comand = Console.ReadLine();
|
|
|
|
|
Console.WriteLine();
|
|
|
|
|
|
|
|
|
|
switch (comand)
|
|
|
|
|
{
|
|
|
|
|
case "1":
|
|
|
|
|
_userConsoleUI.DisplayAllUsers();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "2":
|
|
|
|
|
Console.Write("Введите ID пользователя для удаления: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int userId))
|
2024-11-08 16:52:52 +00:00
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.RemoveUserById(userId);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("Неверный формат ID. Введите целое число.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "3":
|
|
|
|
|
Console.Write("Введите ID пользователя для обновления: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int updateUserId))
|
2024-11-08 16:52:52 +00:00
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.UpdateUserById(updateUserId);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("Неверный формат ID. Введите целое число.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "4":
|
|
|
|
|
Console.Write("Введите ID пользователя для поиска: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int findUserId))
|
2024-11-08 16:52:52 +00:00
|
|
|
|
{
|
|
|
|
|
_userConsoleUI.FindUserById(findUserId);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("Неверный формат ID. Введите целое число.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "5":
|
|
|
|
|
_groupConsoleUI.DisplayAllGroups();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "6":
|
|
|
|
|
Console.Write("Введите название новой группы: ");
|
|
|
|
|
string newGroupName = Console.ReadLine();
|
|
|
|
|
_groupConsoleUI.AddGroup(newGroupName);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "7":
|
|
|
|
|
Console.Write("Введите ID группы для изменения: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupId))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите новое название группы: ");
|
|
|
|
|
string newName = Console.ReadLine();
|
|
|
|
|
_groupConsoleUI.UpdateGroupName(groupId, newName);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "8":
|
|
|
|
|
Console.Write("Введите ID группы для поиска : ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int IdGroup))
|
|
|
|
|
{
|
|
|
|
|
_groupConsoleUI.FindGroupById(IdGroup);
|
|
|
|
|
}
|
2024-11-14 07:53:42 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
|
|
|
|
}
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "9":
|
|
|
|
|
Console.Write("Введите номер первого занятия: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int firstLesson))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите номер последнего занятия: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int lastLesson))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupIdForPresence))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.GeneratePresenceForDay(DateTime.Now, groupIdForPresence, firstLesson, lastLesson);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат номера занятия. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат номера занятия. Введите целое число.");
|
|
|
|
|
}
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "10":
|
|
|
|
|
Console.Write("Введите номер первого занятия: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int firstLessonForWeek))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите номер последнего занятия: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int lastLessonForWeek))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupIdForWeekPresence))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.GeneratePresenceForWeek(DateTime.Now, groupIdForWeekPresence, firstLessonForWeek, lastLessonForWeek);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат номера занятия. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат номера занятия. Введите целое число.");
|
|
|
|
|
}
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "11":
|
|
|
|
|
Console.Write("Введите дату (гггг-мм-дд): ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (DateTime.TryParse(Console.ReadLine(), out DateTime date))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupForPresenceView))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.DisplayPresence(date, groupForPresenceView);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат даты. Введите дату в формате гггг-мм-дд.");
|
|
|
|
|
}
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "12":
|
|
|
|
|
Console.Write("Введите ID пользователя: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out userId))
|
2024-11-08 16:52:52 +00:00
|
|
|
|
{
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.Write("Введите номер первого занятия: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int firstAbsLesson))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите номер последнего занятия: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int lastAbsLesson))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int absGroupId))
|
|
|
|
|
{
|
|
|
|
|
Console.Write("Введите дату (дд.мм.гггг): ");
|
|
|
|
|
string dateInput = Console.ReadLine();
|
|
|
|
|
if (DateTime.TryParseExact(dateInput, "d.M.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime absenceDate))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.MarkUserAbsent(absenceDate, absGroupId, userId, firstAbsLesson, lastAbsLesson);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат даты. Пожалуйста, используйте формат дд.мм.гггг.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат номера последнего занятия. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат номера первого занятия. Введите целое число.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID пользователя. Введите целое число.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
}
|
|
|
|
|
break;
|
2024-11-14 07:53:42 +00:00
|
|
|
|
|
2024-11-08 16:52:52 +00:00
|
|
|
|
case "13":
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupIdForAllPresence))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.DisplayAllPresenceByGroup(groupIdForAllPresence);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
|
|
|
|
}
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case "14":
|
|
|
|
|
Console.Write("Введите ID группы: ");
|
2024-11-14 07:53:42 +00:00
|
|
|
|
if (int.TryParse(Console.ReadLine(), out int groupIdForGeneralPresence))
|
|
|
|
|
{
|
|
|
|
|
_presenceConsoleUI.DisplayGeneralPresence(groupIdForGeneralPresence);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Неверный формат ID группы. Введите целое число.");
|
|
|
|
|
}
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
2024-11-14 07:53:42 +00:00
|
|
|
|
|
2024-11-08 16:52:52 +00:00
|
|
|
|
case "15":
|
|
|
|
|
_presenceConsoleUI.ExportAttendanceToExcel();
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("Отчёт в Excel успешно создан.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
2024-11-14 07:53:42 +00:00
|
|
|
|
|
2024-11-08 16:52:52 +00:00
|
|
|
|
case "0":
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("Завершение работы.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
default:
|
2024-11-14 07:53:42 +00:00
|
|
|
|
Console.WriteLine("Неизвестная команда. Пожалуйста, введите номер команды из списка.");
|
2024-11-08 16:52:52 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-14 07:53:42 +00:00
|
|
|
|
}
|