xxxproject/Demo/UI/MainMenu.cs
Class_Student 6b9b5a424f init
2024-10-30 12:11:19 +03:00

199 lines
9.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Demo.domain.Models;
using Demo.Domain.UseCase;
using System;
namespace Demo.UI
{
public class MainMenuUI
{
private UserConsoleUI _userConsoleUI;
private GroupConsoleUI _groupConsoleUI;
private UseCasePresence _presenceUseCase;
private PresenceConsoleUI _presenceConsoleUI;
public MainMenuUI(UserConsoleUI userConsoleUI, GroupConsoleUI groupConsoleUI, PresenceConsoleUI presenceConsoleUI)
{
_userConsoleUI = userConsoleUI;
_groupConsoleUI = groupConsoleUI;
_presenceConsoleUI = presenceConsoleUI;
}
public void DisplayMenu()
{
while (true)
{
Console.WriteLine("Выберите действие:");
Console.WriteLine("1 - Вывести всех пользователей");
Console.WriteLine("2 - Удалить пользователя по GUID");
Console.WriteLine("3 - Обновить пользователя по GUID");
Console.WriteLine("4 - Вывести все группы");
Console.WriteLine("5 - Найти пользователя по GUID");
Console.WriteLine("6 - Добавить группу");
Console.WriteLine("7 - Обновить группу по ID");
Console.WriteLine("8 - Удалить группу по ID");
Console.WriteLine("9 - Вывести посещаемость по группе");
Console.WriteLine("10 - Вывести посещаемость по группе и дате");
Console.WriteLine("11 - Отметить пользователя как отсутствующего");
Console.WriteLine("12 - Генерация расписания по диапозону");
Console.WriteLine("13 - Генерация расписания по диапозону на неделю");
Console.WriteLine("0 - Выход");
var input = Console.ReadLine();
switch (input)
{
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 }
};
_userConsoleUI.UpdateUser(updateGuid, 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;
case "8":
Console.WriteLine("Введите ID группы для удаления:");
if (int.TryParse(Console.ReadLine(), out int groupId))
{
_groupConsoleUI.RemoveGroupById(groupId);
}
else
{
Console.WriteLine("Некорректный ID группы.");
}
break;
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":
Console.WriteLine("Введите GUID пользователя для отметки отсутствия:");
if (Guid.TryParse(Console.ReadLine(), out var absenceUserGuid))
{
Console.WriteLine("Введите дату (в формате ГГГГ-ММ-ДД):");
if (DateOnly.TryParse(Console.ReadLine(), out var absenceDate))
{
Console.WriteLine("Введите диапазон уроков (например, 2-4):");
var lessonRange = Console.ReadLine().Split('-');
if (lessonRange.Length == 2 &&
int.TryParse(lessonRange[0], out var startLesson) &&
int.TryParse(lessonRange[1], out var endLesson))
{
// Вызов метода для отметки отсутствия
_presenceConsoleUI.MarkUserAsAbsent(absenceUserGuid, absenceDate, startLesson, endLesson);
}
else
{
Console.WriteLine("Некорректный диапазон уроков.");
}
}
else
{
Console.WriteLine("Некорректная дата.");
}
}
else
{
Console.WriteLine("Некорректный GUID.");
}
break;
case "12":
_presenceConsoleUI.GenerateDailySchedule();
break;
case "13":
_presenceConsoleUI.GenerateWeeklySchedule();
break;
case "0":
return;
default:
Console.WriteLine("Некорректный выбор. Попробуйте снова.");
break;
}
}
}
}
}