NewPresence/ui/MainConsoleUI.cs
2025-04-29 15:33:18 +03:00

250 lines
9.7 KiB
C#
Raw Permalink 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 System;
using System.Globalization;
using domain.UseCase;
using ui;
namespace ui
{
public class MainMenuUI
{
private readonly UserConsoleUI _userConsoleUI;
private readonly GroupConsoleUI _groupConsoleUI;
private readonly PresenceConsoleUI _presenceConsoleUI;
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, PresenceUseCase presenceUseCase)
{
_userConsoleUI = new UserConsoleUI(userUseCase, groupUseCase);
_groupConsoleUI = new GroupConsoleUI(userUseCase, groupUseCase);
_presenceConsoleUI = new PresenceConsoleUI(presenceUseCase);
}
public void Start()
{
while (true)
{
ShowNavigation();
string choice = Console.ReadLine();
Console.WriteLine();
switch (choice)
{
case "1":
_userConsoleUI.ShowAllUsers();
break;
case "2":
HandleMemberRemoval();
break;
case "3":
HandleMemberUpdate();
break;
case "4":
SearchMember();
break;
case "5":
_groupConsoleUI.ShowAllGroups();
break;
case "6":
CreateNewGroup();
break;
case "7":
ModifyGroupName();
break;
case "8":
FindGroup();
break;
case "9":
CreateDailyAttendance();
break;
case "10":
CreateWeeklyAttendance();
break;
case "11":
ViewAttendanceRecords();
break;
case "12":
RecordAbsence();
break;
/*case "13":
ShowGroupAttendanceHistory();
break;
case "14":
DisplayAttendanceSummary();
break;
case "15":
GenerateExcelReport();
break;*/
case "0":
Console.WriteLine("Завершение работы...");
return;
default:
Console.WriteLine("Некорректный ввод, повторите попытку.");
break;
}
Console.WriteLine();
}
}
private void ShowNavigation()
{
Console.WriteLine("\n=== Управление системой ===\n");
Console.WriteLine("Управление участниками:");
Console.WriteLine("1. Список всех участников");
Console.WriteLine("2. Удалить участника");
Console.WriteLine("3. Обновить данные участника");
Console.WriteLine("4. Найти участника\n");
Console.WriteLine("Управление группами:");
Console.WriteLine("5. Показать все группы");
Console.WriteLine("6. Создать новую группу");
Console.WriteLine("7. Переименовать группу");
Console.WriteLine("8. Найти группу\n");
Console.WriteLine("Управление посещаемостью:");
Console.WriteLine("9. Создать записи за день");
Console.WriteLine("10. Создать записи за неделю");
Console.WriteLine("11. Просмотр посещаемости");
Console.WriteLine("12. Зарегистрировать отсутствие");
Console.WriteLine("13. История посещаемости группы");
Console.WriteLine("14. Статистика посещаемости");
Console.WriteLine("15. Экспорт в Excel\n");
Console.Write("Выберите действие: ");
}
private int GetValidNumberInput(string prompt)
{
int result;
Console.Write(prompt);
while (!int.TryParse(Console.ReadLine(), out result))
{
Console.WriteLine("Ошибка формата ввода. Повторите попытку.");
Console.Write(prompt);
}
return result;
}
private DateTime GetValidDateInput(string prompt)
{
DateTime date;
Console.Write(prompt);
while (!DateTime.TryParseExact(Console.ReadLine(), "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
Console.WriteLine("Некорректный формат даты. Используйте дд.мм.гггг");
Console.Write(prompt);
}
return date;
}
private void HandleMemberRemoval()
{
int userId = GetValidNumberInput("Введите id студента: ");
_userConsoleUI.RemoveUserByUserId(userId);
}
private void HandleMemberUpdate()
{
int userId = GetValidNumberInput("Введите идентификатор участника: ");
_userConsoleUI.UpdateUserByUserId(userId);
}
private void SearchMember()
{
int userId = GetValidNumberInput("Введите идентификатор участника: ");
_userConsoleUI.FindUserByUserId(userId);
}
private void CreateNewGroup()
{
Console.Write("Введите название группы: ");
var groupName = Console.ReadLine();
_groupConsoleUI.AddGroup(groupName);
Console.WriteLine($"\nГруппа {groupName} успешно добавлена");
}
private void ModifyGroupName()
{
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
Console.Write("Введите новое название: ");
_groupConsoleUI.UpdateGroup(groupId, Console.ReadLine());
}
private void FindGroup()
{
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
_groupConsoleUI.GetGroupById(groupId);
}
private void CreateDailyAttendance()
{
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
int firstLesson = GetValidNumberInput("Начальный номер занятия: ");
int lastLesson = GetValidNumberInput("Конечный номер занятия: ");
_presenceConsoleUI.GeneratePresenceForDay(firstLesson, lastLesson, groupId);
Console.WriteLine("Записи за день созданы успешно.");
}
private void CreateWeeklyAttendance()
{
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
int firstLesson = GetValidNumberInput("Начальный номер занятия: ");
int lastLesson = GetValidNumberInput("Конечный номер занятия: ");
_presenceConsoleUI.GeneratePresenceForWeek(firstLesson, lastLesson, groupId);
Console.WriteLine("Записи за неделю созданы успешно.");
}
private void ViewAttendanceRecords()
{
DateTime date = GetValidDateInput("Введите дату (дд.мм.гггг): ");
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
_presenceConsoleUI.ShowPresenceForDateAndGroup(DateOnly.FromDateTime(date), groupId);
}
private void RecordAbsence()
{
DateTime date = GetValidDateInput("Введите дату отсутствия (дд.мм.гггг): ");
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
int userId = GetValidNumberInput("Введите идентификатор участника: ");
int startSession = GetValidNumberInput("Начальный номер занятия: ");
int endSession = GetValidNumberInput("Конечный номер занятия: ");
_presenceConsoleUI.MarkUserAbsent(DateOnly.FromDateTime(date), groupId, userId, startSession, endSession);
}
/*private void ShowGroupAttendanceHistory()
{
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
_presenceConsoleUI.DisplayAllPresenceByGroup(groupId);
}
private void DisplayAttendanceSummary()
{
int groupId = GetValidNumberInput("Введите идентификатор группы: ");
_presenceConsoleUI.DisplayGeneralPresence(groupId);
}
private void GenerateExcelReport()
{
_presenceConsoleUI.ExportAttendanceToExcel();
Console.WriteLine("Отчёт успешно экспортирован.");
}*/
}
}