using Demo.Data.LocalData; using Demo.Data.LocalData.Entity; using System; using System.Collections.Generic; using System.Linq; namespace Demo { class Program { static void Main(string[] args) { bool exit = false; while (!exit) { Console.Clear(); 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("0. Выход"); Console.Write("Выберите опцию: "); var choice = Console.ReadLine(); switch (choice) { case "1": ShowUsers(); break; case "2": DeleteUserByGuid(); break; case "3": UpdateUser(); break; case "4": FindUserByGuid(); break; case "5": ShowGroups(); break; case "6": AddGroup(); break; case "7": UpdateGroup(); break; case "8": DeleteGroupById(); break; case "9": FindGroupById(); break; case "10": GeneratePresenceForToday(); break; case "11": GeneratePresenceForWeek(); break; case "12": ShowPresenceByGroupAndDate(); break; case "13": MarkUserAsAbsent(); break; case "0": exit = true; break; default: Console.WriteLine("Неверный выбор. Нажмите любую клавишу для продолжения."); Console.ReadKey(); break; } } } static void ShowUsers() { Console.Clear(); foreach (var user in LocalStaticData.Users) { Console.WriteLine($"ID: {user.Id}, ФИО: {user.FIO}, GroupID: {user.GroupID}"); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void DeleteUserByGuid() { Console.Clear(); Console.Write("Введите GUID пользователя для удаления: "); if (Guid.TryParse(Console.ReadLine(), out Guid userId)) { var user = LocalStaticData.Users.FirstOrDefault(u => u.Id == userId); if (user != null) { LocalStaticData.Users.Remove(user); Console.WriteLine("Пользователь удалён."); } else { Console.WriteLine("Пользователь не найден."); } } else { Console.WriteLine("Неверный формат GUID."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void UpdateUser() { Console.Clear(); Console.Write("Введите GUID пользователя для обновления: "); if (Guid.TryParse(Console.ReadLine(), out Guid userId)) { var user = LocalStaticData.Users.FirstOrDefault(u => u.Id == userId); if (user != null) { Console.Write("Введите новое ФИО: "); user.FIO = Console.ReadLine(); Console.Write("Введите новый GroupID: "); if (int.TryParse(Console.ReadLine(), out int groupId)) { user.GroupID = groupId; Console.WriteLine("Пользователь обновлён."); } else { Console.WriteLine("Неверный формат GroupID."); } } else { Console.WriteLine("Пользователь не найден."); } } else { Console.WriteLine("Неверный формат GUID."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void FindUserByGuid() { Console.Clear(); Console.Write("Введите GUID пользователя для поиска: "); if (Guid.TryParse(Console.ReadLine(), out Guid userId)) { var user = LocalStaticData.Users.FirstOrDefault(u => u.Id == userId); if (user != null) { Console.WriteLine($"ID: {user.Id}, ФИО: {user.FIO}, GroupID: {user.GroupID}"); } else { Console.WriteLine("Пользователь не найден."); } } else { Console.WriteLine("Неверный формат GUID."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void ShowGroups() { Console.Clear(); Console.WriteLine("Список групп:"); foreach (var group in LocalStaticData.Groups) { Console.WriteLine(group); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void AddGroup() { Console.Clear(); Console.Write("Введите название группы для добавления: "); var groupName = Console.ReadLine(); LocalStaticData.Groups.Add(groupName); Console.WriteLine("Группа добавлена."); Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void UpdateGroup() { Console.Clear(); Console.Write("Введите индекс группы для обновления (начиная с 0): "); if (int.TryParse(Console.ReadLine(), out int index) && index >= 0 && index < LocalStaticData.Groups.Count) { Console.Write("Введите новое название группы: "); LocalStaticData.Groups[index] = Console.ReadLine(); Console.WriteLine("Группа обновлена."); } else { Console.WriteLine("Неверный индекс группы."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void DeleteGroupById() { Console.Clear(); Console.Write("Введите индекс группы для удаления (начиная с 0): "); if (int.TryParse(Console.ReadLine(), out int index) && index >= 0 && index < LocalStaticData.Groups.Count) { LocalStaticData.Groups.RemoveAt(index); Console.WriteLine("Группа удалена."); } else { Console.WriteLine("Неверный индекс группы."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void FindGroupById() { Console.Clear(); Console.Write("Введите индекс группы для поиска (начиная с 0): "); if (int.TryParse(Console.ReadLine(), out int index) && index >= 0 && index < LocalStaticData.Groups.Count) { Console.WriteLine($"Группа: {LocalStaticData.Groups[index]}"); } else { Console.WriteLine("Группа не найдена."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void GeneratePresenceForToday() { Console.Clear(); Console.Write("Введите номер группы: "); var groupIdInput = Console.ReadLine(); Console.Write("Введите номер первого занятия: "); var firstLesson = int.Parse(Console.ReadLine()); Console.Write("Введите номер последнего занятия: "); var lastLesson = int.Parse(Console.ReadLine()); var currentDate = DateTime.Now.Date; // Преобразуйте groupIdInput в int для сравнения if (int.TryParse(groupIdInput, out int groupId)) { // Получите идентификатор пользователя var user = LocalStaticData.Users.FirstOrDefault(u => u.GroupID == groupId); var userId = user != null ? user.Id : Guid.NewGuid(); // Если пользователь не найден, создайте новый идентификатор // Создание посещаемости с параметрами var presence = new Presence(userId, currentDate, groupId, Enumerable.Range(firstLesson, lastLesson - firstLesson + 1).Select(lesson => true).ToList()); LocalStaticData.Presences.Add(presence); Console.WriteLine("Посещаемость сгенерирована для сегодняшнего дня."); } else { Console.WriteLine("Некорректный ввод номера группы."); } Console.ReadKey(); } static void GeneratePresenceForWeek() { Console.Clear(); Console.Write("Введите номер группы: "); var groupIdInput = Console.ReadLine(); Console.Write("Введите номер первого занятия: "); var firstLesson = int.Parse(Console.ReadLine()); Console.Write("Введите номер последнего занятия: "); var lastLesson = int.Parse(Console.ReadLine()); var startDate = DateTime.Now.Date; // Преобразуйте groupIdInput в int для сравнения if (int.TryParse(groupIdInput, out int groupId)) { // Получите идентификатор пользователя var user = LocalStaticData.Users.FirstOrDefault(u => u.GroupID == groupId); var userId = user != null ? user.Id : Guid.NewGuid(); // Если пользователь не найден, создайте новый идентификатор for (int i = 0; i < 7; i++) { var currentDate = startDate.AddDays(i); // Создание посещаемости с параметрами var presence = new Presence(userId, currentDate, groupId, Enumerable.Range(firstLesson, lastLesson - firstLesson + 1).Select(lesson => true).ToList()); LocalStaticData.Presences.Add(presence); } Console.WriteLine("Посещаемость сгенерирована на текущую неделю."); } else { Console.WriteLine("Некорректный ввод номера группы."); } Console.ReadKey(); } static void ShowPresenceByGroupAndDate() { Console.Clear(); Console.Write("Введите номер группы: "); var groupId = Console.ReadLine(); Console.Write("Введите дату (yyyy-MM-dd): "); if (DateTime.TryParse(Console.ReadLine(), out DateTime date)) { var presence = LocalStaticData.Presences.FirstOrDefault(p => p.GroupID == int.Parse(groupId) && p.Date.Date == date); if (presence != null) { Console.WriteLine($"Посещаемость для группы {groupId} на {date.ToShortDateString()}:"); for (int i = 0; i < presence.Lessons.Count; i++) { Console.WriteLine($"Занятие {i + 1}: {(presence.Lessons[i] ? "Присутствует" : "Отсутствует")}"); } } else { Console.WriteLine("Посещаемость не найдена."); } } else { Console.WriteLine("Неверный формат даты."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } static void MarkUserAsAbsent() { Console.Clear(); Console.Write("Введите номер группы: "); var groupId = Console.ReadLine(); Console.Write("Введите дату (yyyy-MM-dd): "); if (DateTime.TryParse(Console.ReadLine(), out DateTime date)) { Console.Write("Введите GUID пользователя для отметки отсутствия: "); if (Guid.TryParse(Console.ReadLine(), out Guid userId)) { var presence = LocalStaticData.Presences.FirstOrDefault(p => p.GroupID == int.Parse(groupId) && p.Date.Date == date); if (presence != null) { // Поиск занятия пользователя var userIndex = LocalStaticData.Users.FindIndex(u => u.Id == userId && u.GroupID.ToString() == groupId); if (userIndex >= 0) { presence.Lessons[userIndex] = false; Console.WriteLine("Пользователь отмечен как отсутствующий."); } else { Console.WriteLine("Пользователь не найден в этой группе."); } } else { Console.WriteLine("Посещаемость не найдена."); } } else { Console.WriteLine("Неверный формат GUID."); } } else { Console.WriteLine("Неверный формат даты."); } Console.WriteLine("Нажмите любую клавишу для продолжения."); Console.ReadKey(); } } }