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 1908096..96e52db 100644 Binary files a/Demo1/bin/Debug/net8.0/Demo1.dll and b/Demo1/bin/Debug/net8.0/Demo1.dll differ diff --git a/Demo1/bin/Debug/net8.0/Demo1.exe b/Demo1/bin/Debug/net8.0/Demo1.exe index 28ff079..cd3537b 100644 Binary files a/Demo1/bin/Debug/net8.0/Demo1.exe and b/Demo1/bin/Debug/net8.0/Demo1.exe differ diff --git a/Demo1/bin/Debug/net8.0/Demo1.pdb b/Demo1/bin/Debug/net8.0/Demo1.pdb index 0a5cb9f..75c851c 100644 Binary files a/Demo1/bin/Debug/net8.0/Demo1.pdb and b/Demo1/bin/Debug/net8.0/Demo1.pdb differ diff --git a/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfo.cs b/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfo.cs index 9d5387f..2a08e56 100644 --- a/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfo.cs +++ b/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Demo1")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+df8314a5edf631ad091dc7bfca86e0f6f5c724cb")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+aa3336ca1b11c1685b7d76482c3b1b14608267a3")] [assembly: System.Reflection.AssemblyProductAttribute("Demo1")] [assembly: System.Reflection.AssemblyTitleAttribute("Demo1")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfoInputs.cache b/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfoInputs.cache index 92a11d1..57d74ec 100644 --- a/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfoInputs.cache +++ b/Demo1/obj/Debug/net8.0/Demo1.AssemblyInfoInputs.cache @@ -1 +1 @@ -221e0c768b0d742a8ba97ec496228ed7816062bae551ae6dca0fa140cf72a07e +40dc55726398d581826007a1a5883ce5e0fdddf730f9f50a2bf471c9f635d905 diff --git a/Demo1/obj/Debug/net8.0/Demo1.GeneratedMSBuildEditorConfig.editorconfig b/Demo1/obj/Debug/net8.0/Demo1.GeneratedMSBuildEditorConfig.editorconfig index 5df1f87..1b23fab 100644 --- a/Demo1/obj/Debug/net8.0/Demo1.GeneratedMSBuildEditorConfig.editorconfig +++ b/Demo1/obj/Debug/net8.0/Demo1.GeneratedMSBuildEditorConfig.editorconfig @@ -8,6 +8,6 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = Demo1 -build_property.ProjectDir = C:\Users\class_Student\Source\Repos\slarny4\Demo1\ +build_property.ProjectDir = C:\Users\prdb\source\repos\slarny4\Demo1\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/Demo1/obj/Debug/net8.0/Demo1.assets.cache b/Demo1/obj/Debug/net8.0/Demo1.assets.cache index 623309e..447f372 100644 Binary files a/Demo1/obj/Debug/net8.0/Demo1.assets.cache and b/Demo1/obj/Debug/net8.0/Demo1.assets.cache differ diff --git a/Demo1/obj/Debug/net8.0/Demo1.csproj.CoreCompileInputs.cache b/Demo1/obj/Debug/net8.0/Demo1.csproj.CoreCompileInputs.cache index 0e779c3..551988b 100644 --- a/Demo1/obj/Debug/net8.0/Demo1.csproj.CoreCompileInputs.cache +++ b/Demo1/obj/Debug/net8.0/Demo1.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -1d50d3593a629a5dd88b49d245e89f299208f24874e2084a9b532f66739617bd +5d4a55edd9d214d3ff28a518ab18442791e4dd2a2a9a71ab193e8c59dd5b546e diff --git a/Demo1/obj/Debug/net8.0/Demo1.csproj.FileListAbsolute.txt b/Demo1/obj/Debug/net8.0/Demo1.csproj.FileListAbsolute.txt index 7d763eb..da1d548 100644 --- a/Demo1/obj/Debug/net8.0/Demo1.csproj.FileListAbsolute.txt +++ b/Demo1/obj/Debug/net8.0/Demo1.csproj.FileListAbsolute.txt @@ -26,3 +26,17 @@ C:\Users\class_Student\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.dll C:\Users\class_Student\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.pdb C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.genruntimeconfig.cache C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\ref\Demo1.dll +C:\Users\prdb\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.exe +C:\Users\prdb\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.deps.json +C:\Users\prdb\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.runtimeconfig.json +C:\Users\prdb\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.dll +C:\Users\prdb\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.pdb +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.AssemblyInfoInputs.cache +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.AssemblyInfo.cs +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.csproj.CoreCompileInputs.cache +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.dll +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\refint\Demo1.dll +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.pdb +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.genruntimeconfig.cache +C:\Users\prdb\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\ref\Demo1.dll diff --git a/Demo1/obj/Debug/net8.0/Demo1.dll b/Demo1/obj/Debug/net8.0/Demo1.dll index 1908096..96e52db 100644 Binary files a/Demo1/obj/Debug/net8.0/Demo1.dll and b/Demo1/obj/Debug/net8.0/Demo1.dll differ 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 0a5cb9f..75c851c 100644 Binary files a/Demo1/obj/Debug/net8.0/Demo1.pdb and b/Demo1/obj/Debug/net8.0/Demo1.pdb differ diff --git a/Demo1/obj/Debug/net8.0/apphost.exe b/Demo1/obj/Debug/net8.0/apphost.exe index 28ff079..cd3537b 100644 Binary files a/Demo1/obj/Debug/net8.0/apphost.exe and b/Demo1/obj/Debug/net8.0/apphost.exe differ diff --git a/Demo1/obj/Debug/net8.0/ref/Demo1.dll b/Demo1/obj/Debug/net8.0/ref/Demo1.dll index 8085c82..c3f1f49 100644 Binary files a/Demo1/obj/Debug/net8.0/ref/Demo1.dll and b/Demo1/obj/Debug/net8.0/ref/Demo1.dll differ diff --git a/Demo1/obj/Debug/net8.0/refint/Demo1.dll b/Demo1/obj/Debug/net8.0/refint/Demo1.dll index 8085c82..c3f1f49 100644 Binary files a/Demo1/obj/Debug/net8.0/refint/Demo1.dll and b/Demo1/obj/Debug/net8.0/refint/Demo1.dll differ 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