From ad36f40a574ff1f9c69220e247e17f0f61b8504b Mon Sep 17 00:00:00 2001 From: atabidze105 Date: Thu, 24 Oct 2024 11:50:32 +0300 Subject: [PATCH] init --- .../Data/Exceptions/GroupNotFoundException.cs | 9 + Demo1/Data/Exceptions/RepositoryException.cs | 9 + .../Data/Exceptions/UserNotFoundException.cs | 9 + Demo1/Data/LocalData/Entity/ClassGroup.cs | 10 - .../Data/LocalData/Entity/DailyAttendance.cs | 20 - Demo1/Data/LocalData/Entity/Group.cs | 10 - Demo1/Data/LocalData/Entity/LocalUser.cs | 12 - .../LocalData/Entity/StudentAttendance.cs | 25 -- Demo1/Data/LocalData/LocalGroup.cs | 8 + Demo1/Data/LocalData/LocalPresence.cs | 12 + Demo1/Data/LocalData/LocalStaticData.cs | 57 --- Demo1/Data/LocalData/LocalUser.cs | 11 + Demo1/Data/LocalData/WeeklyAttendance.cs | 21 - Demo1/Data/LocalStaticData.cs | 28 ++ Demo1/Data/Repository/GroupRepositoryImpl.cs | 65 ++- Demo1/Data/Repository/IGroupRepository.cs | 14 + Demo1/Data/Repository/IPresenceRepository.cs | 21 +- Demo1/Data/Repository/IUserRepository.cs | 13 + Demo1/Data/Repository/LessonPresence.cs | 22 -- .../Data/Repository/PresenceRepositoryImpl.cs | 70 ++++ .../Data/Repository/PresenceRepositorylmpl.cs | 52 --- Demo1/Data/Repository/UserRepositoryImpl.cs | 70 ++-- Demo1/Domain/Models/Group.cs | 8 +- Demo1/Domain/Models/Presence.cs | 22 +- Demo1/Domain/Models/User.cs | 21 +- Demo1/Domain/UseCase/GroupUseCase.cs | 75 +--- Demo1/Domain/UseCase/PresenceUseCase.cs | 47 --- .../Domain/UseCase/UseCaseGeneratePresence.cs | 52 +++ Demo1/Domain/UseCase/UseCasePresence.cs | 30 -- Demo1/Domain/UseCase/UserModel.cs | 6 - Demo1/Domain/UseCase/UserUseCase.cs | 38 +- Demo1/Program.cs | 369 +----------------- Demo1/UI/GroupConsole.cs | 154 ++++++++ Demo1/UI/MainMenu.cs | 110 +++++- Demo1/UI/PresenceConsole.cs | 207 ++++++++++ Demo1/UI/UserConsole.cs | 20 - Demo1/UserConsole.cs | 125 ++++++ Demo1/bin/Debug/net8.0/Demo1.dll | Bin 29696 -> 29696 bytes Demo1/bin/Debug/net8.0/Demo1.exe | Bin 142848 -> 142848 bytes Demo1/bin/Debug/net8.0/Demo1.pdb | Bin 21540 -> 21432 bytes Demo1/obj/Debug/net8.0/Demo1.AssemblyInfo.cs | 2 +- .../net8.0/Demo1.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 2 +- Demo1/obj/Debug/net8.0/Demo1.assets.cache | Bin 236 -> 151 bytes .../Demo1.csproj.CoreCompileInputs.cache | 2 +- .../net8.0/Demo1.csproj.FileListAbsolute.txt | 14 + Demo1/obj/Debug/net8.0/Demo1.dll | Bin 29696 -> 29696 bytes .../Debug/net8.0/Demo1.genruntimeconfig.cache | 2 +- Demo1/obj/Debug/net8.0/Demo1.pdb | Bin 21540 -> 21432 bytes Demo1/obj/Debug/net8.0/apphost.exe | Bin 142848 -> 142848 bytes Demo1/obj/Debug/net8.0/ref/Demo1.dll | Bin 13312 -> 11776 bytes Demo1/obj/Debug/net8.0/refint/Demo1.dll | Bin 13312 -> 11776 bytes Demo1/obj/Demo1.csproj.nuget.dgspec.json | 21 +- Demo1/obj/Demo1.csproj.nuget.g.props | 7 +- Demo1/obj/project.assets.json | 20 +- Demo1/obj/project.nuget.cache | 4 +- 56 files changed, 1030 insertions(+), 898 deletions(-) create mode 100644 Demo1/Data/Exceptions/GroupNotFoundException.cs create mode 100644 Demo1/Data/Exceptions/RepositoryException.cs create mode 100644 Demo1/Data/Exceptions/UserNotFoundException.cs delete mode 100644 Demo1/Data/LocalData/Entity/ClassGroup.cs delete mode 100644 Demo1/Data/LocalData/Entity/DailyAttendance.cs delete mode 100644 Demo1/Data/LocalData/Entity/Group.cs delete mode 100644 Demo1/Data/LocalData/Entity/LocalUser.cs delete mode 100644 Demo1/Data/LocalData/Entity/StudentAttendance.cs create mode 100644 Demo1/Data/LocalData/LocalGroup.cs create mode 100644 Demo1/Data/LocalData/LocalPresence.cs delete mode 100644 Demo1/Data/LocalData/LocalStaticData.cs create mode 100644 Demo1/Data/LocalData/LocalUser.cs delete mode 100644 Demo1/Data/LocalData/WeeklyAttendance.cs create mode 100644 Demo1/Data/LocalStaticData.cs create mode 100644 Demo1/Data/Repository/IGroupRepository.cs create mode 100644 Demo1/Data/Repository/IUserRepository.cs delete mode 100644 Demo1/Data/Repository/LessonPresence.cs create mode 100644 Demo1/Data/Repository/PresenceRepositoryImpl.cs delete mode 100644 Demo1/Data/Repository/PresenceRepositorylmpl.cs delete mode 100644 Demo1/Domain/UseCase/PresenceUseCase.cs create mode 100644 Demo1/Domain/UseCase/UseCaseGeneratePresence.cs delete mode 100644 Demo1/Domain/UseCase/UseCasePresence.cs delete mode 100644 Demo1/Domain/UseCase/UserModel.cs create mode 100644 Demo1/UI/GroupConsole.cs create mode 100644 Demo1/UI/PresenceConsole.cs delete mode 100644 Demo1/UI/UserConsole.cs create mode 100644 Demo1/UserConsole.cs diff --git a/Demo1/Data/Exceptions/GroupNotFoundException.cs b/Demo1/Data/Exceptions/GroupNotFoundException.cs new file mode 100644 index 0000000..5b4c150 --- /dev/null +++ b/Demo1/Data/Exceptions/GroupNotFoundException.cs @@ -0,0 +1,9 @@ +using System; + +namespace AttendanceApp.Data.Exceptions +{ + public class GroupNotFoundException : Exception + { + public GroupNotFoundException(string message) : base(message) { } + } +} \ No newline at end of file diff --git a/Demo1/Data/Exceptions/RepositoryException.cs b/Demo1/Data/Exceptions/RepositoryException.cs new file mode 100644 index 0000000..6e2197c --- /dev/null +++ b/Demo1/Data/Exceptions/RepositoryException.cs @@ -0,0 +1,9 @@ +using System; + +namespace AttendanceApp.Data.Exceptions +{ + public class RepositoryException : Exception + { + public RepositoryException(string message) : base(message) { } + } +} \ No newline at end of file diff --git a/Demo1/Data/Exceptions/UserNotFoundException.cs b/Demo1/Data/Exceptions/UserNotFoundException.cs new file mode 100644 index 0000000..04b28c0 --- /dev/null +++ b/Demo1/Data/Exceptions/UserNotFoundException.cs @@ -0,0 +1,9 @@ +using System; + +namespace AttendanceApp.Data.Exceptions +{ + public class UserNotFoundException : Exception + { + public UserNotFoundException(string message) : base(message) { } + } +} \ No newline at end of file diff --git a/Demo1/Data/LocalData/Entity/ClassGroup.cs b/Demo1/Data/LocalData/Entity/ClassGroup.cs deleted file mode 100644 index b52ca57..0000000 --- a/Demo1/Data/LocalData/Entity/ClassGroup.cs +++ /dev/null @@ -1,10 +0,0 @@ - -namespace Demo.Domain.Models -{ - public class ClassGroup - { - public int Id { get; set; } - public string Name { get; set; } = string.Empty; // Название группы - public List? Users { get; internal set; } - } -} diff --git a/Demo1/Data/LocalData/Entity/DailyAttendance.cs b/Demo1/Data/LocalData/Entity/DailyAttendance.cs deleted file mode 100644 index e9682a1..0000000 --- a/Demo1/Data/LocalData/Entity/DailyAttendance.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace Demo.Data.LocalData.Entity -{ - public class DailyAttendance - { - public Guid UserId { get; set; } - public bool[] Attendance { get; set; } - - public DailyAttendance(Guid userId, int days) - { - UserId = userId; - Attendance = new bool[days]; - for (int i = 0; i < days; i++) - { - Attendance[i] = true; // По умолчанию все присутствуют - } - } - } -} diff --git a/Demo1/Data/LocalData/Entity/Group.cs b/Demo1/Data/LocalData/Entity/Group.cs deleted file mode 100644 index 1540e36..0000000 --- a/Demo1/Data/LocalData/Entity/Group.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace Demo.Data.LocalData.Entity -{ - public class Group - { - public int Id { get; set; } - public string Name { get; set; } = string.Empty; // По умолчанию пустая строка - } -} diff --git a/Demo1/Data/LocalData/Entity/LocalUser.cs b/Demo1/Data/LocalData/Entity/LocalUser.cs deleted file mode 100644 index e5770d7..0000000 --- a/Demo1/Data/LocalData/Entity/LocalUser.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Demo.Domain.Models; - -namespace Demo.Data.LocalData.Entity -{ - public class LocalUser - { - public Guid Id { get; set; } // Это будет уникальный идентификатор - public string FIO { get; set; } = string.Empty; - public int GroupID { get; set; } - public ClassGroup ClassGroup { get; set; } = new ClassGroup(); - } -} diff --git a/Demo1/Data/LocalData/Entity/StudentAttendance.cs b/Demo1/Data/LocalData/Entity/StudentAttendance.cs deleted file mode 100644 index a20bba7..0000000 --- a/Demo1/Data/LocalData/Entity/StudentAttendance.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; - -namespace Demo.Domain.Models -{ - public class StudentAttendance - { - public Guid UserId { get; set; } - public bool[] Attendance { get; set; } - - public StudentAttendance(Guid userId, int lessonsCount) - { - UserId = userId; - Attendance = new bool[lessonsCount]; - for (int i = 0; i < lessonsCount; i++) - { - Attendance[i] = true; // По умолчанию все присутствуют - } - } - - // Добавьте здесь новые свойства, если хотите хранить дополнительные данные - public int LessonId { get; set; } // Идентификатор урока - public bool IsPresent { get; set; } // Статус присутствия - public DateTime AttendanceDate { get; set; } // Дата посещаемости - } -} diff --git a/Demo1/Data/LocalData/LocalGroup.cs b/Demo1/Data/LocalData/LocalGroup.cs new file mode 100644 index 0000000..3fbf3e9 --- /dev/null +++ b/Demo1/Data/LocalData/LocalGroup.cs @@ -0,0 +1,8 @@ +namespace AttendanceApp.Data.LocalData +{ + public class LocalGroup + { + public int Id { get; set; } + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/Demo1/Data/LocalData/LocalPresence.cs b/Demo1/Data/LocalData/LocalPresence.cs new file mode 100644 index 0000000..143ab27 --- /dev/null +++ b/Demo1/Data/LocalData/LocalPresence.cs @@ -0,0 +1,12 @@ +using System; + +namespace AttendanceApp.Data.LocalData +{ + public class LocalPresence + { + public DateTime ClassDate { get; set; } + public int ClassNumber { get; set; } + public bool IsPresent { get; set; } + public Guid UserId { get; set; } + } +} \ No newline at end of file diff --git a/Demo1/Data/LocalData/LocalStaticData.cs b/Demo1/Data/LocalData/LocalStaticData.cs deleted file mode 100644 index 754420f..0000000 --- a/Demo1/Data/LocalData/LocalStaticData.cs +++ /dev/null @@ -1,57 +0,0 @@ -using Demo.Data.LocalData.Entity; -using System; -using System.Collections.Generic; -using Demo.Domain.Models; - -namespace Demo.Data.LocalData -{ - public static class LocalStaticData - { - public static List Users { get; } = new List - { - new LocalUser { Id = Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9"), FIO = "Иванов Иван Иванович", GroupID = 1 }, - new LocalUser { Id = Guid.Parse("8388d931-5bef-41be-a152-78f1aca980ed"), FIO = "Петров Петр Петрович", GroupID = 2 }, - new LocalUser { Id = Guid.Parse("ed174548-49ed-4503-a902-c970cbf27173"), FIO = "Мендалиев Наиль", GroupID = 3 }, - new LocalUser { Id = Guid.Parse("614c0a23-5bd5-43ae-b48e-d5750afbc282"), FIO = "Сидоров Сидор Сидорович", GroupID = 1 }, - new LocalUser { Id = Guid.Parse("efcc1473-c116-4244-b3f7-f2341a5c3003"), FIO = "Кузнецов Алексей Викторович", GroupID = 2 }, - new LocalUser { Id = Guid.Parse("60640fb3-ace2-4cad-81d5-a0a58bc2dbbd"), FIO = "Смирнова Анна Сергеевна", GroupID = 3 } - }; - - public static List Groups { get; } = new List - { - "ИП1-22", - "ИП1-23", - "С1-23" - }; - - // Список посещаемостей - public static List Presences { get; } = new List(); - - public static void InitializePresences() - { - // Инициализация списка посещаемости для текущей недели - foreach (var user in Users) - { - var lessons = new List(new bool[3]); // Предположим, что у нас 3 занятия - Presences.Add(new Presence(user.Id, DateTime.Today, user.GroupID, lessons)); - } - } - } - - // Класс для хранения посещаемости - public class Presence - { - public Guid UserID { get; set; } - public DateTime Date { get; set; } - public int GroupID { get; set; } - public List Lessons { get; set; } // true - присутствует, false - отсутствует - - public Presence(Guid userId, DateTime date, int groupId, List lessons) - { - UserID = userId; - Date = date; - GroupID = groupId; - Lessons = lessons; - } - } -} diff --git a/Demo1/Data/LocalData/LocalUser.cs b/Demo1/Data/LocalData/LocalUser.cs new file mode 100644 index 0000000..dd44e05 --- /dev/null +++ b/Demo1/Data/LocalData/LocalUser.cs @@ -0,0 +1,11 @@ +using System; + +namespace AttendanceApp.Data.LocalData +{ + public class LocalUser + { + public Guid Id { get; set; } + public string FIO { get; set; } + public int GroupID { get; set; } + } +} \ No newline at end of file diff --git a/Demo1/Data/LocalData/WeeklyAttendance.cs b/Demo1/Data/LocalData/WeeklyAttendance.cs deleted file mode 100644 index 6d435b2..0000000 --- a/Demo1/Data/LocalData/WeeklyAttendance.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Demo.Domain.Models -{ - public class WeeklyAttendance - { - public Guid UserId { get; set; } - public int GroupID { get; set; } - public DateTime Date { get; set; } - public List Lessons { get; set; } - - public WeeklyAttendance(Guid userId, int groupId) - { - UserId = userId; - GroupID = groupId; - Date = DateTime.Now; // или передайте дату в качестве параметра - Lessons = new List(); - } - } -} diff --git a/Demo1/Data/LocalStaticData.cs b/Demo1/Data/LocalStaticData.cs new file mode 100644 index 0000000..9253bc0 --- /dev/null +++ b/Demo1/Data/LocalStaticData.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using AttendanceApp.Data.LocalData; + +namespace AttendanceApp.Data +{ + public static class LocalStaticData + { + public static List Users { get; set; } = new List + { + new LocalUser { Id = Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9"), FIO = "Иванов Иван Иванович", GroupID = 1 }, + new LocalUser { Id = Guid.Parse("8388d931-5bef-41be-a152-78f1aca980ed"), FIO = "Петров Петр Петрович", GroupID = 2 }, + new LocalUser { Id = Guid.Parse("ed174548-49ed-4503-a902-c970cbf27173"), FIO = "Мендалиев Наиль", GroupID = 3 }, + new LocalUser { Id = Guid.Parse("614c0a23-5bd5-43ae-b48e-d5750afbc282"), FIO = "Сидоров Сидор Сидорович", GroupID = 1 }, + new LocalUser { Id = Guid.Parse("efcc1473-c116-4244-b3f7-f2341a5c3003"), FIO = "Кузнецов Алексей Викторович", GroupID = 2 }, + new LocalUser { Id = Guid.Parse("60640fb3-ace2-4cad-81d5-a0a58bc2dbbd"), FIO = "Смирнова Анна Сергеевна", GroupID = 3 } + }; + + public static List Groups { get; set; } = new List + { + new LocalGroup { Id = 1, Name = "ИП1-22" }, + new LocalGroup { Id = 2, Name = "ИП1-23" }, + new LocalGroup { Id = 3, Name = "С1-23" } + }; + + public static List Presences { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/Demo1/Data/Repository/GroupRepositoryImpl.cs b/Demo1/Data/Repository/GroupRepositoryImpl.cs index 3128d25..b2022e4 100644 --- a/Demo1/Data/Repository/GroupRepositoryImpl.cs +++ b/Demo1/Data/Repository/GroupRepositoryImpl.cs @@ -1,37 +1,60 @@ -using Demo.Data.LocalData.Entity; -using Demo.Domain.Models; -using System; -using System.Collections.Generic; -using System.Linq; +using AttendanceApp.Data.Exceptions; +using AttendanceApp.Data.LocalData; +using AttendanceApp.Domain.Models; -namespace Demo.Data.Repository +namespace AttendanceApp.Data.Repository { - public class GroupRepositoryImpl + public class GroupRepositoryImpl : IGroupRepository { - private List groups; + private readonly List _groups = LocalStaticData.Groups; - public GroupRepositoryImpl() + public IEnumerable GetAllGroups() { - groups = new List(); + return _groups.Select(g => new Group + { + Id = g.Id, + Name = g.Name + }); } - public List GetAllGroups() + public Group GetGroupById(int id) { - return groups; + var localGroup = _groups.FirstOrDefault(g => g.Id == id); + if (localGroup == null) + throw new GroupNotFoundException($"Группа с ID {id} не найдена."); + + return new Group + { + Id = localGroup.Id, + Name = localGroup.Name + }; } - public void AddGroup(ClassGroup group) + public void AddGroup(Group group) { - if (group == null) throw new ArgumentNullException(nameof(group)); - groups.Add(group); + _groups.Add(new LocalGroup + { + Id = group.Id, + Name = group.Name + }); } - // Метод для получения пользователей по ID группы - public List GetUsersByGroup(int groupId) + public void UpdateGroup(Group group) { - // Предполагаем, что ClassGroup имеет свойство Users, содержащее список пользователей - var group = groups.FirstOrDefault(g => g.Id == groupId); - return group?.Users ?? new List(); // Возвращаем пользователей или пустой список, если группа не найдена + var localGroup = _groups.FirstOrDefault(g => g.Id == group.Id); + if (localGroup == null) + throw new GroupNotFoundException($"Группа с ID {group.Id} не найдена."); + + localGroup.Name = group.Name; + } + + public void DeleteGroup(int id) + { + var group = _groups.FirstOrDefault(g => g.Id == id); + if (group == null) + throw new GroupNotFoundException($"Группа с ID {id} не найдена."); + + _groups.Remove(group); } } -} +} \ No newline at end of file diff --git a/Demo1/Data/Repository/IGroupRepository.cs b/Demo1/Data/Repository/IGroupRepository.cs new file mode 100644 index 0000000..a34142c --- /dev/null +++ b/Demo1/Data/Repository/IGroupRepository.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using AttendanceApp.Domain.Models; + +namespace AttendanceApp.Data.Repository +{ + public interface IGroupRepository + { + IEnumerable GetAllGroups(); + Group GetGroupById(int id); + void AddGroup(Group group); + void UpdateGroup(Group group); + void DeleteGroup(int id); + } +} \ No newline at end of file diff --git a/Demo1/Data/Repository/IPresenceRepository.cs b/Demo1/Data/Repository/IPresenceRepository.cs index 4557539..abad932 100644 --- a/Demo1/Data/Repository/IPresenceRepository.cs +++ b/Demo1/Data/Repository/IPresenceRepository.cs @@ -1,18 +1,13 @@ -using System; -using System.Collections.Generic; -using Demo.Domain.Models; +using AttendanceApp.Domain.Models; -namespace Demo.Data.Repository +namespace AttendanceApp.Data.Repository { public interface IPresenceRepository { - List GetUsersByGroup(int groupNumber); - void SavePresence(List presenceList); - List GetPresenceByGroup(int groupNumber); - List GetPresenceByGroupAndDate(int groupNumber, DateTime date); - void MarkUserAbsent(Guid userId, int groupNumber, int lessonIndex, DateTime date); - - // Добавляем метод для обновления записи о посещаемости - void UpdatePresence(LessonPresence presence); // Обновление присутствия + IEnumerable GetPresenceByGroupAndDate(int groupId, DateTime date); + IEnumerable GetPresenceByGroup(int groupId); + void AddPresence(Presence presence); + void UpdatePresence(Presence presence); + // Дополнительные методы по необходимости } -} +} \ No newline at end of file diff --git a/Demo1/Data/Repository/IUserRepository.cs b/Demo1/Data/Repository/IUserRepository.cs new file mode 100644 index 0000000..8575142 --- /dev/null +++ b/Demo1/Data/Repository/IUserRepository.cs @@ -0,0 +1,13 @@ +using AttendanceApp.Domain.Models; + +namespace AttendanceApp.Data.Repository +{ + public interface IUserRepository + { + IEnumerable GetAllUsers(); + User GetUserById(Guid id); + void AddUser(User user); + void UpdateUser(User user); + void DeleteUser(Guid id); + } +} \ No newline at end of file diff --git a/Demo1/Data/Repository/LessonPresence.cs b/Demo1/Data/Repository/LessonPresence.cs deleted file mode 100644 index 1eafe26..0000000 --- a/Demo1/Data/Repository/LessonPresence.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Demo.Domain.Models -{ - public class LessonPresence - { - public Guid UserId { get; set; } // Идентификатор пользователя - public DateTime Date { get; set; } // Дата посещаемости - public int GroupID { get; set; } // ID группы - public List Lessons { get; set; } // Список посещаемости по занятиям - - // Конструктор класса - public LessonPresence(Guid userId, DateTime date, int groupId, List lessons) - { - UserId = userId; - Date = date; - GroupID = groupId; - Lessons = lessons; - } - } -} diff --git a/Demo1/Data/Repository/PresenceRepositoryImpl.cs b/Demo1/Data/Repository/PresenceRepositoryImpl.cs new file mode 100644 index 0000000..fc88ce7 --- /dev/null +++ b/Demo1/Data/Repository/PresenceRepositoryImpl.cs @@ -0,0 +1,70 @@ +using AttendanceApp.Data.Exceptions; +using AttendanceApp.Data.LocalData; +using AttendanceApp.Domain.Models; +using System.Collections.Generic; +using System.Linq; + +namespace AttendanceApp.Data.Repository +{ + public class PresenceRepositoryImpl : IPresenceRepository + { + private readonly List _presences = LocalStaticData.Presences; + + public IEnumerable GetPresenceByGroupAndDate(int groupId, DateTime date) + { + var usersInGroup = LocalStaticData.Users.Where(u => u.GroupID == groupId).Select(u => u.Id); + return _presences + .Where(p => usersInGroup.Contains(p.UserId) && p.ClassDate.Date == date.Date) + .Select(p => new Presence + { + ClassDate = p.ClassDate, + ClassNumber = p.ClassNumber, + IsPresent = p.IsPresent, + UserId = p.UserId + }); + } + + public IEnumerable GetPresenceByGroup(int groupId) + { + var usersInGroup = LocalStaticData.Users + .Where(u => u.GroupID == groupId) + .Select(u => u.Id); + + return _presences + .Where(p => usersInGroup.Contains(p.UserId)) + .Select(p => new Presence + { + ClassDate = p.ClassDate, + ClassNumber = p.ClassNumber, + IsPresent = p.IsPresent, + UserId = p.UserId + }) + .OrderBy(p => p.ClassDate) + .ThenBy(p => p.ClassNumber); + } + + public void AddPresence(Presence presence) + { + _presences.Add(new LocalPresence + { + ClassDate = presence.ClassDate, + ClassNumber = presence.ClassNumber, + IsPresent = presence.IsPresent, + UserId = presence.UserId + }); + } + + public void UpdatePresence(Presence presence) + { + var localPresence = _presences.FirstOrDefault(p => + p.UserId == presence.UserId && + p.ClassDate.Date == presence.ClassDate.Date && + p.ClassNumber == presence.ClassNumber); + + if (localPresence == null) + throw new RepositoryException("Посещаемость не найдена."); + + localPresence.IsPresent = presence.IsPresent; + } + } +} \ No newline at end of file diff --git a/Demo1/Data/Repository/PresenceRepositorylmpl.cs b/Demo1/Data/Repository/PresenceRepositorylmpl.cs deleted file mode 100644 index 3ab099e..0000000 --- a/Demo1/Data/Repository/PresenceRepositorylmpl.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections.Generic; -using Demo.Data.LocalData; -using Demo.Domain.Models; - -namespace Demo.Data.Repository -{ - public class PresenceRepositoryImpl : IPresenceRepository - { - private readonly List _presences = new List(); - - public List GetUsersByGroup(int groupNumber) - { - // Здесь должна быть логика получения пользователей по номеру группы - return new List - { - new User { Id = Guid.NewGuid(), FullName = "Иванов Иван", ClassId = groupNumber }, - new User { Id = Guid.NewGuid(), FullName = "Петров Пётр", ClassId = groupNumber }, - // Добавьте других пользователей по аналогии - }; - } - - public void SavePresence(List presenceList) - { - _presences.AddRange(presenceList); - } - - public List GetPresenceByGroup(int groupNumber) - { - return _presences.FindAll(p => p.GroupID == groupNumber); - } - - public List GetPresenceByGroupAndDate(int groupNumber, DateTime date) - { - return _presences.FindAll(p => p.GroupID == groupNumber && p.Date.Date == date.Date); - } - - public void MarkUserAbsent(Guid userId, int groupNumber, int lessonIndex, DateTime date) - { - var presence = _presences.Find(p => p.UserId == userId && p.GroupID == groupNumber && p.Date.Date == date.Date); - if (presence != null && lessonIndex >= 0 && lessonIndex < presence.Lessons.Count) - { - presence.Lessons[lessonIndex] = false; // Отметим занятие как отсутствующее - } - } - - public void UpdatePresence(LessonPresence presence) - { - throw new NotImplementedException(); - } - } -} diff --git a/Demo1/Data/Repository/UserRepositoryImpl.cs b/Demo1/Data/Repository/UserRepositoryImpl.cs index 67e52e2..4301609 100644 --- a/Demo1/Data/Repository/UserRepositoryImpl.cs +++ b/Demo1/Data/Repository/UserRepositoryImpl.cs @@ -1,38 +1,64 @@ -using Demo.Data.LocalData; -using Demo.Data.LocalData.Entity; -using Demo.Domain.Models; // Убедитесь, что эта директива используется только один раз -using System; -using System.Collections.Generic; -using System.Linq; +using AttendanceApp.Data.Exceptions; +using AttendanceApp.Data.LocalData; +using AttendanceApp.Domain.Models; -namespace Demo.Data.Repository +namespace AttendanceApp.Data.Repository { - public class UserRepositoryImpl + public class UserRepositoryImpl : IUserRepository { - private List users; + private readonly List _users = LocalStaticData.Users; - public UserRepositoryImpl() + public IEnumerable GetAllUsers() { - users = LocalStaticData.Users; // Инициализируем пользователей из статических данных + return _users.Select(u => new User + { + Id = u.Id, + FIO = u.FIO, + GroupId = u.GroupID + }); } - public List GetAllUsers() + public User GetUserById(Guid id) { - return users.Select(u => (User)u).ToList(); + var localUser = _users.FirstOrDefault(u => u.Id == id); + if (localUser == null) + throw new UserNotFoundException($"Пользователь с ID {id} не найден."); + + return new User + { + Id = localUser.Id, + FIO = localUser.FIO, + GroupId = localUser.GroupID + }; } - public User GetUserById(Guid userId) // Изменено на Guid + public void AddUser(User user) { - var entityUser = users.FirstOrDefault(u => u.Id == userId); - if (entityUser == null) throw new InvalidOperationException("User not found"); - - return (User)entityUser; + _users.Add(new LocalUser + { + Id = user.Id, + FIO = user.FIO, + GroupID = user.GroupId + }); } - public void AddUser(LocalUser user) + public void UpdateUser(User user) { - if (user == null) throw new ArgumentNullException(nameof(user)); - users.Add(user); + var localUser = _users.FirstOrDefault(u => u.Id == user.Id); + if (localUser == null) + throw new UserNotFoundException($"Пользователь с ID {user.Id} не найден."); + + localUser.FIO = user.FIO; + localUser.GroupID = user.GroupId; + } + + public void DeleteUser(Guid id) + { + var user = _users.FirstOrDefault(u => u.Id == id); + if (user == null) + throw new UserNotFoundException($"Пользователь с ID {id} не найден."); + + _users.Remove(user); } } -} +} \ No newline at end of file diff --git a/Demo1/Domain/Models/Group.cs b/Demo1/Domain/Models/Group.cs index 2acdc74..2fdd7ec 100644 --- a/Demo1/Domain/Models/Group.cs +++ b/Demo1/Domain/Models/Group.cs @@ -1,10 +1,8 @@ -using System; - -namespace Demo.Domain.Models +namespace AttendanceApp.Domain.Models { public class Group { public int Id { get; set; } - public string Name { get; set; } = string.Empty; // Переименован на Name + public string Name { get; set; } } -} +} \ No newline at end of file diff --git a/Demo1/Domain/Models/Presence.cs b/Demo1/Domain/Models/Presence.cs index 86167b8..561b85b 100644 --- a/Demo1/Domain/Models/Presence.cs +++ b/Demo1/Domain/Models/Presence.cs @@ -1,22 +1,12 @@ using System; -using System.Collections.Generic; -namespace Demo.Domain.Models +namespace AttendanceApp.Domain.Models { public class Presence { - public Guid UserId { get; set; } // Идентификатор пользователя - public DateTime Date { get; set; } // Дата посещаемости - public int GroupID { get; set; } // ID группы - public List Lessons { get; set; } // Список посещаемости по занятиям - - // Конструктор класса - public Presence(Guid userId, DateTime date, int groupId, List lessons) - { - UserId = userId; - Date = date; - GroupID = groupId; - Lessons = lessons; - } + public DateTime ClassDate { get; set; } + public int ClassNumber { get; set; } + public bool IsPresent { get; set; } + public Guid UserId { get; set; } } -} +} \ No newline at end of file diff --git a/Demo1/Domain/Models/User.cs b/Demo1/Domain/Models/User.cs index bf28ed2..cdbbaba 100644 --- a/Demo1/Domain/Models/User.cs +++ b/Demo1/Domain/Models/User.cs @@ -1,24 +1,11 @@ using System; -namespace Demo.Domain.Models +namespace AttendanceApp.Domain.Models { public class User { public Guid Id { get; set; } - public string FullName { get; set; } = string.Empty; - public ClassGroup ClassGroup { get; set; } = new ClassGroup(); - public int ClassId { get; set; } - public Guid UserId { get; internal set; } - - public static explicit operator User(Data.LocalData.Entity.LocalUser v) - { - return new User - { - Id = Guid.NewGuid(), - FullName = v.FIO, - ClassGroup = v.ClassGroup, - ClassId = v.GroupID - }; - } + public string FIO { get; set; } + public int GroupId { get; set; } } -} +} \ No newline at end of file diff --git a/Demo1/Domain/UseCase/GroupUseCase.cs b/Demo1/Domain/UseCase/GroupUseCase.cs index dee5b49..1b1e8b1 100644 --- a/Demo1/Domain/UseCase/GroupUseCase.cs +++ b/Demo1/Domain/UseCase/GroupUseCase.cs @@ -1,82 +1,41 @@ -using Demo.Data.Repository; -using Demo.Domain.Models; -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; +using AttendanceApp.Data.Repository; +using AttendanceApp.Domain.Models; -namespace Demo.Domain.UseCases +namespace AttendanceApp.Domain.UseCases { public class GroupUseCase { - private readonly IPresenceRepository _presenceRepository; - private readonly GroupRepositoryImpl _groupRepository; // Измените на GroupRepositoryImpl + private readonly IGroupRepository _groupRepository; - public GroupUseCase(GroupRepositoryImpl groupRepository, IPresenceRepository presenceRepository) // Конструктор + public GroupUseCase(IGroupRepository groupRepository) { _groupRepository = groupRepository; - _presenceRepository = presenceRepository; } - // Метод для генерации посещаемости на текущий день - public List GeneratePresence(int firstLessonNumber, int lastLessonNumber, int groupId, DateTime currentDate) + public IEnumerable GetAllGroups() { - var users = _groupRepository.GetUsersByGroup(groupId); // Получаем пользователей группы - List presenceList = new List(); - - foreach (var user in users) - { - var lessons = new List(new bool[lastLessonNumber - firstLessonNumber + 1]); // По умолчанию все посещены - var presence = new LessonPresence(user.Id, currentDate, groupId, lessons); // Измените на LessonPresence - presenceList.Add(presence); - } - - return presenceList; + return _groupRepository.GetAllGroups(); } - // Метод для генерации посещаемости на неделю - public Dictionary> GenerateWeeklyPresence(int firstLessonNumber, int lastLessonNumber, int groupId, DateTime startDate) + public Group GetGroupById(int id) { - var weeklyPresence = new Dictionary>(); - - for (int i = 0; i < 7; i++) - { - var currentDate = startDate.AddDays(i); - var dailyPresence = GeneratePresence(firstLessonNumber, lastLessonNumber, groupId, currentDate); - weeklyPresence[currentDate] = dailyPresence; - } - - return weeklyPresence; + return _groupRepository.GetGroupById(id); } - // Метод для вывода посещаемости по группе - public List GetPresenceByGroup(int groupId) + public void AddGroup(Group group) { - return _presenceRepository.GetPresenceByGroup(groupId); + _groupRepository.AddGroup(group); } - // Метод для вывода посещаемости по группе по дате - public List GetPresenceByGroupAndDate(int groupId, DateTime date) + public void UpdateGroup(Group group) { - return _presenceRepository.GetPresenceByGroupAndDate(groupId, date); + _groupRepository.UpdateGroup(group); } - // Метод для отметки пользователя как отсутствующего - public void MarkUserAbsent(Guid userId, int groupId, DateTime date, List lessonNumbers) + public void DeleteGroup(int id) { - var presenceRecords = _presenceRepository.GetPresenceByGroupAndDate(groupId, date); - - var presenceRecord = presenceRecords.FirstOrDefault(p => p.UserId == userId); - if (presenceRecord != null) - { - foreach (var lessonNumber in lessonNumbers) - { - if (lessonNumber >= 0 && lessonNumber < presenceRecord.Lessons.Count) - { - presenceRecord.Lessons[lessonNumber] = false; // Отмечаем как отсутствующего - } - } - _presenceRepository.UpdatePresence(presenceRecord); // Обновляем запись в репозитории - } + _groupRepository.DeleteGroup(id); } } -} +} \ No newline at end of file diff --git a/Demo1/Domain/UseCase/PresenceUseCase.cs b/Demo1/Domain/UseCase/PresenceUseCase.cs deleted file mode 100644 index 1eaa18d..0000000 --- a/Demo1/Domain/UseCase/PresenceUseCase.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using Demo.Data.Repository; -using Demo.Domain.Models; - -namespace Demo.Domain.UseCases -{ - public class PresenceUseCase - { - private readonly IPresenceRepository _presenceRepository; - - public PresenceUseCase(IPresenceRepository presenceRepository) // Конструктор - { - _presenceRepository = presenceRepository; - } - - public void GeneratePresence(int groupNumber, DateTime date) - { - var users = _presenceRepository.GetUsersByGroup(groupNumber); - var presenceList = new List(); - - foreach (var user in users) - { - // Создаем список посещаемости, по умолчанию все отмечены как присутствующие - var lessons = new List { true, true, true }; // Пример, 3 занятия - presenceList.Add(new LessonPresence(user.UserId, date, groupNumber, lessons)); - } - - _presenceRepository.SavePresence(presenceList); - } - - public List GetPresenceByGroup(int groupNumber) - { - return _presenceRepository.GetPresenceByGroup(groupNumber); - } - - public List GetPresenceByGroupAndDate(int groupNumber, DateTime date) - { - return _presenceRepository.GetPresenceByGroupAndDate(groupNumber, date); - } - - public void MarkUserAbsent(Guid userId, int groupNumber, int lessonId, DateTime date) - { - _presenceRepository.MarkUserAbsent(userId, groupNumber, lessonId, date); - } - } -} diff --git a/Demo1/Domain/UseCase/UseCaseGeneratePresence.cs b/Demo1/Domain/UseCase/UseCaseGeneratePresence.cs new file mode 100644 index 0000000..68e72de --- /dev/null +++ b/Demo1/Domain/UseCase/UseCaseGeneratePresence.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using AttendanceApp.Data.Repository; +using AttendanceApp.Domain.Models; + +namespace AttendanceApp.Domain.UseCases +{ + public class UseCaseGeneratePresence + { + private readonly IPresenceRepository _presenceRepository; + private readonly IUserRepository _userRepository; + private readonly IGroupRepository _groupRepository; + + public UseCaseGeneratePresence(IPresenceRepository presenceRepository, IUserRepository userRepository, IGroupRepository groupRepository) + { + _presenceRepository = presenceRepository; + _userRepository = userRepository; + _groupRepository = groupRepository; + } + + public void GenerateDailyPresence(int firstClassNumber, int lastClassNumber, int groupId, DateTime date) + { + var group = _groupRepository.GetGroupById(groupId); + var users = _userRepository.GetAllUsers().Where(u => u.GroupId == groupId); + + foreach (var user in users) + { + for (int classNum = firstClassNumber; classNum <= lastClassNumber; classNum++) + { + var presence = new Presence + { + ClassDate = date.Date, + ClassNumber = classNum, + IsPresent = true, + UserId = user.Id + }; + _presenceRepository.AddPresence(presence); + } + } + } + + public void GenerateWeeklyPresence(int firstClassNumber, int lastClassNumber, int groupId, DateTime startDate) + { + for (int i = 0; i < 7; i++) + { + var currentDate = startDate.AddDays(i); + GenerateDailyPresence(firstClassNumber, lastClassNumber, groupId, currentDate); + } + } + } +} \ No newline at end of file diff --git a/Demo1/Domain/UseCase/UseCasePresence.cs b/Demo1/Domain/UseCase/UseCasePresence.cs deleted file mode 100644 index 352f5a3..0000000 --- a/Demo1/Domain/UseCase/UseCasePresence.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Demo.Data.LocalData.Entity; -using Demo.Domain.Models; -using System; -using System.Collections.Generic; - -namespace Demo.Domain.UseCase -{ - public class UseCasePresence - { - private List _studentAttendances = new(); // Хранилище для посещаемости студентов - - // Метод для добавления посещаемости по занятию - public void AddLessonAttendance(LocalUser student, DateTime attendanceDate, int lessonId, bool isPresent) - { - var studentAttendance = new StudentAttendance(student.Id, 1) // Замените на 1, так как это один урок - { - AttendanceDate = attendanceDate, - LessonId = lessonId, - IsPresent = isPresent - }; - _studentAttendances.Add(studentAttendance); - } - - // Метод для получения посещаемости по занятию - public List GetLessonAttendance(int lessonId) - { - return _studentAttendances.FindAll(sa => sa.LessonId == lessonId); - } - } -} diff --git a/Demo1/Domain/UseCase/UserModel.cs b/Demo1/Domain/UseCase/UserModel.cs deleted file mode 100644 index a47bcdb..0000000 --- a/Demo1/Domain/UseCase/UserModel.cs +++ /dev/null @@ -1,6 +0,0 @@ - -internal class UserModel -{ - public string FIO { get; set; } - public Guid Guid { get; set; } -} \ No newline at end of file diff --git a/Demo1/Domain/UseCase/UserUseCase.cs b/Demo1/Domain/UseCase/UserUseCase.cs index b2a520b..1743a87 100644 --- a/Demo1/Domain/UseCase/UserUseCase.cs +++ b/Demo1/Domain/UseCase/UserUseCase.cs @@ -1,16 +1,42 @@ -using Demo.Data.Repository; +using System; +using System.Collections.Generic; +using AttendanceApp.Data.Repository; +using AttendanceApp.Domain.Models; -namespace Demo.Domain.UseCases +namespace AttendanceApp.Domain.UseCases { public class UserUseCase { - private UserRepositoryImpl _userRepository; + private readonly IUserRepository _userRepository; - public UserUseCase(UserRepositoryImpl userRepository) // Конструктор + public UserUseCase(IUserRepository userRepository) { _userRepository = userRepository; } - // Другие методы + public IEnumerable GetAllUsers() + { + return _userRepository.GetAllUsers(); + } + + public User GetUserById(Guid id) + { + return _userRepository.GetUserById(id); + } + + public void AddUser(User user) + { + _userRepository.AddUser(user); + } + + public void UpdateUser(User user) + { + _userRepository.UpdateUser(user); + } + + public void DeleteUser(Guid id) + { + _userRepository.DeleteUser(id); + } } -} +} \ No newline at end of file diff --git a/Demo1/Program.cs b/Demo1/Program.cs index 165cae2..f4eafb0 100644 --- a/Demo1/Program.cs +++ b/Demo1/Program.cs @@ -1,371 +1,14 @@ -using Demo.Data.LocalData; -using Demo.Data.LocalData.Entity; -using System; -using System.Collections.Generic; -using System.Linq; +using System; +using AttendanceApp.UI; -namespace Demo +namespace AttendanceApp { 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(); + var mainMenu = new MainMenu(); + mainMenu.Show(); } } -} +} \ No newline at end of file diff --git a/Demo1/UI/GroupConsole.cs b/Demo1/UI/GroupConsole.cs new file mode 100644 index 0000000..1d3de80 --- /dev/null +++ b/Demo1/UI/GroupConsole.cs @@ -0,0 +1,154 @@ +using System; +using AttendanceApp.Domain.UseCases; +using AttendanceApp.Domain.Models; +using AttendanceApp.Data.Exceptions; + +namespace AttendanceApp.UI +{ + public class GroupConsole + { + private readonly GroupUseCase _groupUseCase; + + public GroupConsole(GroupUseCase groupUseCase) + { + _groupUseCase = groupUseCase; + } + + public void ShowAllGroups() + { + Console.Clear(); + Console.WriteLine("=== Список всех групп ==="); + var groups = _groupUseCase.GetAllGroups(); + foreach (var group in groups) + { + Console.WriteLine($"ID: {group.Id} | Название: {group.Name}"); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void AddGroup() + { + Console.Clear(); + Console.WriteLine("=== Добавление новой группы ==="); + Console.Write("Введите название группы: "); + var groupName = Console.ReadLine(); + if (!string.IsNullOrWhiteSpace(groupName)) + { + var newGroup = new Group + { + Id = GenerateNewGroupId(), + Name = groupName + }; + _groupUseCase.AddGroup(newGroup); + Console.WriteLine("Группа успешно добавлена."); + } + else + { + Console.WriteLine("Название группы не может быть пустым."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + private int GenerateNewGroupId() + { + var groups = _groupUseCase.GetAllGroups(); + if (groups != null && groups.Any()) + { + return groups.Max(g => g.Id) + 1; + } + return 1; + } + + public void UpdateGroup() + { + Console.Clear(); + Console.WriteLine("=== Обновление группы ==="); + Console.Write("Введите ID группы: "); + var input = Console.ReadLine(); + if (int.TryParse(input, out int groupId)) + { + try + { + var group = _groupUseCase.GetGroupById(groupId); + Console.WriteLine($"Текущее название группы: {group.Name}"); + Console.Write("Введите новое название группы: "); + var newName = Console.ReadLine(); + if (!string.IsNullOrWhiteSpace(newName)) + { + group.Name = newName; + _groupUseCase.UpdateGroup(group); + Console.WriteLine("Группа успешно обновлена."); + } + else + { + Console.WriteLine("Название группы не может быть пустым."); + } + } + catch (GroupNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат ID группы."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void DeleteGroup() + { + Console.Clear(); + Console.WriteLine("=== Удаление группы ==="); + Console.Write("Введите ID группы: "); + var input = Console.ReadLine(); + if (int.TryParse(input, out int groupId)) + { + try + { + _groupUseCase.DeleteGroup(groupId); + Console.WriteLine("Группа успешно удалена."); + } + catch (GroupNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат ID группы."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void FindGroupById() + { + Console.Clear(); + Console.WriteLine("=== Поиск группы по ID ==="); + Console.Write("Введите ID группы: "); + var input = Console.ReadLine(); + if (int.TryParse(input, out int groupId)) + { + try + { + var group = _groupUseCase.GetGroupById(groupId); + Console.WriteLine($"ID: {group.Id} | Название: {group.Name}"); + } + catch (GroupNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат ID группы."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + } +} \ No newline at end of file diff --git a/Demo1/UI/MainMenu.cs b/Demo1/UI/MainMenu.cs index a4e5524..54d5fa0 100644 --- a/Demo1/UI/MainMenu.cs +++ b/Demo1/UI/MainMenu.cs @@ -1,13 +1,107 @@ -namespace Demo +using AttendanceApp.Domain.UseCases; +using AttendanceApp.Data.Repository; +using Demo1; + +namespace AttendanceApp.UI { - public static class MainMenu + public class MainMenu { - public static void DisplayMenu() // Метод для отображения меню + private readonly UserConsole _userConsole; + private readonly GroupConsole _groupConsole; + private readonly PresenceConsole _presenceConsole; + + public MainMenu() { - // Логика отображения меню - Console.WriteLine("1. Показать пользователей"); - Console.WriteLine("2. Показать группы"); - // Добавь остальные опции по необходимости + // Инициализация репозиториев и 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; + } + } } } -} +} \ No newline at end of file diff --git a/Demo1/UI/PresenceConsole.cs b/Demo1/UI/PresenceConsole.cs new file mode 100644 index 0000000..9c2f0c6 --- /dev/null +++ b/Demo1/UI/PresenceConsole.cs @@ -0,0 +1,207 @@ +using System; +using AttendanceApp.Domain.UseCases; +using AttendanceApp.Data.Repository; +using AttendanceApp.Domain.Models; +using AttendanceApp.Data.Exceptions; + +namespace AttendanceApp.UI +{ + public class PresenceConsole + { + private readonly UseCaseGeneratePresence _generatePresenceUseCase; + private readonly IPresenceRepository _presenceRepository; + private readonly IGroupRepository _groupRepository; + + public PresenceConsole(UseCaseGeneratePresence generatePresenceUseCase, IPresenceRepository presenceRepository, IGroupRepository groupRepository) + { + _generatePresenceUseCase = generatePresenceUseCase; + _presenceRepository = presenceRepository; + _groupRepository = groupRepository; + } + + public void GenerateDailyPresence() + { + Console.Clear(); + Console.WriteLine("=== Генерация посещаемости на текущий день ==="); + Console.Write("Введите номер первого занятия: "); + var firstClassInput = Console.ReadLine(); + Console.Write("Введите номер последнего занятия: "); + var lastClassInput = Console.ReadLine(); + Console.Write("Введите ID группы: "); + var groupIdInput = Console.ReadLine(); + var currentDate = DateTime.Now.Date; + + if (int.TryParse(firstClassInput, out int firstClassNum) && + int.TryParse(lastClassInput, out int lastClassNum) && + int.TryParse(groupIdInput, out int groupId)) + { + try + { + _generatePresenceUseCase.GenerateDailyPresence(firstClassNum, lastClassNum, groupId, currentDate); + Console.WriteLine("Посещаемость успешно сгенерирована на текущий день."); + } + catch (GroupNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат ввода."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void GenerateWeeklyPresence() + { + Console.Clear(); + Console.WriteLine("=== Генерация посещаемости на неделю ==="); + Console.Write("Введите номер первого занятия: "); + var firstClassInput = Console.ReadLine(); + Console.Write("Введите номер последнего занятия: "); + var lastClassInput = Console.ReadLine(); + Console.Write("Введите ID группы: "); + var groupIdInput = Console.ReadLine(); + Console.Write("Введите стартовую дату (yyyy-MM-dd): "); + var startDateInput = Console.ReadLine(); + + if (int.TryParse(firstClassInput, out int firstClassNum) && + int.TryParse(lastClassInput, out int lastClassNum) && + int.TryParse(groupIdInput, out int groupId) && + DateTime.TryParse(startDateInput, out DateTime startDate)) + { + try + { + _generatePresenceUseCase.GenerateWeeklyPresence(firstClassNum, lastClassNum, groupId, startDate); + Console.WriteLine("Посещаемость успешно сгенерирована на неделю."); + } + catch (GroupNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат ввода."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void ShowPresenceByGroupAndDate() + { + Console.Clear(); + Console.WriteLine("=== Показать посещаемость по группе и дате ==="); + Console.Write("Введите ID группы: "); + var groupIdInput = Console.ReadLine(); + Console.Write("Введите дату (yyyy-MM-dd): "); + var dateInput = Console.ReadLine(); + + if (int.TryParse(groupIdInput, out int groupId) && + DateTime.TryParse(dateInput, out DateTime date)) + { + try + { + var group = _groupRepository.GetGroupById(groupId); + var presences = _presenceRepository.GetPresenceByGroupAndDate(groupId, date); + Console.WriteLine($"Посещаемость группы {group.Name} на {date.ToShortDateString()}:"); + foreach (var presence in presences) + { + Console.WriteLine($"Пользователь ID: {presence.UserId} | Занятие №: {presence.ClassNumber} | Присутствует: {presence.IsPresent}"); + } + } + catch (GroupNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат ввода."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void MarkUserAbsent() + { + Console.Clear(); + Console.WriteLine("=== Отметить пользователя как отсутствующего ==="); + Console.Write("Введите ID пользователя (GUID): "); + var userIdInput = Console.ReadLine(); + Console.Write("Введите диапазон занятий (через запятую, например: 1,3): "); + var classRangeInput = Console.ReadLine(); + + if (Guid.TryParse(userIdInput, out Guid userId) && + classRangeInput.Contains(",") && + int.TryParse(classRangeInput.Split(',')[0], out int startClass) && + int.TryParse(classRangeInput.Split(',')[1], out int endClass)) + { + try + { + var currentDate = DateTime.Now.Date; + for (int classNum = startClass; classNum <= endClass; classNum++) + { + var presence = new Presence + { + ClassDate = currentDate, + ClassNumber = classNum, + IsPresent = false, + UserId = userId + }; + _presenceRepository.UpdatePresence(presence); + } + Console.WriteLine("Пользователь успешно отмечен как отсутствующий на указанных занятиях."); + } + catch (RepositoryException ex) + { + Console.WriteLine($"Ошибка: {ex.Message}"); + } + } + else + { + Console.WriteLine("Неверный формат ввода."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void ShowPresenceByGroup() + { + Console.Clear(); + Console.WriteLine("=== Показать посещаемость по группе ==="); + Console.Write("Введите ID группы: "); + var groupIdInput = Console.ReadLine(); + + if (int.TryParse(groupIdInput, out int groupId)) + { + try + { + var group = _groupRepository.GetGroupById(groupId); + var presences = _presenceRepository.GetPresenceByGroup(groupId); + Console.WriteLine($"Посещаемость группы {group.Name}:"); + + foreach (var presence in presences) + { + Console.WriteLine($"Дата: {presence.ClassDate.ToShortDateString()} | " + + $"Занятие №{presence.ClassNumber} | " + + $"Присутствует: {(presence.IsPresent ? "Да" : "Нет")} | " + + $"Студент ID: {presence.UserId}"); + } + } + catch (GroupNotFoundException ex) + { + Console.WriteLine($"Ошибка: {ex.Message}"); + } + } + else + { + Console.WriteLine("Неверный формат ID группы."); + } + + Console.WriteLine("\nНажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + } +} \ No newline at end of file diff --git a/Demo1/UI/UserConsole.cs b/Demo1/UI/UserConsole.cs deleted file mode 100644 index 5eaa2cd..0000000 --- a/Demo1/UI/UserConsole.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Demo.Domain.Models; - -namespace Demo.UI -{ - public class UserConsole - { - private readonly Demo.Domain.Models.User user; - - public UserConsole(Demo.Data.LocalData.Entity.LocalUser entityUser) // Принимаем Entity User - { - // Преобразуем entityUser в Domain User - this.user = (Demo.Domain.Models.User)entityUser; - } - - public void DisplayUserInfo() - { - Console.WriteLine($"Имя: {user.FullName}, ID: {user.Id}"); - } - } -} diff --git a/Demo1/UserConsole.cs b/Demo1/UserConsole.cs new file mode 100644 index 0000000..ab5ecf2 --- /dev/null +++ b/Demo1/UserConsole.cs @@ -0,0 +1,125 @@ +using System; +using AttendanceApp.Domain.UseCases; +using AttendanceApp.Domain.Models; +using AttendanceApp.Data.Exceptions; + +namespace Demo1 +{ + public class UserConsole + { + private readonly UserUseCase _userUseCase; + + public UserConsole(UserUseCase userUseCase) + { + _userUseCase = userUseCase; + } + + public void ShowAllUsers() + { + Console.Clear(); + Console.WriteLine("=== Список всех пользователей ==="); + var users = _userUseCase.GetAllUsers(); + foreach (var user in users) + { + Console.WriteLine($"ID: {user.Id} | ФИО: {user.FIO} | Группа ID: {user.GroupId}"); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void DeleteUser() + { + Console.Clear(); + Console.WriteLine("=== Удаление пользователя ==="); + Console.Write("Введите GUID пользователя: "); + var input = Console.ReadLine(); + if (Guid.TryParse(input, out Guid userId)) + { + try + { + _userUseCase.DeleteUser(userId); + Console.WriteLine("Пользователь успешно удалён."); + } + catch (UserNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат GUID."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void UpdateUser() + { + Console.Clear(); + Console.WriteLine("=== Обновление пользователя ==="); + Console.Write("Введите GUID пользователя: "); + var input = Console.ReadLine(); + if (Guid.TryParse(input, out Guid userId)) + { + try + { + var user = _userUseCase.GetUserById(userId); + Console.WriteLine($"Текующее ФИО: {user.FIO}"); + Console.Write("Введите новое ФИО (оставьте пустым для сохранения текущего): "); + var newFIO = Console.ReadLine(); + if (!string.IsNullOrWhiteSpace(newFIO)) + { + user.FIO = newFIO; + } + + Console.WriteLine($"Текущая группа ID: {user.GroupId}"); + Console.Write("Введите новый Group ID (оставьте пустым для сохранения текущего): "); + var newGroupIdInput = Console.ReadLine(); + if (int.TryParse(newGroupIdInput, out int newGroupId)) + { + user.GroupId = newGroupId; + } + + _userUseCase.UpdateUser(user); + Console.WriteLine("Пользователь успешно обновлён."); + } + catch (UserNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат GUID."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + + public void FindUserById() + { + Console.Clear(); + Console.WriteLine("=== Поиск пользователя по GUID ==="); + Console.Write("Введите GUID пользователя: "); + var input = Console.ReadLine(); + if (Guid.TryParse(input, out Guid userId)) + { + try + { + var user = _userUseCase.GetUserById(userId); + Console.WriteLine($"ID: {user.Id} | ФИО: {user.FIO} | Группа ID: {user.GroupId}"); + } + catch (UserNotFoundException ex) + { + Console.WriteLine(ex.Message); + } + } + else + { + Console.WriteLine("Неверный формат GUID."); + } + Console.WriteLine("Нажмите любую клавишу для продолжения..."); + Console.ReadKey(); + } + } +} \ No newline at end of file diff --git a/Demo1/bin/Debug/net8.0/Demo1.dll b/Demo1/bin/Debug/net8.0/Demo1.dll index 1908096183a6860fe0d8b5ad238a93a4e130e8da..96e52db2c7f8b036a4c232c7ebd5dc99e0230e5f 100644 GIT binary patch literal 29696 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 literal 29696 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�+OxtfsZ@NRyZ`XkzO-A%)@TxuT8rP{ieHmR z?jJ9|76x60RfN;c_{R3ZUa6&g((0d73VGApw|5vjiBU?n#CyA+b9COS@VR zM*D|3QwI_U$L4R9b{1uywkD82YL3+lv&@kAWS5RojdnCAQ{9$Ry$CqBdzOfAX1*a;1$ zc{;M(_CbWRFScn2Ua?rV1(T26D>gr}zh^@^tq?n@HXGuHh2-kMMN6F1l~Lgw((DOE zyl|1@S3LqRyMmOi0%`-|IEYeoATxp3FSjBDNy0^kuJ9X&2fE`)>g`L8;q2vYjBag< z_eO{N)7ad_lS7GqtniqV1A{RvaCU?p)qV&n8!W*PJLI9D!z=`Qb&&3QyW_}Ra3g+$%B18@f7V&jXg1?Bn6ygN?}jhm+r%4U7I<%px2PD z#3^0EkolaJOky`Vx@@NiRb_OGq;SSK*S=A&2u^{N%$+)qrAVcPvP~vB#eu*A&;%E4 zjY{a1Wa~auf8AG2hT?NHm41aORSIWK3L6$FOio+$aEfq!kcUPFhs4nCHHU`!`+EBDD27vFQ&P`8=`f3bt?Gn;mE^wU$&&g?LM=sSbE4K`hU&{; zdpY3~IFULrQiL-@e7%7TmP02>*GB&JKwiV0@xftdnF)SS2HcpqMrup@U@U$}t5i4- zBv(%p)hgA%=W#4iodtZMkgYP*?&OqfQO0`02=_DSEl3LUtQe)%fmQisI ztGJXe6M46nlge(Zp=yyX#+)?a+YD>h!dfQ+Jdf?*Ew)y`mlhqhCUC;E8ra zi~YQMm!MY@dT)X@BZt=>+f4-(fb*=W)-2^mDbwq4XE=d-!9$XZBG>s}I{u|a;%j}z z8>b#jR%aZJ2mnER*aN`SS5I(}uB{ zF&CVP*;)qO+x|0tag|XukZY@&EAj2(v09bXO0m{8cZ(*LQ`t0rPL0aRBjL71$F1i5 zXa3WoHVAFVZ||r&r|Nou$+u>`NVU$6ggHcapYOeR?iKf zoLs7hHdWil#C&csW>}pGxJr(dtL9AV8|z;KM&qit99B*?qC2wAEQfK&pDkVo|M5$H&?#9^C!K z>gXS1g*&(2H})a71rp8qZVuOru~kDXs~l??&l#Vmn#bhEzI!uuR!+HAyxYoU7wBQ5V?$s~FDzUMa;1Bv~(HUEcHbl!8RecE!^ zK7J3D$>mKP&56(Dj*fN6ohImb@BJL_XfdlBCf7GUCcN(oQzvX)DZ8-jye(#3b(38! zt(wqgxkj2l+3q*18&?~-QxP4#n)7)Vmf54_?#=ASsC24ccf9_>mFit-Zl=RB$wPgF#E;3dx@$0Uk4a5mNGctjz|V>f8OV>oiG*mu6>X@(8# zAJ_0g;HsLJ!G>lzFLCslXXH<{W?P&|wH!GY1#fc8bPI60=Nnz6_nob4eQNvNUwe7` zL*F9{Z%z9>TzY|oLQDo3c!gfWaHiMqv&~>Im}Bz$=N3T(ND%KAfs20|8#<8Z^IQJHQx0cLcVW`u0K~a=x?l)s%I zWb{w>2{oZ{>{tvrn&Zdn^!Rz|cJU(Nl*E+bw^e|5hC2OUT($eU(Dwq%JvP>sT@+(4 z;BbdN?$E~uTlhguRzQ50Y5Nt|^w=};&2-ufd%F;mu?Di2~9Hx+dtfyB<3U!@X8;G|Nq^XG;Ub!K4}a>BS* z)ya!ddhXylBU5UJVHH~Ni=<39;N>(%f)1lXjM(K<@}^%>7Ri$@3PZb)bf94FOkQcm zOp_}C^nt_nSx^Zf)3Iu^pXa-1YS9cRkP&xa<%f0^GnLH{;i(~X3i-wE8B%Ao6Z0}o z$GG^Se8H8X1`9i8uEr*J!9ozoZkRxlqg08H}8U+ z-xm=Me&rJG0u*)l6{jeMX48)!?BL0xS^T>)Tg{T~$>`8V*CV;D`}pa!0Xd({a+5(* zt2VCL+L}nl@d{0ae)!pRu%QY+OT0BWCG-4PKg8pg0{q+~42gh2UVcb~TZ9V56L9

ldJxgor zd%BT&Y#Oo<2N>P}z5iZ598j5vO*ZP*)#kgay#`()WJq~v)mYAaFqPMaZPG&`AyI}PUCl|cmnn37bgEK z!)17rb~oS}+5)T{@7rz!-43`GIDek8etDktt1okuPWgwcpm2WI9BxyeHXICSjp90E zE#5`$N7l6C3WKjS_%ly>ZAEJoTs(2aF%7u{DE0ZG)d5=#*p!A8{`EQSoj?=+xV(X# zqVvbsB3Kak*KsHlcn3Lw_nn7ijKlCK3W~FraIZTKJb~RNVfV?hj+NY!!hV#;92#Yl zyH7PrK(^0i=#xaRto?jV$j=Pam&XV|o+FSJ*+JOS@3JVXy9#^Ue*6*cFYvqT9gyEE z((KI;?l`bzdubmuk)-Mh(Y;CYIZ~|K@rNnp^+aQ+IBiDX1jZeP-)WasqvLeFyiq<{ zcC6=FzssSo7x~LqarLlaG5lc865;S}zZ%z3yxZ@=6-PH(_!^)A?QyiQT(4YtEXA&! zuMfK6E&k6?5_kUBZ+s0q0B%1b5=N$to`I|#JO@M{JVW$`N?XzM%ddWY#i~OC{o#Y^ z-JGU5sGoDfc-J=(!=w48Ior0bt!$VRPNk!GC%8W`7;l<$IG&obYGr;PKd=I|N!|tu zL&adKY0hwRaCxd{Uwj~%svPL+NhVT>-gIS8VqkeRHBfc1W=?n@I@s46Po9{ag@2R!U(Hh1ls|Q80XP94E>4+bU_lNr# zHqD8q@J35we>^!SJlxmPgEuP>#$LSB8`n;Wl0_3(FcFTk!uj0{;gT8nxX3 diff --git a/Demo1/bin/Debug/net8.0/Demo1.exe b/Demo1/bin/Debug/net8.0/Demo1.exe index 28ff0790eb6503aac0825f383381c9d6363588b9..cd3537b0bf361ebf28e2fb1d1b67b57968c4433c 100644 GIT binary patch delta 415 zcmZp;!_jbuV?smxxt&w?cis5)1{rq)`5uw~-nN11pKoV?>Hlx<0O{rhnQvwR>4OV? zzikH6T{nKeaR$&tWv)etj-uA}f%# zT+GhT0%c8sv;|N+iNPGmPXY2Qfe@r7jll>gZvdo|7*e+Du4H7Fu>Kl$HkAPgn1DDJ zh$lQ`WSDTC5hTO_lj8xhML+_NfZ`Y6a@+F{GOF?kY` zp3x@SKN08zV=y!WIxZ1tG05qLK(-;!;TAw=f*hCv#2{~20G*Z$R1H!C!X`jbkT;Bg Ov^mJ6?fTkG7nuN)0FONY delta 415 zcmZp;!_jbuV?slG(B#Sc#XkLggN((2{42#j-%5e$e{Wg9^pCd=Kw7>l?+qJ}j_vyM zRvt);efsm}K9K%d@a3%xnEwA3q(3M#IRj|s#QV~WKO28<{mpoL4x`ET>vI_sS%I|W zV#a>fR1*dT1_uUbhJ1!xAk1VaVXy*<7%`+Um@}jTVIq)i3dEKSW(+1kz8R2}1f(s2 zyksED5=dGA+2%mDF_1I_(ndg5Do`v12thIi+jUnmvP)Q3e)yTn00c}xoD0Mg9x^ga zIL`e7IEKypSv{XkD` K*Vksc$OHg07>(5c diff --git a/Demo1/bin/Debug/net8.0/Demo1.pdb b/Demo1/bin/Debug/net8.0/Demo1.pdb index 0a5cb9fd537d92dffcd0e4293645bb4cbcde7945..75c851c71ca3f28437b597a32fa99768b94f6dc2 100644 GIT binary patch literal 21432 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 literal 236 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 literal 29696 zcmeHwdthAUaqpb7XV0!y(n>2C$;PjhAF#F_*2}hRS+-=!4`InRmW>VA*emVI7M8T~ z?#kHsfsDaG2!R0Qk&wn`0)wsl`$Dm;`->`g`o!adQ!!9+UT9SVo{)zP)?iM*!9`*_TgX!a-9aa>9ek>x(t zIw;Hy8Rl(;u=I5CCV`1*iFh9;r*5Oa?&oJ*~CXx%x0~sdD2sJz)%xfHG<&lOD2iv;DkDpDZFr4dvy zv@hbNgX6`#N^qRbO9aQ#(m;7}@+KZx)=Z=n^Kel)+DgtF#omy2`NO|^_uYjscRJSG zpW(<^q}LinDj}GdiY|fj14R^>#%WEnOQxkR1eRB1CjXT+PX|ForZ2Gu;t@o>98~h% zQBCW(X{HiP7Fh0H?c9W6xmRQsM3kw70cV4%JoVFpB0A6MJv|X-4L?a<%nDo%!2tt- zFsYc1f0z&&LJjfIJvgFtgi@cu5LlL~f(&!#>^ilNwxA3}%Ah&dSFu4kZJ)P4i$1A2 zYz|bE=lQ3c_vGhPOjqsx1kO`|i;^#9459LTO8zQK3SH)P?4*foW*a&8aE=Y7kcn9v zJGrCV#?@IHm)*wx$=txq&rfLPE=r!ssPIcYN}zb#l>EyKTewA5WIjCMRH&Fr{*aZp zM8tlZwVWMWU}qfpBOGNv-+;|HjfPT>y8XP8^}79Rb@|EbD&yxDCiJtPiY(+~g!8e; za;Kx^cc-J}PDeDk($R9KBbr?4Xt~qzkC@--)duZ?4>(ymYbyEaY$PL9Xi8iJ(*xxp zWc$Uya>-?WZvsO6yZxRxlP-ik@KR-I!0WrW%EWj|7EcH24 zJW;C3db%F^P_Huj8o5h$_TU2NQbn;{Qd?jv@31lh=dE(11Z%6DlAp--VCQX>nW#rF z;O{a9NQ&k79eXBOJEm-7-1aQvF2BD$Sj%EWqC&?1cy>UZ>-QbsLkGvif9tTu&EIB7Uzyo>NMh+sd1Nc$802WlQ)fKL>6JRyyS}$ zaPuS8Xe;&>c_TH9SU&scGG3KZC+v_ty8b+fVY6kj*cb9u`XaUHSPoQ{V6i`hx?&$; zCH@@$<)u3!b!b1n6!iSc(up#kp`Gs96+=J_7PU=juzV7(ZUwRi59nvjaIITR<4Q`g>p)F6z7C;W}df-^Fn!* zwfwpwr#oqFL zJV+oj$c-+^kQb?G!X}6$?{zi!6Ns@L@+RO@pwgH87~0Cc$tPGu?P*4xDOeAmP*t}? z6FMR8SUHs^rLz4s_fxA{Xd^E}k1xG^?yN)jun!ESKKY*WfPp5Mhn22*_-n*C^$3*Y z`R!xPXrN>z51y?Q{-di{z6>_!=PbLOCq?GXe}u))+n*XWd3<4meUa=QF4H@s^Y*7% z2Ezst&=p|EOU_%o-$X^In2oCt6;8V(0i9UOcV+$OTzoA{P8crNrt1B}H^{JUvaSSyNLt|`1uGfP+wt0lPfpW4@(@fj}AwI!}$TQ`< z5wI(AlV>nqYBjoFt3*8sY@+xwT6{o=`A$bD^+nhausz4xpiL{qVnn^NQ(y)7f}}jx zSLvBjZu=rpu;*9W7p2yqDX*OT7~4xd&=unUggrm?5tfo-pSS}k%};&-wj}Np+>^le z+or@?HfAE(7blSwS69MB6o1RZTQzl0z{4(KD&WhXK{NXT>)00-gfEYQn_3TX-opiQ z%gLu>P=kJ0Z=uxVx*u$^Z0i_QyShIyQFn=9H~M3Vgi>GD{V@pl$1s*1w2oaeO3$BX z^nlOT6jQt0)PI%p=S^j;`ul0bN+LUtxnfp>F;Nx9}xrIbUyU^!flIC>Z{sE zbl~8yLd5oI)`8qpS3|izBp)2eO}@g(w~NGt}fsmC~1>mxAGwjl5qr5Be}+yy1_L|s4T)0!>L{@F`?sJr}0ZGpo197213(ig{8DxG zq#ScP92wi;`D}-&6Lt9I*bd7IG9yfzsKe!GA7#>+Y=;R=`tH~cGYc~#OlZFvBnZZYR%2V4QG9t5%dx8O;eZEO32pHIaD25-4JK`9WeTj|LW@2u1UqQe?ZB@zyQELOc z7`g6oX~s@~HA@0UaIUj)pR&Aw%m_}xwq5!F*`+%Iwsqb@NqwCMLJd}W1pxzDtr&uA zG>>0~FdSpTS?~}-wNpZZfPpfm7=nO-x}+F_fPqD<7=m1@^|H8`LIJmrG2ah;*v7KNl zL;Q&{=pjxX71PzU_GT5+)vgS{T=Ue+x!^_|XR5d`+mnEkUziI}}JUi^~X7L#=K>z(5!jLl7`vp<)Q))D>=Z78!(Km=Y2M4CIAk2m=3jPp}L} zROnE4N+Jkrw(jj^Lf1V6dcwK~SCnEwFcM~7F$4hvy9&h+1dO>3Ll7|LISfI-z-eD~ z5d@5j9EKn-xC|ar21k-|lzSVIwBV8=k%NqLWG{A92m(gLVF&^SPGxFTLBK#BD25>J z6VG8i>Jd45Bgf>36VG+daOF;4L7=R{VF=>P8xyX1t8|0}L9Z%@AqW_Y9EKoZR67ho z+(zD{jl4x0d8=dOZH|#OPG3Qwtkz)&0!E#~5Cn{Rham_UIJu}G2_kv55_yHhL(TjM zMjCYmValypeFSTuBV6#A*VxT#e(qj zADeN4EA$jRt3d7s>}dEdgN!QzQjyIBPJ4kxX8Ei3!m8BAFzCni1}C9p8rd?h=!5X)-E|XgDejuy|C%==ds`wUDWUE7!V1dvqNS$5Ea% zzA#A7(;*paJ@=5fR5`=9PpJBmajL6QPeH{9a+w!`PNrGvZbO!l2~(#tQnn2qBM*=* z8`0*@D0EWhZOU|l-K)DUS&h5~rk?vBtgouBs;jQ6;ew8*F#Uj=!$fnB6FrS%bs_Ms zbh2-7ZwgKH3nbUSGjCfL{R}e-l;*D6){cpwe*x|HfnMFu`vm!zI2~>;eJCd<0P;6R z9bdHZ=%~)PnWo;OIE&-0_%a{qL?)0j9P{x-k)v(+VxJ)G7LFl&Ssm_nUlPruBm z%D3r?07ENhdVT@jj_x+?%(*dOQ%m5+T$`TEVK^-CPJso&UnBSrL_c1w7|7q-~nCd2tts`?U#W z(*n`C-*W_7d{ilItv;p#R4dds?Osb%5$bjO?|n_MWTQ~I z{y)uc!n|H8)Ng%EO{48XO_jC_X{S)Nc~7EkI-ZxYWnZ?Lnnf|8ekjyjN(gn4kJ~P$ zLqc64{mSWtP_5EdNvDK*TiR;qc1bIbhvT_~K1!alLb_d350D4(frT0iQ|0e-iY59qfG z8A6Xio4lpKUl#s;FYA9<$Xt!ok)f~Iw4*to5No57oIMmx6PGS36+_v0XqS0 zdc~9Pf-jjiz39&oP8NU1^D@@`x6DhxSGXH04WGcXH8qHOhNnD2eV9ga2Q3f1HJ9-D zFzpF0LJc{K9XC@aEv8~z&_Vq;kEssqwV6swTieBoDpCD36%ffn?4Vh)Sg6yQS}6U( z3sl<-p&r)M$pRUDp=$do5|5KJapAo&_{fppZR$ivkQF#nqr+rbcd!` zXEA+KQ>=3e`LU1Teyp>E4r+>ZUP#Aw8uWY$dY z#nh=N|D&*F0d3RN6R>3gU8Size5Y`SpjT7(`wBrN6eW39PA7HSqp+o%Zq?Kiu%(>t z))cSl3VJ|OyrwJY6Pn^kRMO`)#gV9_FKcRc-aKy=ea&e@?pD!@ijvV6(LX4PK4dTO zE}{xthVV>3WY>A?s9RAYSx*NuRFk)!?$DBc-x}`{nzvN-TkPxdE~m7nI6qg?-J0V3 zTt$y->Mw$Oy)AU8LHc2YVecCHprWv&JmOtT)v`Z5MXY5#ZPpZPX{UsyILkNCNku`+ z_1;Z%x1wZLHq!%|;#t{DpU@P~%BA#qP4TQ;N?+DgGgiPB`kGKD{g(u9_IA;Ws!bxX zm42)xIeWI!YntNh*-F3A6lc#i`WH=c_G}|;A~?FxGShn*tx=T!Y0Tda>eST#gq=I+ zGEKb^`~Y1}S83|sgLir_r@fjwiq&xiB{X$AR>u`|NKm)swuXthsrd?qsM50rg-!i)hY_3Ti!VB(rvsN`zWp{p7%Z) z)D+MA)pSr(JnvW2b&8U?-A{MvHuhmZeN1t}`l)I;zgP17~?1^AGrd79$& zK1>yws=|67rp21FtODa8HED|XZUpesdDM^Xa zVfuzpchOe@f9gF<=Y>+0{aOk%i4P)qEfoueR~^hV-fO8uQ`Fex^27hsP{PC;cB~%9?)%XqU}2Rp{s3#ex}<#gz-jb zKHrAYdxjHKCDci>G2RJkakX7fm*}?V(RMxUaJ4$8eo&&|BEp7_>*=E4a!su)}3|aX}Vmj)`3}bKZfBDKZ`!fQ+U29oSg?=lZf{ z16Mo@-FCWhH9A}3!M>hHe_Om5FLNmPUV7Z}UxuVf4~fq2i%wg7XWXE_1#Z$`3FmH! z!%0AA^e;(F#`B*MzKSQq(a~d$N8)Btt=OsbyW^~8!Od|;UfHQ;deKcHt`+lU!2J&3EHZ%8GDH zj+fsjnGnnK2eR3mViz!rh+0xuPKxxgqOpY4MA7tjHL zCjf0+7X|Y#6i%293+Fp@3|C*@p}+Cf0lwyE_`iJ(^dmA0R{(#YU^TyUlz%1Obop9v zKYabKS#zoH$!PNQCrb$9S8aOw+=7%N2QQ#2I(Jmf34@>LAu)ovuIqCJdNIor+Pm2tXZo_wu_KzqMe9ZGB`c|L-@i7aZ@!SuH zou~07#3xKC`l(%};SqY>o{xL9yR3`pN_xkx!aJZ-0gG{Ws0w%JngQohJ77881XxFR z0yfge09)xZfE$G01=uV)TQp?Nt=Qqc2FUvN2!BN28R4H1{#n7F(~u=!6`5CwHM}N# z!(f{YgE=1TAzuSz$ui-W34gBe=L)|?_$|V36@IJmqr#60zeo5z!apJW6T&|!{FB0e zQ1}lD|BUd@2>)5(KP&v_g#VoIUlsnV!hcQpuL<8U#eP%lH^qKa>=%BS@aGDDuJBug z-y-~0;kODuD*UMMdxYO3{1d`IA^elVKPmiM%#-wM`$1`aP+HGO>ltZ%PVnahe@*b$ z1owEvLJwOwSMa%lw|dx%sD|uIkKiXXWX?&!AN0t$8fX3)!JpNTInN3Hs)o#YO>hHy zVa&C~9FO2-8Zu|D;4K<5r&aK%hRor;^-t{+8Zzgk;16oZoHK$yt08lq6Z};Tne&?9 zhF9#teirr!UZx>)<_g}TA#+*Gs&$eh!HKd2#d&ITAk z(*n;5JSQ-m&yvjo_Xr#jcv|3Df#(ELP;?4x7Pv>?h``eV&kCdhkrdc0aF4(dfu{wY z6?jfyxKL~mxJTfKz_S9+3B`rZRpJt)maox9Amm6I-BwaglM4@tE;r;~gW%EHX>X26Kyf z(7fLKocZVGx6PlJZ<*6Q+dNl!Zu5NF^Qh-Z&+{G=JEs74qj)6?JAnY6@ZsEtzhb=G zGzIUNUV!(dO7Lu_6i=b1;;cW7BG_HVJTG|(Pu;!)7z=(M@WS9LfY;{#Jz%?s`TxWJ z7GSOCUjhFq|33iV7CveNZppS<%>Q#A>uFVbM5mIk&9leI#Dcg5JW9h$qWO2hDd68F zV=4VggBsmE?s$9LHmJT6$*?bviJi)-DPlRxbL>3$nt=TE0=EE7+~M;9R$;ej;udx; zU@anRP#vI2^>_)%pv8bDo^XYLF9kHI0a3@3A3&2D5qX1F0GfC%RSJA1poyn=(}1@C zns{0@9e69CiRXDUfv*KLkrT6luLm@#9nWnIx&+Xq4Kx>c2cU^3ck_W?1!&T4JfAaY z51>g=>}L(U%ew%0jLLz>0Zrj?NZ=LKodKIWx&&bCJn<&zRS@F{1Ch}u={NSel4ESVQ&v;(oy(o&@n)hj>A`j zt^+jbggn8#9?+zd@YukPZXNJb@YtZ608P3X9vgHEph+K~PT;o!n%J{#0)88yiKmVH zwDS%?6Z`Nk;CBL=bQhj+<4GEzNq-{GK<@!G>0aFLGw43Rt%%QQ`WN~QZ8vT=zG-~V zc*8Kwd1j5-VqRt5YktrC2Xl(2*^~C1@Z99FM)(@V{doaTBXOCS`FzLoygZy3&HGDS z-;R|Vo#&zaGrI2WuGb=U`;qEys-ev7U1< z+c~)JU4WS`#LOJS_j*M0SIt|t6LM>XyKMJvLDt37E&cu5Qt@PJWw+*yRj+!C9kXsC?GrNV zCz4z|5pyXsVG`T3`fz)UO#)|a-(XC!)(!VL%(i%cJRKj$M(>VzDwP;)NvGq3vFKn= zTx&tg=43n-2WR!+b;-o=P|IMfEt+=PyY?lnc~60L@xgc!@{Z8jL~?sPzJF5n*#?QP z9#nI;4aJ~}8#JRcn%vK1OE*kRk7cGtu_v%(Ya$jstb47*>>?*>IF{o~&Il?Ak*%3T z)^V>!1jgn?O&xd3*zGd0hT7K*4i6w&-Tm=BHH3)8`g-6m@Q%Jz8i%&{K%$0PyXLJ} z*|2*zet;v|pF+36bX_g29Uko2Q%h}qJ?Xy0U^ICc#EO;6FjgWq+#g>_D>f(l4nke~ zz)*jD0O5+VU|T#L?d!+CtJ)h+@0JP1`#32V&U_BBW^0r!soK^qz1FsGk{)u5QU{yW z#oBw2C{Z!Gim@tb5gt|}bsbKn;{#Q#iT?h$*qo}8$oKV#*7lev#epqQ>8W`cqF<7h zML09Hs92~vYjl{+S9)aWYc&qeD@8o#)dO>RiDYT409GSyEwLE23=Lt4AdLs2SS(5_ zuP_xfMmEN;5yt2hs1+++(!N56d*%M!yH`hh_TxRNwSDpa7_AVy+s5+|;qgqY_;CuH z2#s$M)f4p4!5H5`s>iqiT!ms>+s5cXe7v5u!~Ojew;&@Xkk5`Val05S5gb33Q*2V> zn^a^bXb@Es@Ht=;u-j8=ko34Ac-kdrvmQupxJcxYvcttgo{i&mrH5l!s4l5CEY`y= znv2aS2Fz`ZrZVN0RLOJ#LSt(ibwv+mg_Qy0gw-G!_K-dy5Zu@j9o!qIY~7-EKF20f zT*I;}d@z*&$&qYLD4f?cXM;pW5au{JBHRqY^S`wZvbthy86HeCxg{Qrb@UC!X?wCS z9T!Z>Qd?pm+BaCGBf)i4&R-5K6YUUelY=YE;l6~F7nSMMoS>8sh%F�+OxtfsZ@NRyZ`XkzO-A%)@TxuT8rP{ieHmR z?jJ9|76x60RfN;c_{R3ZUa6&g((0d73VGApw|5vjiBU?n#CyA+b9COS@VR zM*D|3QwI_U$L4R9b{1uywkD82YL3+lv&@kAWS5RojdnCAQ{9$Ry$CqBdzOfAX1*a;1$ zc{;M(_CbWRFScn2Ua?rV1(T26D>gr}zh^@^tq?n@HXGuHh2-kMMN6F1l~Lgw((DOE zyl|1@S3LqRyMmOi0%`-|IEYeoATxp3FSjBDNy0^kuJ9X&2fE`)>g`L8;q2vYjBag< z_eO{N)7ad_lS7GqtniqV1A{RvaCU?p)qV&n8!W*PJLI9D!z=`Qb&&3QyW_}Ra3g+$%B18@f7V&jXg1?Bn6ygN?}jhm+r%4U7I<%px2PD z#3^0EkolaJOky`Vx@@NiRb_OGq;SSK*S=A&2u^{N%$+)qrAVcPvP~vB#eu*A&;%E4 zjY{a1Wa~auf8AG2hT?NHm41aORSIWK3L6$FOio+$aEfq!kcUPFhs4nCHHU`!`+EBDD27vFQ&P`8=`f3bt?Gn;mE^wU$&&g?LM=sSbE4K`hU&{; zdpY3~IFULrQiL-@e7%7TmP02>*GB&JKwiV0@xftdnF)SS2HcpqMrup@U@U$}t5i4- zBv(%p)hgA%=W#4iodtZMkgYP*?&OqfQO0`02=_DSEl3LUtQe)%fmQisI ztGJXe6M46nlge(Zp=yyX#+)?a+YD>h!dfQ+Jdf?*Ew)y`mlhqhCUC;E8ra zi~YQMm!MY@dT)X@BZt=>+f4-(fb*=W)-2^mDbwq4XE=d-!9$XZBG>s}I{u|a;%j}z z8>b#jR%aZJ2mnER*aN`SS5I(}uB{ zF&CVP*;)qO+x|0tag|XukZY@&EAj2(v09bXO0m{8cZ(*LQ`t0rPL0aRBjL71$F1i5 zXa3WoHVAFVZ||r&r|Nou$+u>`NVU$6ggHcapYOeR?iKf zoLs7hHdWil#C&csW>}pGxJr(dtL9AV8|z;KM&qit99B*?qC2wAEQfK&pDkVo|M5$H&?#9^C!K z>gXS1g*&(2H})a71rp8qZVuOru~kDXs~l??&l#Vmn#bhEzI!uuR!+HAyxYoU7wBQ5V?$s~FDzUMa;1Bv~(HUEcHbl!8RecE!^ zK7J3D$>mKP&56(Dj*fN6ohImb@BJL_XfdlBCf7GUCcN(oQzvX)DZ8-jye(#3b(38! zt(wqgxkj2l+3q*18&?~-QxP4#n)7)Vmf54_?#=ASsC24ccf9_>mFit-Zl=RB$wPgF#E;3dx@$0Uk4a5mNGctjz|V>f8OV>oiG*mu6>X@(8# zAJ_0g;HsLJ!G>lzFLCslXXH<{W?P&|wH!GY1#fc8bPI60=Nnz6_nob4eQNvNUwe7` zL*F9{Z%z9>TzY|oLQDo3c!gfWaHiMqv&~>Im}Bz$=N3T(ND%KAfs20|8#<8Z^IQJHQx0cLcVW`u0K~a=x?l)s%I zWb{w>2{oZ{>{tvrn&Zdn^!Rz|cJU(Nl*E+bw^e|5hC2OUT($eU(Dwq%JvP>sT@+(4 z;BbdN?$E~uTlhguRzQ50Y5Nt|^w=};&2-ufd%F;mu?Di2~9Hx+dtfyB<3U!@X8;G|Nq^XG;Ub!K4}a>BS* z)ya!ddhXylBU5UJVHH~Ni=<39;N>(%f)1lXjM(K<@}^%>7Ri$@3PZb)bf94FOkQcm zOp_}C^nt_nSx^Zf)3Iu^pXa-1YS9cRkP&xa<%f0^GnLH{;i(~X3i-wE8B%Ao6Z0}o z$GG^Se8H8X1`9i8uEr*J!9ozoZkRxlqg08H}8U+ z-xm=Me&rJG0u*)l6{jeMX48)!?BL0xS^T>)Tg{T~$>`8V*CV;D`}pa!0Xd({a+5(* zt2VCL+L}nl@d{0ae)!pRu%QY+OT0BWCG-4PKg8pg0{q+~42gh2UVcb~TZ9V56L9

ldJxgor zd%BT&Y#Oo<2N>P}z5iZ598j5vO*ZP*)#kgay#`()WJq~v)mYAaFqPMaZPG&`AyI}PUCl|cmnn37bgEK z!)17rb~oS}+5)T{@7rz!-43`GIDek8etDktt1okuPWgwcpm2WI9BxyeHXICSjp90E zE#5`$N7l6C3WKjS_%ly>ZAEJoTs(2aF%7u{DE0ZG)d5=#*p!A8{`EQSoj?=+xV(X# zqVvbsB3Kak*KsHlcn3Lw_nn7ijKlCK3W~FraIZTKJb~RNVfV?hj+NY!!hV#;92#Yl zyH7PrK(^0i=#xaRto?jV$j=Pam&XV|o+FSJ*+JOS@3JVXy9#^Ue*6*cFYvqT9gyEE z((KI;?l`bzdubmuk)-Mh(Y;CYIZ~|K@rNnp^+aQ+IBiDX1jZeP-)WasqvLeFyiq<{ zcC6=FzssSo7x~LqarLlaG5lc865;S}zZ%z3yxZ@=6-PH(_!^)A?QyiQT(4YtEXA&! zuMfK6E&k6?5_kUBZ+s0q0B%1b5=N$to`I|#JO@M{JVW$`N?XzM%ddWY#i~OC{o#Y^ z-JGU5sGoDfc-J=(!=w48Ior0bt!$VRPNk!GC%8W`7;l<$IG&obYGr;PKd=I|N!|tu zL&adKY0hwRaCxd{Uwj~%svPL+NhVT>-gIS8VqkeRHBfc1W=?n@I@s46Po9{ag@2R!U(Hh1ls|Q80XP94E>4+bU_lNr# zHqD8q@J35we>^!SJlxmPgEuP>#$LSB8`n;Wl0_3(FcFTk!uj0{;gT8nxX3 diff --git a/Demo1/obj/Debug/net8.0/Demo1.genruntimeconfig.cache b/Demo1/obj/Debug/net8.0/Demo1.genruntimeconfig.cache index 35e68cc..9ce5064 100644 --- a/Demo1/obj/Debug/net8.0/Demo1.genruntimeconfig.cache +++ b/Demo1/obj/Debug/net8.0/Demo1.genruntimeconfig.cache @@ -1 +1 @@ -efacd2456a8517402d3b53b9ec65ae943b078068dce16d9c1e2c139cbb2efa47 +e50ae4bf7831d90ecaca8867ac9c11e9f8406a06bd388d07cb6606821f2f7100 diff --git a/Demo1/obj/Debug/net8.0/Demo1.pdb b/Demo1/obj/Debug/net8.0/Demo1.pdb index 0a5cb9fd537d92dffcd0e4293645bb4cbcde7945..75c851c71ca3f28437b597a32fa99768b94f6dc2 100644 GIT binary patch literal 21432 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 Ov^mJ6?fTkG7nuN)0FONY delta 415 zcmZp;!_jbuV?slG(B#Sc#XkLggN((2{42#j-%5e$e{Wg9^pCd=Kw7>l?+qJ}j_vyM zRvt);efsm}K9K%d@a3%xnEwA3q(3M#IRj|s#QV~WKO28<{mpoL4x`ET>vI_sS%I|W zV#a>fR1*dT1_uUbhJ1!xAk1VaVXy*<7%`+Um@}jTVIq)i3dEKSW(+1kz8R2}1f(s2 zyksED5=dGA+2%mDF_1I_(ndg5Do`v12thIi+jUnmvP)Q3e)yTn00c}xoD0Mg9x^ga zIL`e7IEKypSv{XkD` K*Vksc$OHg07>(5c diff --git a/Demo1/obj/Debug/net8.0/ref/Demo1.dll b/Demo1/obj/Debug/net8.0/ref/Demo1.dll index 8085c825be82c94ebdf2d4cb0acbec1c0aeefbe4..c3f1f49098edd63103c35e0d43928d1cb65f58e7 100644 GIT binary patch literal 11776 zcmeHN3v3+Mb-i!)OG=_eT0dKgJR&KJwxks)QWUL_(o&=(Q`UzPNy%wik;B~~xz>K@ zomon>9E%Da8%ga{Mcp<)U4w$$f15afTO>{lD`k*EK!O1I0BwN)vIV$ln!qg(Cq@Iy zJ@?L+64jP9zo z|30EaDoXD@_4vzPZP%!tmZ)YT9hz!K`}tG2rg7>xS>UVYQcvrejRa-vOGfcc+6FXFEd0-!PD?t7uNq*a+)X^@=1a}7~-kIR4xmS?EJQP zd3$bYqP;2GJZnSo@_GOi((X8}p+iUZsj^khKqqY&fxtfZ;tU;WL`ap*dBM(_g`4_e(-!H0i@dJl;I&Dk z7!9V0e*6(4#me__RIhl9_6{7}tK0~@&P=tXnp3UKtt}65z!>F$jder~PY_+i^{ZGY z8wTuht~hS7$Dy^(65cR0K>d(;jchnD)Ypsa2>3Htvl{m1OQY+ZmbswshUCC>YCa(lUW4Nju2nA83^jYr>z$LS}6zaRN_ z{0>@=VsZMiXucPzjm7DE(dU58fX$?HNl=Mg{^hjT4B+MV_PrmX#64ZY!qf{4!cj-Yp!iOT~Nzur)rei z9}wHASbLId*h80)=ecA%?zWJ0j%{xa9_fm0k9*uvPH`Qo|`>t(wC! z!d`K0d0~GXdo1xAkSt-}b(t;fRhL!d_J0$-%Xv;wWW#dGVgN8ZLlLy7OKcH38?r@l zzu0z<*y8k9$TLCbgdG=Kk{%D0tD;YcjW;&k=#eKvQSPMkp(rcyfDUq5MHfPzYv_|9 z&%0<=m{Z@~813!!8Z}@dw9zJvi9b`#qT#8bXeTu9LKCN6`g|SZ)n1e7N-sIMo|SHW65KYr7B>< zk=hXZcs#1s`<|!K_JA!-u2%Q>w!4#SL+p!6SGsTes=7fwll#8Gx6Q&cV4s0!z*eZF zs`owDVO0p&Z=>xEzU>ducArTNjjrwYl2;QORlvTRNQKzv5*=!z?|C`V9b#JIA$6~B zTb>y7*_(<-&nDOQrsB~PFdjWkzKuuEeLmySbHB@Yrp9SAPg)$`h;ht-am;{mOz(B# z8!?W#)hUK@95dy!b&*qQo6l15M^uZ?NVC;;pDhJz^%;-IHlOi`3>c5d9lni6WV_FJ zMDFz4$F+C(jBDTJGp_xkKI7UuUFP&emv7@-0>-%njC0xTdvY#&e8#z?7sTxLn9P-c z@mvWQ&y~HtC(jk1$vx`vZ9G>3#&acLJXd;sPo66Qfc*&w0yB-vMegf&Em3o{?RZgYRPRqVQ}F(9y7`Mt>Rd|4sO4 zbPgE79)Wk=XC(fu`hw`Wtis-b@#_-bK}WL$yHrL0bG%*tx6^axnwvSxii*-d4&E-? z_gCuuweF1M6ULt=YN!)W-89{a*;hqZF$-&faXdq>#;dUsv)lq)P7ern3-$>f6a1K< zA(#UydK9=4`%=bF1F=iP&i8Y)QE(Gw=z^BQKHw#lLcL!GuBE>RHqh(9&GaU)l^Wsm zQQ8LVp8k@pFjf)@m5#X2kUCBe(0xh(R$$nzq0Q&WQDb;H+q7MZP5XHNkn&&x`!J;D!iC=!u*|KW7AI1uqNE3tktD zMA@f7utzW>I3qYKI45{n@QUEP;5EVPf{_@<(FN0jBZ4!6bAnd{uL)9|{nLUYf-{11 zf>#8u3F-;)6dVzp5u6je;@}eYxh6JayQnJ2ThS8UH7$X>4ee0W4Af{l+M}oysA2z83wZ}n!+z&Z$UA`= z)(w8E-v!h#pI1Zf1Zvo$+y!|zP{Ugtzv~YJH5$QQTaf|Ouu|LuISbUt#44g_45;D# zumSP}P@^2$q398yhHpBXAQyld710_+C7_0P$jy)+1x9ChWey*o1;GQwKklY^tdlqE z#`!Z1@{8iVAc@>+u(Pj0UNxlS+<-N-9%lp2Mw}bb@_TV^!r6pVj?Uc=3=g*qH&f^C z%-~^vKCct7f%#vTdc^U${k*jmf;rEg0kBo^zAEF3TD|D&6^`FbSP)p zxb&KZQVZ>`6f+~+9oLrORX| zvDdVXT;AGEj#_XP)Obzvk6d54!wqL(4kVs z$PaJ@8R56Oq{Kyx=vf+=wrsPI>M7;(W`@(UQU}bUSuG2*i{1;UW%d}BDQSlF z(lFo4GxwsCr*F}oG|kf?^`uu-!L%%6+$66+4?3ijH%Zd=2xsca+$~3p0v@BDfUY$M zbI`b5d%RM#nT~U}hVn%eZiW-uBhs55;d(r|5|Yu4UVeM0CA02gmaC8aUnai7HuM4vnMdjRR1*Tqev@$-3wIB1lS#eV$GXr3vRPX`e^|NW@-gju#Q3~x2|6~{{Df=nGFe_Joym$BS<1s%O0 z$Z>OQz!)>_>EoD@RuJ52syH7v^Tt_`LUu2+{xarr#tsU4jYfU^YhPeMO=g*gtyeTK zc^aMx}9COzSC(e$yvXVMLr z<*8i8v?NV$E?bghz?^A_n~z5fTo?3Ws<%`ya>W!<;PvG;RxX(LlL#&UHwVL0CFS2Q zCoAc5CnZ-z|99u}F5yKeV7%^dZ#e#r+O)EqmSSzM2C&?X;yTP;sIbwPxM(% z>uu+G$Q>S423k^8+^?!l;|KCc5qx=DBC52^a39U;XyKjK2Xk8=z0%0epJms@_L zjp|AzBRZ)VgxXrBH4L%jOM8aT*M7fxS0rASPsUf)^=WlYNiCiPx2qi9U)KcI6ph!- zJn5<)t{rlv!MZK3w59f#8(>Q^fs%(+?NB6Mdkkf_aM|a)vUSZ+!&KKClkFYnRM#lD zu1b%nI=wDk*D1U+sS`)4YXU`LqHGeUbX{*9%u$t0CTow0q1W?nj>EgTc1X0%jHpj1 z?g2EL9Cu`rCY8I*U9YeM9@JKyEE|(YN=1Jv3{I3w zXDoadql9!}l(9?En$(efgFU4(Z`!uFt8~{?N2(c7YF79UKX*gRTZbf<(BV<7DCX=m z$r16a#b14(h8Fx7i+@C|c&`w$*)UpLTiY{6%VIIh5EZur|zd<{eVKjK(S(7It6|4+e zZ_49`t?zB5blP$I5dRl?K*R5mL^{#T8eIEv#U*se-KUO4^z1Yf@^nPUf8rLCjB@<; zjd$-6{Jnt|6#TKqU-M7U0NzPY;1|i`koxc!T1UY9fcu@l)}mLVZ{2X-C!JW{yX77? zR1{aw;zjQj-3h$mmJuh1cUBWIi+HmwiAy7KsXpyhmfm6PBy%9 z(2p+?sY!gA@uu$lYok#}{AX7D>wFL574Tlnbxfm02AC<~dvPtm%D;oOiLaL>TP(bj zbDfh5atfDe#xkS)d`_SYHYB0^TksvB*+01s{!+p{V2f`Nx#U9`1+i235|GC~{(A}y zWe&lAT)eq8lV}HLHjeKC{I_a4&Q6Ja)YWrOacr+W%$!y)R)^D1{U}>Py%n_E4rN97 zUK;e%C-GH8VWftAZ*FR1Xxrhzk@)D4e&?^EmSi@HmQJG=Zl4F=2mBpNhUiD3LHgELUhCX*wvgAS zocETldMwZNI$i)uS?tfc>W2pRZ|$hpE!)7me7;mPyXvP+tA5Y!W!1~7I}P_uNk@pH z)m2|97k62i3A12WTMM~Nxnz~b?5&wnVV7YQQd2GUdci2>#!Soh9xYNIg6X;+tS^gQ z6J8+}RbQ`fW}GyIiqse$o0R^Vwc62hew=A#wlY2rOTH-#6want%GqqcfcbsRw)JYX^ve!ny=!020LeT9ZC!z?>YuAWg!j+Gt;LnC>nCowU zxt@Nn_SLm7Y5lLR9X^${enK)zVpj}@6|R(&2*jCN^}P_b&hs0gKH9J948BWRZiZJB!9lrEKY6=4xLg@ z5;e$w!PTXX3lZWTWqF$D(Hc(~y3PzZ8>1M##wkzdOVe`N=Fd3EBB= z@$&ZEl0^Fx73*vTij(UAP)MIdaSa`DqEw=6myx2=hG_`wvl(aTNFqX_Y~_k@G7to&~rbt@jG{X-w#uelL;otfO8Xic=Ywzuu(fHjl@{%{ph%g3>B-H5tt zArDo`*}{a)9$$$&OL)u35d9WpUL#u$jr8^6`gQQX!kX2xKUW+B=L1wbapR0u3xR&3 zwG(1<{=Ddg|Yfi?ZbVaZfIS^Y; zpO3NrGopDR^4*#!y-;%|8l_snD-o8j3Z_JJQREHcKPC7?gkv5sO7I*Jc}%g~q%l6B zm!fs_BbwFf=q7De64@x|^l1aF!rI=Aj9J-0r=rhAnMLVwt$}{Wa99kQ2I|+RHMSYT zx})DVnAM^64fIdOxAB0|s9tOvUE2y_BQCo|Vm_;VMWWm;woct)Ey7+=TWUGxW?^qc z9o8mneavAyh0Uoi>g>5s*sT5=F=qRPz38&Lg}v&s!@^#Uep5V;2zx;}Y*^S|xNKC| z8r`v-6845$?jd2Fu5D7-j+o>5m<)V7I+AnwCDPY6(AQn|Nz&1u+{fK`Fh4B}lNGFn zJ|%36uqb_6m?_MlUl#VdusXu-3Q_unT~EIv?2NEw^ci7K3#+HkhS+lYT*$M5o(b6+ z>7uabrQ8kltD&q{(X*j)tLZsmPVG0*=Y@S$%H51RVkh09-G#g4&u9zqHDHvkS35%3 z0eK+uA<+c#Mzs$brS$+EIgCz(#u&$O(23yq1RAdW5bEtg?|5-^shvFsl1P)z8^5UC zk1_Dr1sM^Kji?mvS&u!StbncFhdWI7Z1dPfddWCF&sGc=J%u|kGOwJ^Xt_}hZ1ii< zkB8XbM4!OCaE>cA%)Cw7m6`_q(}YDsjw>~P6n)m;8D6RR7yV0w<}>4yfYJHbX`h`p9@J7HR@JN!`&<1jTI1DjyrF+D z#0Iq=&~3i$0Zj|BH)B7h+kM+Rv1#+g4!qtn=CJm^}fTP^+}{zHL(75->zr ztKH$-zJpvg`0Nej60no{{dAXaGxdgmNzZTeZQnsp1ndp;M8NnC*yMZi9S|_?iOs%^ zdm><8j&9Jl__nWNw)#wJPk1(ZQf<)!_MFhy9Gt_QqY2U^p zJ>fGR>45P_pYm-y(ms>1&H6TOL%_HV0pm72=zDS-0>*7P?c2Bw0pm90d>gmHXVQke zZ{xfFA)oQxAFv0}hO%!vgEj<=?{M3<@f{wpHuVFl__i*kg&4QC>e? z$RR?Xl(H=2{Q=t-MgK0EYv?6K{|fYK@07ML)*lqT)1Qp6!w@PFuez>21 zcF#L`Iz4|IGW151+vpr&jW=q~NL}yN4~z9qPdcqwY;`p6WkmkB%6?1o?=cMQq-tqj z409D2#g1=ZtPZ;mmfL_0v|F%Suut%q;Jt#TU>2xhE!r1bNmGJP0iz<{OmTXI)~NMZ zbB@!Ul%_vX3G7|p#!lh}`VsIJS^-T9d=l8PGy~fy1^f`52KLY-@E$q`91{IUfJuqj zgH`nRRgXkYiDp{xlISmq{<6rIMZPMsu5l?HE8=l#5xGU=9+7)QPK%rt`JBk-M7|{Q zC6OIPUNT5Ir@gWB$`X2`9s0WqPZ;c zKL}nG%~g?gU24>&Mv+@Y?$NpD(}L#&F9}{2oD;k%ND=nb1>=G(f<1yM!L;DC;5oq= z!ApX(f|mv71g{EGjYJlV3$_R*1$zY3g42RCg0q5ig7GLvND8I|rv+yP=L9LnK5@aM zU`lXWa7J*pmVM>~sZRU_*VS>KCqn2+j)9GVv5l3Z?|71!n|j1?L3g^^${NN^n|mR&Y*`mP<^*q+m*LT5v{iPLLYJ zQ!pu*5}X#C5u6pA6I56k>#){dhxgU%AuR*egrA7#15R{nX^ClosLrh`K*B)0V=$6#(;6G!HU+RZxzm$>= zlL#L_1;IntKjQQ$?DH1t{t|mI!Z_)8F6$U09e0$D@zF6ybc~ITyGzHo=$Ii>%-L;puv$o`woz|3UC9;;W_bz(0cp?SVy2q2_R^k#a(2?JSbh0Y&dOVbiph?> zR>jQb?7cK$RYnh$i`5eT#$bnJ){od$*;TtD=a3lblTru!j!Fr>_H#Bv96H@=R!qq? z!BRpjqQlV9(3D-V@`;{eE@w%?cH)p#u*%uAgzU>mL|nM~e#^Ft1y|>joTr_TtQ}WL z&nfJRRnFZp$~A{%)HZ75x5HuR&zOD>k|y7HJpX7JD7vjLWQZ!joxD3%oY-EJIJfm z<1*7cf@|56xjGIkeJuid)GNJzO3HN?GGbxhpcDO43sj~*e&Ug?mdh9n$Gc*d9Vx?A z_7wA_Y|bisy_-R#a(1i=Q?E5votQAka#o-_f?k=g>9%bvKbD&s&Q`*X!)6(&9>fnq ztTV;(=^%pVe-O1Ex5_r|$Hm6J!g#Tqmz&khy{i`na6CIvEsI|eWY8KPGRLjT)F9RX zJJ35#73V=KXPy-)WcM-~C}Z_V^VD@a!fQ0@&2GnGsW7C#bG%$G@uGB2>ymy1S zGe-24>{vFJt%R(TX0Ez$awXgjz~4z_xG*-(Urp~e?Nh`P3Co?8bJoa2CWr4$?ld2? zN<}+cDVC>r0VJ773v^t3feP*CAM&_U+@I;zxVvm&y_H807v+JHiU|vY#FyJiRvL%$ zx*DR3XEs5_p=@`i(*&<=gy);PsvN22$E-4qXUhvT;^q=4CX6ky!?to4}{RtZ_8@nENeDlBI9x3lOt!$ zDVvUtJ&1=76-%QB&X#i7bhbjavsBYzvwWI8yT`EpRwR`^+i5tQFpL4q`g%99o+1`P zD!KEHAKD0)EgZHARd2e8Jn6QiuaL3Mx*f$&%3umopV!wRofkNylEDvg9^(*o#$et< zIB`H`1aHY`(eGa(aZNMyIB7Ky8XK9`Gt@9&Q)9fiZ}hRo*Xla;Xj3j0UDO|Qr9Vr$LoK0IL-X9L1Di_b# z8vO7b3`c~qOQY3^BL{|iie;<2RNCw=%3YHkiB?3ZU*SLN+~tus4+fWr!=p~48lIAE z_+_Jrc(mfzc&MQbKa#;eBK#a7A!Ji#yraEsySc;4jPGo3Gc&Eb+cN20W8-PFW2ede^q?=`sAMhFic96*9!fenQUPACft9|8UCFD@JiWLI)x9@r}s$|HF9~ zcVam*;md(@L~!veu8Mj^cN||O%7~N27X}M43-}IE6qj|xrG{ZOp~bTn*9!cKV9xPk zq#wCz$f*LaEc6pgMA{%et>pdNjxQj%uklR>3mLv)6!BG~By~)oMJAXf;d^n-!-};5 zUv=2m%aScNzMycOrFl7p%d}!S3(6cvnKDWR`M2RqQmcP*9d+>M9;k?K0lDNt83nNu z_->QKKf?D2{_52a{|WKt)|Bw2g)^JLw;cYhavbL#iG9@7b5C(>uRYA1RxeeD(@z5^ zTSUE8w7U|@iZG5rKYc>JNX_?M*z%y=n-Fgt^S2#+yd630KqS`e6pabF72l`Ya82Wz z)fg;kcy+*T!NPvyD8sgGD4&K0A05)~-RNsuG8;onr_c-Uo(GQu(bMOMz8jjP-~ZYx zd-k2p=i-yj>rhuS9s|vByjK)6*i&{jj|?B&($O5ZD<q@4d3 OV3?QP503wLJ@B6?pKTEU diff --git a/Demo1/obj/Debug/net8.0/refint/Demo1.dll b/Demo1/obj/Debug/net8.0/refint/Demo1.dll index 8085c825be82c94ebdf2d4cb0acbec1c0aeefbe4..c3f1f49098edd63103c35e0d43928d1cb65f58e7 100644 GIT binary patch literal 11776 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 OV3?QP503wLJ@B6?pKTEU diff --git a/Demo1/obj/Demo1.csproj.nuget.dgspec.json b/Demo1/obj/Demo1.csproj.nuget.dgspec.json index 6375dfc..457e579 100644 --- a/Demo1/obj/Demo1.csproj.nuget.dgspec.json +++ b/Demo1/obj/Demo1.csproj.nuget.dgspec.json @@ -1,24 +1,20 @@ { "format": 1, "restore": { - "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj": {} + "C:\\Users\\prdb\\source\\repos\\slarny4\\Demo1\\Demo1.csproj": {} }, "projects": { - "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj": { + "C:\\Users\\prdb\\source\\repos\\slarny4\\Demo1\\Demo1.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj", + "projectUniqueName": "C:\\Users\\prdb\\source\\repos\\slarny4\\Demo1\\Demo1.csproj", "projectName": "Demo1", - "projectPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj", - "packagesPath": "C:\\Users\\class_Student\\.nuget\\packages\\", - "outputPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\obj\\", + "projectPath": "C:\\Users\\prdb\\source\\repos\\slarny4\\Demo1\\Demo1.csproj", + "packagesPath": "C:\\Users\\prdb\\.nuget\\packages\\", + "outputPath": "C:\\Users\\prdb\\source\\repos\\slarny4\\Demo1\\obj\\", "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], "configFilePaths": [ - "C:\\Users\\class_Student\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Users\\prdb\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -26,7 +22,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -65,7 +60,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/Demo1/obj/Demo1.csproj.nuget.g.props b/Demo1/obj/Demo1.csproj.nuget.g.props index c241834..935b6f2 100644 --- a/Demo1/obj/Demo1.csproj.nuget.g.props +++ b/Demo1/obj/Demo1.csproj.nuget.g.props @@ -5,12 +5,11 @@ NuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\class_Student\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + C:\Users\prdb\.nuget\packages\ PackageReference - 6.9.2 + 6.9.1 - - + \ No newline at end of file diff --git a/Demo1/obj/project.assets.json b/Demo1/obj/project.assets.json index 45c4882..efc7659 100644 --- a/Demo1/obj/project.assets.json +++ b/Demo1/obj/project.assets.json @@ -8,24 +8,19 @@ "net8.0": [] }, "packageFolders": { - "C:\\Users\\class_Student\\.nuget\\packages\\": {}, - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + "C:\\Users\\prdb\\.nuget\\packages\\": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj", + "projectUniqueName": "C:\\Users\\prdb\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj", "projectName": "Demo1", - "projectPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj", - "packagesPath": "C:\\Users\\class_Student\\.nuget\\packages\\", - "outputPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\obj\\", + "projectPath": "C:\\Users\\prdb\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj", + "packagesPath": "C:\\Users\\prdb\\.nuget\\packages\\", + "outputPath": "C:\\Users\\prdb\\Source\\Repos\\slarny4\\Demo1\\obj\\", "projectStyle": "PackageReference", - "fallbackFolders": [ - "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" - ], "configFilePaths": [ - "C:\\Users\\class_Student\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Users\\prdb\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ @@ -33,7 +28,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -72,7 +66,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/Demo1/obj/project.nuget.cache b/Demo1/obj/project.nuget.cache index eb4490e..be6010c 100644 --- a/Demo1/obj/project.nuget.cache +++ b/Demo1/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "w2AQ9bufhayfzTHCnl2ow9D2CtoWJ4HAqBkDoNcbSKD2lmZQ/k0JRgy5fID2BknPulzXAnFoyjXkQhKMewdlLQ==", + "dgSpecHash": "MKsvMEFBZlOYacbOsE3EQuFzAQ4xpAuoe3utlzPRhVh/aHX1gO9yBO/IcbiHqNdf6lPRFQGRzE3l/jJIX8Sk6g==", "success": true, - "projectFilePath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj", + "projectFilePath": "C:\\Users\\prdb\\source\\repos\\slarny4\\Demo1\\Demo1.csproj", "expectedPackageFiles": [], "logs": [] } \ No newline at end of file