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
|
|
|
|
}
|