проект

This commit is contained in:
Class_Student 2024-10-18 12:51:43 +03:00
parent 6012168a59
commit f316bb5345
7 changed files with 266 additions and 51 deletions

View File

@ -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);
}
}
}

View 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;
}
}
}
}

View File

@ -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,22 +17,24 @@ namespace Demo.Domain.UseCase
_repositoryGroupImpl = repositoryGroupImpl;
}
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups()
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("");
@ -42,5 +42,19 @@ namespace Demo.Domain.UseCase
if (group == null) throw new Exception("");
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
};
}
}
}

View File

@ -1,10 +1,16 @@

using Demo.Data.Repository;
using Demo.Data.Repository;
using Demo.Domain.UseCase;
using Demo.UI;
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
View 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 группы.");
}
}
}
}

View File

@ -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;
}
}
}
}
}

View File

@ -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("Пользователь не найден.");
}
}
}
}