проект
This commit is contained in:
parent
6012168a59
commit
f316bb5345
@ -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<GroupLocalEntity> GetAllGroups() => LocalStaticData.groups;
|
||||
public List<GroupLocalEntity> GetAllGroups;
|
||||
public GroupRepositoryImpl() {
|
||||
GetAllGroups = LocalStaticData.groups;
|
||||
}
|
||||
|
||||
public void AddGroup(GroupLocalEntity newGroup)
|
||||
{
|
||||
GetAllGroups.Add(newGroup);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
36
Demo/Domain/UseCase/GroupUseCase.cs
Normal file
36
Demo/Domain/UseCase/GroupUseCase.cs
Normal file
@ -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<Group> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups()
|
||||
.Select(it => new Group { Id = it.Id, Name = it.Name}).ToList();
|
||||
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups
|
||||
.Select(it => new Group { Id = it.Id, Name = it.Name }).ToList();
|
||||
|
||||
public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUsers
|
||||
.Join(_repositoryGroupImpl.GetAllGroups(),
|
||||
.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 } }
|
||||
new User { FIO = user.FIO, Guid = user.Guid, Group = new Group { Id = group.Id, Name = group.Name } }
|
||||
).ToList();
|
||||
|
||||
public bool RemoveUserByGuid(Guid 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
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
MainMenuUI mainMenuUI = new MainMenuUI(userUseCase, groupUseCase);
|
||||
}
|
||||
}
|
||||
|
58
Demo/UI/GroupConsole.cs
Normal file
58
Demo/UI/GroupConsole.cs
Normal file
@ -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 группы.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
{
|
||||
private UserConsoleUI _userConsoleUI;
|
||||
private GroupConsoleUI _groupConsoleUI;
|
||||
|
||||
UserConsoleUI _userConsoleUI;
|
||||
|
||||
public MainMenuUI(UserUseCase 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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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("Пользователь не найден.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user