From f316bb534595776942edad47c610da16ba5b6aba Mon Sep 17 00:00:00 2001 From: Class_Student Date: Fri, 18 Oct 2024 12:51:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Demo/Data/Repository/GroupRepositoryImpl.cs | 14 ++- Demo/Domain/UseCase/GroupUseCase.cs | 36 +++++++ Demo/Domain/UseCase/UserUseCase.cs | 44 +++++--- Demo/Program.cs | 18 ++-- Demo/UI/GroupConsole.cs | 58 +++++++++++ Demo/UI/MainMenu.cs | 107 ++++++++++++++++---- Demo/UI/UserConsole.cs | 40 ++++++-- 7 files changed, 266 insertions(+), 51 deletions(-) create mode 100644 Demo/Domain/UseCase/GroupUseCase.cs create mode 100644 Demo/UI/GroupConsole.cs diff --git a/Demo/Data/Repository/GroupRepositoryImpl.cs b/Demo/Data/Repository/GroupRepositoryImpl.cs index e5b9a29..65646a1 100644 --- a/Demo/Data/Repository/GroupRepositoryImpl.cs +++ b/Demo/Data/Repository/GroupRepositoryImpl.cs @@ -1,15 +1,19 @@ using Demo.Data.LocalData; 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 class GroupRepositoryImpl { - public List GetAllGroups() => LocalStaticData.groups; + public List GetAllGroups; + public GroupRepositoryImpl() { + GetAllGroups = LocalStaticData.groups; + } + + public void AddGroup(GroupLocalEntity newGroup) + { + GetAllGroups.Add(newGroup); + } } } diff --git a/Demo/Domain/UseCase/GroupUseCase.cs b/Demo/Domain/UseCase/GroupUseCase.cs new file mode 100644 index 0000000..d1b8495 --- /dev/null +++ b/Demo/Domain/UseCase/GroupUseCase.cs @@ -0,0 +1,36 @@ +using Demo.Data.LocalData; +using Demo.Data.Repository; +using Demo.domain.Models; +using System.Collections.Generic; +using System.Linq; + +namespace Demo.Domain.UseCase +{ + public class GroupUseCase + { + private GroupRepositoryImpl _repositoryGroupImpl; + + public GroupUseCase(GroupRepositoryImpl repositoryGroupImpl) + { + _repositoryGroupImpl = repositoryGroupImpl; + } + + public List GetAllGroups() => _repositoryGroupImpl.GetAllGroups + .Select(it => new Group { Id = it.Id, Name = it.Name }).ToList(); + + public void AddGroup(GroupLocalEntity group) + { + 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); + if (group != null) + { + group.Name = newName; + } + } + } +} diff --git a/Demo/Domain/UseCase/UserUseCase.cs b/Demo/Domain/UseCase/UserUseCase.cs index f1f44e1..7fd5dbd 100644 --- a/Demo/Domain/UseCase/UserUseCase.cs +++ b/Demo/Domain/UseCase/UserUseCase.cs @@ -3,8 +3,6 @@ using Demo.domain.Models; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Demo.Domain.UseCase { @@ -19,28 +17,44 @@ namespace Demo.Domain.UseCase _repositoryGroupImpl = repositoryGroupImpl; } - public List GetAllGroups() => _repositoryGroupImpl.GetAllGroups() - .Select(it => new Group { Id = it.Id, Name = it.Name}).ToList(); - public List GetAllUsers() => _repositoryUserImpl.GetAllUsers - .Join(_repositoryGroupImpl.GetAllGroups(), + public List GetAllGroups() => _repositoryGroupImpl.GetAllGroups + .Select(it => new Group { Id = it.Id, Name = it.Name }).ToList(); + + public List GetAllUsers() => _repositoryUserImpl.GetAllUsers + .Join(_repositoryGroupImpl.GetAllGroups, user => user.GroupID, group => group.Id, - (user, group) => - new User { FIO = user.FIO, - Guid = user.Guid, - Group = new Group {Id = group.Id, Name = group.Name } } - ).ToList(); + (user, group) => + new User { FIO = user.FIO, Guid = user.Guid, Group = new Group { Id = group.Id, Name = group.Name } } + ).ToList(); - public bool RemoveUserByGuid(Guid userGuid) { - return _repositoryUserImpl.RemoveUserByGuid(userGuid); + public bool RemoveUserByGuid(Guid userGuid) + { + return _repositoryUserImpl.RemoveUserByGuid(userGuid); } - public User UpdateUser(User user) { + + public User UpdateUser(User user) + { UserLocalEnity userLocalEnity = new UserLocalEnity { FIO = user.FIO, GroupID = user.Group.Id, Guid = user.Guid }; UserLocalEnity? result = _repositoryUserImpl.UpdateUser(userLocalEnity); if (result == null) throw new Exception(""); Group? group = GetAllGroups().FirstOrDefault(it => it.Id == result!.GroupID); if (group == null) throw new Exception(""); - return new User { FIO = user.FIO, Guid = user.Guid, Group = group}; + return new User { FIO = user.FIO, Guid = user.Guid, Group = group }; + } + + public User? FindUserByGuid(Guid userGuid) + { + var userLocal = _repositoryUserImpl.GetUserByGuid(userGuid); + if (userLocal == null) return null; + + var group = _repositoryGroupImpl.GetAllGroups.FirstOrDefault(g => g.Id == userLocal.GroupID); + return new User + { + FIO = userLocal.FIO, + Guid = userLocal.Guid, + Group = group != null ? new Group { Id = group.Id, Name = group.Name } : null + }; } } } diff --git a/Demo/Program.cs b/Demo/Program.cs index 9ebb621..42eff79 100644 --- a/Demo/Program.cs +++ b/Demo/Program.cs @@ -1,10 +1,16 @@ - -using Demo.Data.Repository; +using Demo.Data.Repository; using Demo.Domain.UseCase; using Demo.UI; -GroupRepositoryImpl groupRepositoryImpl = new GroupRepositoryImpl(); -UserRepositoryImpl userRepositoryImpl = new UserRepositoryImpl(); -UserUseCase userUseCase = new UserUseCase(userRepositoryImpl, groupRepositoryImpl); +class Program +{ + static void Main(string[] args) + { + GroupRepositoryImpl groupRepositoryImpl = new GroupRepositoryImpl(); + UserRepositoryImpl userRepositoryImpl = new UserRepositoryImpl(); + UserUseCase userUseCase = new UserUseCase(userRepositoryImpl, groupRepositoryImpl); + GroupUseCase groupUseCase = new GroupUseCase(groupRepositoryImpl); -MainMenuUI mainMenuUI = new MainMenuUI(userUseCase); \ No newline at end of file + MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase); + } +} diff --git a/Demo/UI/GroupConsole.cs b/Demo/UI/GroupConsole.cs new file mode 100644 index 0000000..3ae7f18 --- /dev/null +++ b/Demo/UI/GroupConsole.cs @@ -0,0 +1,58 @@ +using Demo.Data.LocalData; +using Demo.domain.Models; +using Demo.Domain.UseCase; +using System; +using System.Collections.Generic; + +namespace Demo.UI +{ + public class GroupConsoleUI + { + private GroupUseCase _groupUseCase; + + public GroupConsoleUI(GroupUseCase groupUseCase) + { + _groupUseCase = groupUseCase; + } + + public void DisplayAllGroups() + { + Console.WriteLine("Список групп:"); + foreach (var group in _groupUseCase.GetAllGroups()) + { + Console.WriteLine($"Id = {group.Id}, Name = \"{group.Name}\""); + } + } + + public void AddGroup() + { + Console.WriteLine("Введите название группы:"); + string groupName = Console.ReadLine(); + + var newGroup = new GroupLocalEntity + { + Id = LocalStaticData.groups.Max(g => g.Id) + 1, + Name = groupName + }; + + _groupUseCase.AddGroup(newGroup); + Console.WriteLine("Группа добавлена."); + } + + public void UpdateGroupName() + { + Console.WriteLine("Введите ID группы для изменения названия:"); + if (int.TryParse(Console.ReadLine(), out int groupId)) + { + Console.WriteLine("Введите новое название группы:"); + string newGroupName = Console.ReadLine(); + _groupUseCase.UpdateGroupName(groupId, newGroupName); + Console.WriteLine("Название группы обновлено."); + } + else + { + Console.WriteLine("Некорректный ID группы."); + } + } + } +} diff --git a/Demo/UI/MainMenu.cs b/Demo/UI/MainMenu.cs index ce13884..9e1b5ce 100644 --- a/Demo/UI/MainMenu.cs +++ b/Demo/UI/MainMenu.cs @@ -1,37 +1,108 @@ -using Demo.Domain.UseCase; +using Demo.domain.Models; +using Demo.Domain.UseCase; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Demo.UI { public class MainMenuUI { - - UserConsoleUI _userConsoleUI; + private UserConsoleUI _userConsoleUI; + private GroupConsoleUI _groupConsoleUI; - public MainMenuUI(UserUseCase userUseCase) { - _userConsoleUI = new UserConsoleUI(userUseCase); + public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase) + { + _userConsoleUI = new UserConsoleUI(userUseCase); + _groupConsoleUI = new GroupConsoleUI(groupUseCase); DisplayMenu(); - } - private void DisplayMenu() { + private void DisplayMenu() + { while (true) { - switch (Console.ReadLine()) - { - case "1": _userConsoleUI.DisplayAllUsers(); break; - case "2": _userConsoleUI.RemoveUserByGuid(Guid.Parse(Console.ReadLine())); break; + Console.WriteLine("Выберите действие:"); + Console.WriteLine("1 - Вывести всех пользователей"); + Console.WriteLine("2 - Удалить пользователя по GUID"); + Console.WriteLine("3 - Обновить пользователя по GUID"); + Console.WriteLine("4 - Вывести все группы"); + Console.WriteLine("5 - Найти пользователя по GUID"); + Console.WriteLine("6 - Добавить группу"); + Console.WriteLine("7 - Изменить название группы"); + Console.WriteLine("0 - Выход"); - default: DisplayMenu(); + var input = Console.ReadLine(); + + switch (input) + { + case "1": + _userConsoleUI.DisplayAllUsers(); + break; + case "2": + Console.WriteLine("Введите GUID пользователя для удаления:"); + if (Guid.TryParse(Console.ReadLine(), out var userGuid)) + { + _userConsoleUI.RemoveUserByGuid(userGuid); + } + break; + case "3": + Console.WriteLine("Введите GUID пользователя для обновления:"); + if (Guid.TryParse(Console.ReadLine(), out Guid updateGuid)) + { + Console.WriteLine("Введите новое имя пользователя:"); + string newFio = Console.ReadLine(); + + Console.WriteLine("Введите новый ID группы:"); + if (int.TryParse(Console.ReadLine(), out int newGroupId)) + { + Console.WriteLine("Введите название группы:"); + string newGroupName = Console.ReadLine(); + + var updatedUser = new User + { + Guid = updateGuid, + FIO = newFio, + Group = new Group { Id = newGroupId, Name = newGroupName } + }; + + _userConsoleUI.UpdateUser(updatedUser); + } + else + { + Console.WriteLine("Некорректный ID группы."); + } + } + else + { + Console.WriteLine("Некорректный GUID."); + } + break; + case "4": + _groupConsoleUI.DisplayAllGroups(); + break; + case "5": + Console.WriteLine("Введите GUID пользователя для поиска:"); + if (Guid.TryParse(Console.ReadLine(), out var findUserGuid)) + { + _userConsoleUI.FindUserByGuid(findUserGuid); + } + else + { + Console.WriteLine("Некорректный GUID."); + } + break; + case "6": + _groupConsoleUI.AddGroup(); + break; + case "7": + _groupConsoleUI.UpdateGroupName(); + break; + case "0": + return; + default: + Console.WriteLine("Некорректный выбор. Попробуйте снова."); break; } - } } - } } diff --git a/Demo/UI/UserConsole.cs b/Demo/UI/UserConsole.cs index 15ec296..562b890 100644 --- a/Demo/UI/UserConsole.cs +++ b/Demo/UI/UserConsole.cs @@ -1,21 +1,21 @@ -using Demo.Domain.UseCase; +using Demo.domain.Models; +using Demo.Domain.UseCase; using System; -using System.Collections.Generic; -using System.Linq; using System.Text; -using System.Threading.Tasks; namespace Demo.UI { public class UserConsoleUI { UserUseCase _userUseCase; - public UserConsoleUI(UserUseCase userUseCase) { + + public UserConsoleUI(UserUseCase userUseCase) + { _userUseCase = userUseCase; } - public void RemoveUserByGuid(Guid guidUser) { - + public void RemoveUserByGuid(Guid guidUser) + { string output = _userUseCase.RemoveUserByGuid(guidUser) ? "Пользователь удален" : "Пользователь не удален"; Console.WriteLine(output); } @@ -29,5 +29,31 @@ namespace Demo.UI } Console.WriteLine(userOutput); } + + public void FindUserByGuid(Guid userGuid) + { + var user = _userUseCase.FindUserByGuid(userGuid); + if (user == null) + { + Console.WriteLine("Пользователь не найден."); + } + else + { + Console.WriteLine($"Найден пользователь: {user.Guid}, {user.FIO}, Группа: {user.Group?.Name}"); + } + } + + public void UpdateUser(User updatedUser) + { + var result = _userUseCase.UpdateUser(updatedUser); + if (result != null) + { + Console.WriteLine("Пользователь обновлён."); + } + else + { + Console.WriteLine("Пользователь не найден."); + } + } } }