xxxproject/Demo/UI/MainMenu.cs

169 lines
7.9 KiB
C#
Raw Normal View History

2024-10-18 09:51:43 +00:00
using Demo.domain.Models;
using Demo.Domain.UseCase;
2024-10-14 12:10:53 +00:00
using System;
namespace Demo.UI
{
public class MainMenuUI
2024-10-23 09:42:17 +00:00
{
private UserConsoleUI _userConsoleUI;
private GroupConsoleUI _groupConsoleUI;
private UseCasePresence _presenceUseCase;
private PresenceConsoleUI _presenceConsoleUI;
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCasePresence presenceUseCase)
2024-10-14 12:10:53 +00:00
{
2024-10-23 09:42:17 +00:00
_userConsoleUI = new UserConsoleUI(userUseCase);
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
_presenceUseCase = presenceUseCase;
_presenceConsoleUI = new PresenceConsoleUI(presenceUseCase);
DisplayMenu();
}
2024-10-14 12:10:53 +00:00
2024-10-16 07:01:04 +00:00
2024-10-18 09:51:43 +00:00
private void DisplayMenu()
{
2024-10-16 07:01:04 +00:00
while (true)
{
2024-10-18 09:51:43 +00:00
Console.WriteLine("Выберите действие:");
Console.WriteLine("1 - Вывести всех пользователей");
Console.WriteLine("2 - Удалить пользователя по GUID");
Console.WriteLine("3 - Обновить пользователя по GUID");
Console.WriteLine("4 - Вывести все группы");
Console.WriteLine("5 - Найти пользователя по GUID");
Console.WriteLine("6 - Добавить группу");
2024-10-21 12:42:07 +00:00
Console.WriteLine("7 - Обновить группу по ID");
Console.WriteLine("8 - Удалить группу по ID");
2024-10-23 09:42:17 +00:00
Console.WriteLine("9 - Вывести посещаемость по группе");
Console.WriteLine("10 - Вывести посещаемость по группе и дате");
Console.WriteLine("11 - Отметить пользователя как отсутствующего");
Console.WriteLine("12 - Генерация расписания по диапозону");
2024-10-18 09:51:43 +00:00
Console.WriteLine("0 - Выход");
var input = Console.ReadLine();
switch (input)
2024-10-16 07:01:04 +00:00
{
2024-10-18 09:51:43 +00:00
case "1":
_userConsoleUI.DisplayAllUsers();
break;
case "2":
Console.WriteLine("Введите GUID пользователя для удаления:");
if (Guid.TryParse(Console.ReadLine(), out var userGuid))
{
_userConsoleUI.RemoveUserByGuid(userGuid);
}
break;
case "3":
Console.WriteLine("Введите GUID пользователя для обновления:");
if (Guid.TryParse(Console.ReadLine(), out Guid updateGuid))
{
Console.WriteLine("Введите новое имя пользователя:");
string newFio = Console.ReadLine();
Console.WriteLine("Введите новый ID группы:");
if (int.TryParse(Console.ReadLine(), out int newGroupId))
{
Console.WriteLine("Введите название группы:");
string newGroupName = Console.ReadLine();
var updatedUser = new User
{
Guid = updateGuid,
FIO = newFio,
Group = new Group { Id = newGroupId, Name = newGroupName }
};
2024-10-16 07:01:04 +00:00
2024-10-18 09:51:43 +00:00
_userConsoleUI.UpdateUser(updatedUser);
}
else
{
Console.WriteLine("Некорректный ID группы.");
}
}
else
{
Console.WriteLine("Некорректный GUID.");
}
break;
case "4":
_groupConsoleUI.DisplayAllGroups();
break;
case "5":
Console.WriteLine("Введите GUID пользователя для поиска:");
if (Guid.TryParse(Console.ReadLine(), out var findUserGuid))
{
_userConsoleUI.FindUserByGuid(findUserGuid);
}
else
{
Console.WriteLine("Некорректный GUID.");
}
break;
case "6":
_groupConsoleUI.AddGroup();
break;
case "7":
_groupConsoleUI.UpdateGroupName();
break;
2024-10-21 12:42:07 +00:00
case "8":
Console.WriteLine("Введите ID группы для удаления:");
if (int.TryParse(Console.ReadLine(), out int groupId))
{
_groupConsoleUI.RemoveGroupById(groupId);
}
else
{
Console.WriteLine("Некорректный ID группы.");
}
break;
2024-10-23 09:42:17 +00:00
case "9":
Console.WriteLine("Введите ID группы для отображения посещаемости:");
string inputGroupId = Console.ReadLine();
if (int.TryParse(inputGroupId, out int parsedGroupId))
{
_presenceConsoleUI.DisplayPresencesByGroupId(parsedGroupId);
}
else
{
Console.WriteLine("Некорректный ID группы.");
}
break;
case "10":
Console.WriteLine("Введите ID группы для отображения посещаемости:");
inputGroupId = Console.ReadLine();
if (int.TryParse(inputGroupId, out parsedGroupId))
{
Console.WriteLine("Введите дату (yyyy-MM-dd):");
string inputDate = Console.ReadLine();
if (DateOnly.TryParse(inputDate, out DateOnly parsedDate))
{
_presenceConsoleUI.DisplayPresencesByGroupIdAndDate(parsedGroupId, parsedDate);
}
else
{
Console.WriteLine("Некорректная дата.");
}
}
else
{
Console.WriteLine("Некорректный ID группы.");
}
break;
case "11":
_presenceConsoleUI.MarkUserAsAbsent();
break;
case "12":
_presenceConsoleUI.GenerateDailySchedule();
break;
2024-10-18 09:51:43 +00:00
case "0":
2024-10-21 12:42:07 +00:00
return;
2024-10-18 09:51:43 +00:00
default:
Console.WriteLine("Некорректный выбор. Попробуйте снова.");
2024-10-16 07:01:04 +00:00
break;
}
}
2024-10-14 12:10:53 +00:00
}
}
}