2024-11-06 09:07:50 +00:00
using Demo.Data.Repository ;
using Demo.domain.Models ;
2024-11-01 07:40:53 +00:00
using Demo.Domain.UseCase ;
using System ;
namespace Demo.UI
{
public class MainMenuUI
{
private readonly UserConsoleUI _userConsoleUI ;
private readonly GroupConsoleUI _groupConsoleUI ;
private readonly PresenceConsole _presenceConsoleUI ;
2024-11-06 09:07:50 +00:00
public MainMenuUI ( UserUseCase userUseCase , GroupUseCase groupUseCase , UseCaseGeneratePresence presenceUseCase , IPresenceRepository presenceRepository )
2024-11-01 07:40:53 +00:00
{
_userConsoleUI = new UserConsoleUI ( userUseCase ) ;
_groupConsoleUI = new GroupConsoleUI ( groupUseCase ) ;
2024-11-06 09:07:50 +00:00
_presenceConsoleUI = new PresenceConsole ( presenceUseCase , presenceRepository ) ; // Передаем presenceRepository
2024-11-01 07:40:53 +00:00
}
public void DisplayMenu ( )
{
while ( true )
{
Console . WriteLine ( "\n==================== Главная Панель ====================\n" ) ;
Console . WriteLine ( "~~~~~~~~~~~~~~~ УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ ~~~~~~~~~~~~~~~" ) ;
Console . WriteLine ( "1. Показать список всех пользователей" ) ;
Console . WriteLine ( "2. Удалить пользователя по е г о ID" ) ;
Console . WriteLine ( "3. Обновить данные пользователя по ID" ) ;
Console . WriteLine ( "4. Найти пользователя по е г о ID" ) ;
Console . WriteLine ( ) ;
Console . WriteLine ( "~~~~~~~~~~~~~~~ УПРАВЛЕНИЕ ГРУППАМИ ~~~~~~~~~~~~~~~" ) ;
Console . WriteLine ( "5. Показать список всех групп" ) ;
Console . WriteLine ( "6. Создать новую группу" ) ;
Console . WriteLine ( "7. Удалить группу по ID" ) ;
Console . WriteLine ( "8. Изменить название существующей группы" ) ;
Console . WriteLine ( "9. Найти группу по е е ID" ) ;
Console . WriteLine ( ) ;
Console . WriteLine ( "~~~~~~~~~~~~~~~ УПРАВЛЕНИЕ ПОСЕЩАЕМОСТЬЮ ~~~~~~~~~~~~~~~" ) ;
Console . WriteLine ( "10. Сгенерировать посещаемость на текущий день" ) ;
Console . WriteLine ( "11. Сгенерировать посещаемость на текущую неделю" ) ;
Console . WriteLine ( "12. Показать посещаемость всех пользователей" ) ;
Console . WriteLine ( "13. Отметить пользователя как отсутствующего" ) ;
Console . WriteLine ( "14. Вывести посещаемость группы по ID" ) ;
2024-11-07 07:35:57 +00:00
Console . WriteLine ( "15. Создать Excel файл" ) ;
2024-11-07 11:46:50 +00:00
Console . WriteLine ( "16. Информация о посещаемости" ) ;
2024-11-01 07:40:53 +00:00
Console . WriteLine ( ) ;
Console . WriteLine ( "========================================================" ) ;
Console . WriteLine ( "0. Выход из программы" ) ;
Console . Write ( "\nВ ыб е р ите команду: " ) ;
string command = Console . ReadLine ( ) ;
Console . WriteLine ( ) ;
switch ( command )
{
case "1" :
_userConsoleUI . DisplayAllUsers ( ) ;
break ;
case "2" :
2024-11-06 09:29:49 +00:00
Console . Write ( "Введите Guid пользователя для удаления: " ) ;
2024-11-01 07:40:53 +00:00
if ( Guid . TryParse ( Console . ReadLine ( ) , out Guid userGuid ) )
{
_userConsoleUI . RemoveUserById ( userGuid ) ;
}
else
{
2024-11-06 09:29:49 +00:00
Console . WriteLine ( "Неверный формат Guid" ) ;
2024-11-01 07:40:53 +00:00
}
break ;
case "3" :
2024-11-06 09:29:49 +00:00
Console . Write ( "Введите Guid пользователя для обновления: " ) ;
2024-11-01 07:40:53 +00:00
if ( Guid . TryParse ( Console . ReadLine ( ) , out Guid updateUserGuid ) )
{
_userConsoleUI . UpdateUserById ( updateUserGuid ) ;
}
else
{
2024-11-06 09:29:49 +00:00
Console . WriteLine ( "Неверный формат Guid" ) ;
2024-11-01 07:40:53 +00:00
}
break ;
case "4" :
2024-11-06 09:29:49 +00:00
Console . Write ( "Введите Guid пользователя для поиска: " ) ;
2024-11-01 07:40:53 +00:00
if ( Guid . TryParse ( Console . ReadLine ( ) , out Guid findUserGuid ) )
{
_userConsoleUI . FindUserById ( findUserGuid ) ;
}
else
{
2024-11-06 09:29:49 +00:00
Console . WriteLine ( "Неверный формат Guid" ) ;
2024-11-01 07:40:53 +00:00
}
break ;
case "5" :
_groupConsoleUI . DisplayAllGroups ( ) ;
break ;
case "6" :
Console . Write ( "Введите название новой группы: " ) ;
string newGroupName = Console . ReadLine ( ) ;
_groupConsoleUI . AddGroup ( newGroupName ) ;
break ;
case "7" :
Console . Write ( "Введите ID группы для удаления: " ) ;
string groupIdForDeleteStr = Console . ReadLine ( ) ; // Считываем ID как строку
if ( ! string . IsNullOrWhiteSpace ( groupIdForDeleteStr ) & & int . TryParse ( groupIdForDeleteStr , out int groupIdForDelete ) ) // Проверяем, что строка не пустая и может быть преобразована в int
{
_groupConsoleUI . RemoveGroup ( groupIdForDeleteStr ) ; // Передаем строку в метод
}
else
{
Console . WriteLine ( "Неверный формат ID группы" ) ;
}
break ;
case "8" :
Console . Write ( "Введите ID группы для изменения: " ) ;
if ( int . TryParse ( Console . ReadLine ( ) , out int groupIdToUpdate ) )
{
Console . Write ( "Введите новое название группы: " ) ;
string newName = Console . ReadLine ( ) ;
_groupConsoleUI . UpdateGroupName ( groupIdToUpdate , newName ) ;
}
else
{
Console . WriteLine ( "Неверный формат ID группы" ) ;
}
break ;
case "9" :
Console . Write ( "Введите ID группы для поиска: " ) ;
if ( int . TryParse ( Console . ReadLine ( ) , out int idGroupToFind ) )
{
_groupConsoleUI . FindGroupById ( idGroupToFind ) ;
}
else
{
Console . WriteLine ( "Неверный формат ID группы" ) ;
}
break ;
case "10" :
Console . Write ( "Введите номер первого занятия: " ) ;
int firstLesson = int . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите номер последнего занятия: " ) ;
int lastLesson = int . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите ID группы: " ) ;
int groupIdForPresence = int . Parse ( Console . ReadLine ( ) ) ;
_presenceConsoleUI . GeneratePresenceForDay ( DateTime . Now , groupIdForPresence , firstLesson , lastLesson ) ;
Console . WriteLine ( "Посещаемость на день сгенерирована." ) ;
break ;
case "11" :
Console . Write ( "Введите номер первого занятия: " ) ;
int firstLessonForWeek = int . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите номер последнего занятия: " ) ;
int lastLessonForWeek = int . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите ID группы: " ) ;
int groupIdForWeekPresence = int . Parse ( Console . ReadLine ( ) ) ;
_presenceConsoleUI . GeneratePresenceForWeek ( DateTime . Now , groupIdForWeekPresence , firstLessonForWeek , lastLessonForWeek ) ;
Console . WriteLine ( "Посещаемость на неделю сгенерирована." ) ;
break ;
case "12" :
Console . Write ( "Введите дату (г г г г -мм-дд): " ) ;
DateTime date = DateTime . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите ID группы: " ) ;
int groupForPresenceView = int . Parse ( Console . ReadLine ( ) ) ;
_presenceConsoleUI . DisplayPresence ( date , groupForPresenceView ) ;
break ;
case "13" :
2024-11-07 11:46:50 +00:00
Console . Write ( "Введите пользователя: " ) ;
2024-11-01 07:40:53 +00:00
userGuid = Guid . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите номер первого занятия: " ) ;
int firstAbsLesson = int . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите номер последнего занятия: " ) ;
int lastAbsLesson = int . Parse ( Console . ReadLine ( ) ) ;
Console . Write ( "Введите ID группы: " ) ;
int absGroupId = int . Parse ( Console . ReadLine ( ) ) ;
2024-11-05 18:36:49 +00:00
_presenceConsoleUI . MarkUserAsAbsent ( DateTime . Now , absGroupId , userGuid , firstAbsLesson , lastAbsLesson ) ;
2024-11-01 07:40:53 +00:00
Console . WriteLine ( "Пользователь отмечен как отсутствующий." ) ;
break ;
case "14" :
Console . Write ( "Введите ID группы: " ) ;
int groupIdForAllPresence = int . Parse ( Console . ReadLine ( ) ) ;
_presenceConsoleUI . DisplayAllPresenceByGroup ( groupIdForAllPresence ) ;
break ;
2024-11-07 11:46:50 +00:00
2024-11-01 07:40:53 +00:00
case "15" :
2024-11-07 07:35:57 +00:00
_presenceConsoleUI . ExportAttendanceToExcel ( ) ;
2024-11-01 07:40:53 +00:00
break ;
2024-11-07 11:46:50 +00:00
case "16" :
Console . Write ( "Введите ID группы: " ) ;
int searchGroupId = int . Parse ( Console . ReadLine ( ) ) ;
_presenceConsoleUI . DisplayGeneralPresenceForGroup ( searchGroupId ) ;
break ;
2024-11-07 07:35:57 +00:00
2024-11-01 07:40:53 +00:00
case "0" :
Console . WriteLine ( "Выход..." ) ;
return ;
default :
Console . WriteLine ( "Неверный выбор, попробуйте снова." ) ;
break ;
}
Console . WriteLine ( ) ;
}
}
}
}