From 0711343c015fb48b659ab2808d85005f354d5b58 Mon Sep 17 00:00:00 2001 From: Class_Student Date: Mon, 21 Oct 2024 15:42:07 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D1=83=D0=BF=D0=B5=D1=80=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=D1=82=20=D0=BD=D0=B0=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Demo/Data/LocalData/LocalStaticData.cs | 2 +- Demo/Data/Repository/GroupRepositoryImpl.cs | 52 +++++++++++++++++++-- Demo/Data/Repository/IGroupRepository.cs | 19 ++++++++ Demo/Domain/UseCase/GroupUseCase.cs | 32 +++++++------ Demo/Domain/UseCase/UserUseCase.cs | 13 +++--- Demo/UI/GroupConsole.cs | 46 ++++++++++++++++-- Demo/UI/MainMenu.cs | 16 ++++++- 7 files changed, 149 insertions(+), 31 deletions(-) create mode 100644 Demo/Data/Repository/IGroupRepository.cs diff --git a/Demo/Data/LocalData/LocalStaticData.cs b/Demo/Data/LocalData/LocalStaticData.cs index 50e54f7..1b904f3 100644 --- a/Demo/Data/LocalData/LocalStaticData.cs +++ b/Demo/Data/LocalData/LocalStaticData.cs @@ -17,7 +17,7 @@ namespace Demo.Data.LocalData new GroupLocalEntity{ Id = 2, Name = "ИП1-22" }, new GroupLocalEntity{ Id = 3, Name = "ИП1-23" }, }; - + public static List users => new List { new UserLocalEnity{Guid=Guid.Parse("e6b9964d-ea9f-420a-84b9-af9633bbfab9"), FIO = "RandomFio", GroupID = 1 }, diff --git a/Demo/Data/Repository/GroupRepositoryImpl.cs b/Demo/Data/Repository/GroupRepositoryImpl.cs index 65646a1..a9e3818 100644 --- a/Demo/Data/Repository/GroupRepositoryImpl.cs +++ b/Demo/Data/Repository/GroupRepositoryImpl.cs @@ -1,19 +1,61 @@ using Demo.Data.LocalData; using Demo.domain.Models; using System.Collections.Generic; +using System.Linq; namespace Demo.Data.Repository { - public class GroupRepositoryImpl + public class GroupRepositoryImpl : IGroupRepository { - public List GetAllGroups; - public GroupRepositoryImpl() { + public List GetAllGroups { get; private set; } + + public GroupRepositoryImpl() + { GetAllGroups = LocalStaticData.groups; } - public void AddGroup(GroupLocalEntity newGroup) + public List GetAllGroup() { - GetAllGroups.Add(newGroup); + return GetAllGroups; + } + + public GroupLocalEntity GetGroupById(int groupID) + { + return GetAllGroups.FirstOrDefault(g => g.Id == groupID); + } + + public bool RemoveGroupById(int groupID) + { + var group = GetAllGroups.FirstOrDefault(g => g.Id == groupID); + if (group != null) + { + GetAllGroups.Remove(group); + return true; + } + return false; + } + + public bool UpdateGroupById(int groupID, GroupLocalEntity updatedGroup) + { + var existingGroup = GetAllGroups.FirstOrDefault(g => g.Id == groupID); + if (existingGroup != null) + { + existingGroup.Name = updatedGroup.Name; + return true; + } + return false; + } + + public bool AddGroup(GroupLocalEntity newGroup) + { + // Проверяем, существует ли группа с таким же ID + if (GetAllGroups.Any(g => g.Id == newGroup.Id)) + { + return false; // Группа с таким ID уже существует + } + + GetAllGroups.Add(newGroup); // Добавляем новую группу + return true; // Успешное добавление } } } diff --git a/Demo/Data/Repository/IGroupRepository.cs b/Demo/Data/Repository/IGroupRepository.cs new file mode 100644 index 0000000..e18c017 --- /dev/null +++ b/Demo/Data/Repository/IGroupRepository.cs @@ -0,0 +1,19 @@ +using Demo.domain.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Demo.Data.Repository +{ + public interface IGroupRepository + { + bool AddGroup(GroupLocalEntity newGroup); // Убедитесь, что здесь есть только один метод + List GetAllGroup(); + GroupLocalEntity GetGroupById(int groupID); + bool RemoveGroupById(int groupID); + bool UpdateGroupById(int groupID, GroupLocalEntity updatedGroup); + } + +} diff --git a/Demo/Domain/UseCase/GroupUseCase.cs b/Demo/Domain/UseCase/GroupUseCase.cs index d1b8495..11eddef 100644 --- a/Demo/Domain/UseCase/GroupUseCase.cs +++ b/Demo/Domain/UseCase/GroupUseCase.cs @@ -14,23 +14,29 @@ namespace Demo.Domain.UseCase { _repositoryGroupImpl = repositoryGroupImpl; } - - public List GetAllGroups() => _repositoryGroupImpl.GetAllGroups - .Select(it => new Group { Id = it.Id, Name = it.Name }).ToList(); - - public void AddGroup(GroupLocalEntity group) + public bool RemoveGroupById(int groupID) { - var newGroup = new Group { Id = group.Id, Name = group.Name }; - _repositoryGroupImpl.AddGroup(group); - } - - public void UpdateGroupName(int groupId, string newName) - { - var group = _repositoryGroupImpl.GetAllGroups.FirstOrDefault(g => g.Id == groupId); + var group = _repositoryGroupImpl.GetAllGroups.FirstOrDefault(g => g.Id == groupID); if (group != null) { - group.Name = newName; + _repositoryGroupImpl.RemoveGroupById(groupID); + return true; } + return false; + } + + public List GetAllGroups() => _repositoryGroupImpl.GetAllGroup() + .Select(it => new Group { Id = it.Id, Name = it.Name }).ToList(); + + public bool AddGroup(GroupLocalEntity group) + { + // Если метод возвращает true, то группа добавлена успешно + return _repositoryGroupImpl.AddGroup(group); + } + + public bool UpdateGroupById(int groupID, GroupLocalEntity updatedGroup) + { + return _repositoryGroupImpl.UpdateGroupById(groupID, updatedGroup); } } } diff --git a/Demo/Domain/UseCase/UserUseCase.cs b/Demo/Domain/UseCase/UserUseCase.cs index 7fd5dbd..7c841c8 100644 --- a/Demo/Domain/UseCase/UserUseCase.cs +++ b/Demo/Domain/UseCase/UserUseCase.cs @@ -8,20 +8,21 @@ namespace Demo.Domain.UseCase { public class UserUseCase { - private UserRepositoryImpl _repositoryUserImpl; - private GroupRepositoryImpl _repositoryGroupImpl; + private readonly UserRepositoryImpl _repositoryUserImpl; + private readonly IGroupRepository _repositoryGroupImpl; - public UserUseCase(UserRepositoryImpl repositoryImpl, GroupRepositoryImpl repositoryGroupImpl) + + public UserUseCase(UserRepositoryImpl repositoryImpl, IGroupRepository repositoryGroupImpl) { _repositoryUserImpl = repositoryImpl; _repositoryGroupImpl = repositoryGroupImpl; } - public List GetAllGroups() => _repositoryGroupImpl.GetAllGroups + private List GetAllGroups() => _repositoryGroupImpl.GetAllGroup() .Select(it => new Group { Id = it.Id, Name = it.Name }).ToList(); public List GetAllUsers() => _repositoryUserImpl.GetAllUsers - .Join(_repositoryGroupImpl.GetAllGroups, + .Join(_repositoryGroupImpl.GetAllGroup(), user => user.GroupID, group => group.Id, (user, group) => @@ -48,7 +49,7 @@ namespace Demo.Domain.UseCase var userLocal = _repositoryUserImpl.GetUserByGuid(userGuid); if (userLocal == null) return null; - var group = _repositoryGroupImpl.GetAllGroups.FirstOrDefault(g => g.Id == userLocal.GroupID); + var group = _repositoryGroupImpl.GetAllGroup().FirstOrDefault(g => g.Id == userLocal.GroupID); return new User { FIO = userLocal.FIO, diff --git a/Demo/UI/GroupConsole.cs b/Demo/UI/GroupConsole.cs index 3ae7f18..23a035c 100644 --- a/Demo/UI/GroupConsole.cs +++ b/Demo/UI/GroupConsole.cs @@ -24,6 +24,19 @@ namespace Demo.UI } } + + public void RemoveGroupById(int groupId) + { + bool success = _groupUseCase.RemoveGroupById(groupId); + if (success) + { + Console.WriteLine($"Группа с ID {groupId} была успешно удалена."); + } + else + { + Console.WriteLine($"Группа с ID {groupId} не найдена."); + } + } public void AddGroup() { Console.WriteLine("Введите название группы:"); @@ -35,8 +48,15 @@ namespace Demo.UI Name = groupName }; - _groupUseCase.AddGroup(newGroup); - Console.WriteLine("Группа добавлена."); + bool success = _groupUseCase.AddGroup(newGroup); // Используем новый метод + if (success) + { + Console.WriteLine("Группа добавлена."); + } + else + { + Console.WriteLine("Группа с таким ID уже существует."); + } } public void UpdateGroupName() @@ -46,8 +66,26 @@ namespace Demo.UI { Console.WriteLine("Введите новое название группы:"); string newGroupName = Console.ReadLine(); - _groupUseCase.UpdateGroupName(groupId, newGroupName); - Console.WriteLine("Название группы обновлено."); + + var updatedGroup = new GroupLocalEntity { Id = groupId, Name = newGroupName }; + bool success = _groupUseCase.UpdateGroupById(groupId, updatedGroup); + + if (success) + { + Console.WriteLine("Название группы обновлено."); + } + else + { + Console.WriteLine("Группа не найдена."); + } + + + Console.WriteLine("Группы после обновления:"); + var allGroups = _groupUseCase.GetAllGroups(); + foreach (var group in allGroups) + { + Console.WriteLine($"Id = {group.Id}, Name = \"{group.Name}\""); + } } else { diff --git a/Demo/UI/MainMenu.cs b/Demo/UI/MainMenu.cs index 9e1b5ce..b8c21c4 100644 --- a/Demo/UI/MainMenu.cs +++ b/Demo/UI/MainMenu.cs @@ -27,7 +27,8 @@ namespace Demo.UI Console.WriteLine("4 - Вывести все группы"); Console.WriteLine("5 - Найти пользователя по GUID"); Console.WriteLine("6 - Добавить группу"); - Console.WriteLine("7 - Изменить название группы"); + Console.WriteLine("7 - Обновить группу по ID"); + Console.WriteLine("8 - Удалить группу по ID"); Console.WriteLine("0 - Выход"); var input = Console.ReadLine(); @@ -96,8 +97,19 @@ namespace Demo.UI case "7": _groupConsoleUI.UpdateGroupName(); break; + case "8": + Console.WriteLine("Введите ID группы для удаления:"); + if (int.TryParse(Console.ReadLine(), out int groupId)) + { + _groupConsoleUI.RemoveGroupById(groupId); + } + else + { + Console.WriteLine("Некорректный ID группы."); + } + break; case "0": - return; + return; default: Console.WriteLine("Некорректный выбор. Попробуйте снова."); break;