slarny4/Demo1/UI/MainMenu.cs

107 lines
4.7 KiB
C#
Raw Normal View History

2024-10-24 08:50:32 +00:00
using AttendanceApp.Domain.UseCases;
using AttendanceApp.Data.Repository;
using Demo1;
namespace AttendanceApp.UI
2024-10-21 22:57:01 +00:00
{
2024-10-24 08:50:32 +00:00
public class MainMenu
2024-10-21 22:57:01 +00:00
{
2024-10-24 08:50:32 +00:00
private readonly UserConsole _userConsole;
private readonly GroupConsole _groupConsole;
private readonly PresenceConsole _presenceConsole;
public MainMenu()
2024-10-21 22:57:01 +00:00
{
2024-10-24 08:50:32 +00:00
// Инициализация репозиториев и use cases
var userRepository = new UserRepositoryImpl();
var groupRepository = new GroupRepositoryImpl();
var presenceRepository = new PresenceRepositoryImpl();
var userUseCase = new UserUseCase(userRepository);
var groupUseCase = new GroupUseCase(groupRepository);
var generatePresenceUseCase = new UseCaseGeneratePresence(presenceRepository, userRepository, groupRepository);
_userConsole = new UserConsole(userUseCase);
_groupConsole = new GroupConsole(groupUseCase);
_presenceConsole = new PresenceConsole(generatePresenceUseCase, presenceRepository, groupRepository);
}
public void Show()
{
while (true)
{
Console.Clear();
Console.WriteLine("=== Меню ===");
Console.WriteLine("1. Показать всех пользователей");
Console.WriteLine("2. Удалить пользователя по GUID");
Console.WriteLine("3. Обновить пользователя");
Console.WriteLine("4. Найти пользователя по GUID");
Console.WriteLine("5. Показать все группы");
Console.WriteLine("6. Добавить группу");
Console.WriteLine("7. Обновить группу");
Console.WriteLine("8. Удалить группу по ID");
Console.WriteLine("9. Найти группу по ID");
Console.WriteLine("10. Генерация посещаемости на текущий день");
Console.WriteLine("11. Генерация посещаемости на неделю");
Console.WriteLine("12. Показать посещаемость по группе и дате");
Console.WriteLine("13. Отметить пользователя как отсутствующего");
Console.WriteLine("14. Показать посещаемость по группе");
Console.WriteLine("0. Выход");
Console.Write("Выберите опцию: ");
var input = Console.ReadLine();
switch (input)
{
case "1":
_userConsole.ShowAllUsers();
break;
case "2":
_userConsole.DeleteUser();
break;
case "3":
_userConsole.UpdateUser();
break;
case "4":
_userConsole.FindUserById();
break;
case "5":
_groupConsole.ShowAllGroups();
break;
case "6":
_groupConsole.AddGroup();
break;
case "7":
_groupConsole.UpdateGroup();
break;
case "8":
_groupConsole.DeleteGroup();
break;
case "9":
_groupConsole.FindGroupById();
break;
case "10":
_presenceConsole.GenerateDailyPresence();
break;
case "11":
_presenceConsole.GenerateWeeklyPresence();
break;
case "12":
_presenceConsole.ShowPresenceByGroupAndDate();
break;
case "13":
_presenceConsole.MarkUserAbsent();
break;
case "14":
_presenceConsole.ShowPresenceByGroup();
break;
case "0":
return;
default:
Console.WriteLine("Неверная опция. Нажмите любую клавишу для продолжения...");
Console.ReadKey();
break;
}
}
2024-10-21 22:57:01 +00:00
}
}
2024-10-24 08:50:32 +00:00
}