супер проект на 5

This commit is contained in:
Class_Student 2024-10-21 15:42:07 +03:00
parent f316bb5345
commit 0711343c01
7 changed files with 149 additions and 31 deletions

View File

@ -1,19 +1,61 @@
using Demo.Data.LocalData; using Demo.Data.LocalData;
using Demo.domain.Models; using Demo.domain.Models;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace Demo.Data.Repository namespace Demo.Data.Repository
{ {
public class GroupRepositoryImpl public class GroupRepositoryImpl : IGroupRepository
{
public List<GroupLocalEntity> GetAllGroups { get; private set; }
public GroupRepositoryImpl()
{ {
public List<GroupLocalEntity> GetAllGroups;
public GroupRepositoryImpl() {
GetAllGroups = LocalStaticData.groups; GetAllGroups = LocalStaticData.groups;
} }
public void AddGroup(GroupLocalEntity newGroup) public List<GroupLocalEntity> 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; // Успешное добавление
} }
} }
} }

View File

@ -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<GroupLocalEntity> GetAllGroup();
GroupLocalEntity GetGroupById(int groupID);
bool RemoveGroupById(int groupID);
bool UpdateGroupById(int groupID, GroupLocalEntity updatedGroup);
}
}

View File

@ -14,23 +14,29 @@ namespace Demo.Domain.UseCase
{ {
_repositoryGroupImpl = repositoryGroupImpl; _repositoryGroupImpl = repositoryGroupImpl;
} }
public bool RemoveGroupById(int groupID)
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 }; var group = _repositoryGroupImpl.GetAllGroups.FirstOrDefault(g => g.Id == groupID);
_repositoryGroupImpl.AddGroup(group);
}
public void UpdateGroupName(int groupId, string newName)
{
var group = _repositoryGroupImpl.GetAllGroups.FirstOrDefault(g => g.Id == groupId);
if (group != null) if (group != null)
{ {
group.Name = newName; _repositoryGroupImpl.RemoveGroupById(groupID);
} return true;
}
return false;
}
public List<Group> 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);
} }
} }
} }

View File

@ -8,20 +8,21 @@ namespace Demo.Domain.UseCase
{ {
public class UserUseCase public class UserUseCase
{ {
private UserRepositoryImpl _repositoryUserImpl; private readonly UserRepositoryImpl _repositoryUserImpl;
private GroupRepositoryImpl _repositoryGroupImpl; private readonly IGroupRepository _repositoryGroupImpl;
public UserUseCase(UserRepositoryImpl repositoryImpl, GroupRepositoryImpl repositoryGroupImpl)
public UserUseCase(UserRepositoryImpl repositoryImpl, IGroupRepository repositoryGroupImpl)
{ {
_repositoryUserImpl = repositoryImpl; _repositoryUserImpl = repositoryImpl;
_repositoryGroupImpl = repositoryGroupImpl; _repositoryGroupImpl = repositoryGroupImpl;
} }
public List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroups private List<Group> GetAllGroups() => _repositoryGroupImpl.GetAllGroup()
.Select(it => new Group { Id = it.Id, Name = it.Name }).ToList(); .Select(it => new Group { Id = it.Id, Name = it.Name }).ToList();
public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUsers public List<User> GetAllUsers() => _repositoryUserImpl.GetAllUsers
.Join(_repositoryGroupImpl.GetAllGroups, .Join(_repositoryGroupImpl.GetAllGroup(),
user => user.GroupID, user => user.GroupID,
group => group.Id, group => group.Id,
(user, group) => (user, group) =>
@ -48,7 +49,7 @@ namespace Demo.Domain.UseCase
var userLocal = _repositoryUserImpl.GetUserByGuid(userGuid); var userLocal = _repositoryUserImpl.GetUserByGuid(userGuid);
if (userLocal == null) return null; 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 return new User
{ {
FIO = userLocal.FIO, FIO = userLocal.FIO,

View File

@ -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() public void AddGroup()
{ {
Console.WriteLine("Введите название группы:"); Console.WriteLine("Введите название группы:");
@ -35,9 +48,16 @@ namespace Demo.UI
Name = groupName Name = groupName
}; };
_groupUseCase.AddGroup(newGroup); bool success = _groupUseCase.AddGroup(newGroup); // Используем новый метод
if (success)
{
Console.WriteLine("Группа добавлена."); Console.WriteLine("Группа добавлена.");
} }
else
{
Console.WriteLine("Группа с таким ID уже существует.");
}
}
public void UpdateGroupName() public void UpdateGroupName()
{ {
@ -46,10 +66,28 @@ namespace Demo.UI
{ {
Console.WriteLine("Введите новое название группы:"); Console.WriteLine("Введите новое название группы:");
string newGroupName = Console.ReadLine(); string newGroupName = Console.ReadLine();
_groupUseCase.UpdateGroupName(groupId, newGroupName);
var updatedGroup = new GroupLocalEntity { Id = groupId, Name = newGroupName };
bool success = _groupUseCase.UpdateGroupById(groupId, updatedGroup);
if (success)
{
Console.WriteLine("Название группы обновлено."); Console.WriteLine("Название группы обновлено.");
} }
else else
{
Console.WriteLine("Группа не найдена.");
}
Console.WriteLine("Группы после обновления:");
var allGroups = _groupUseCase.GetAllGroups();
foreach (var group in allGroups)
{
Console.WriteLine($"Id = {group.Id}, Name = \"{group.Name}\"");
}
}
else
{ {
Console.WriteLine("Некорректный ID группы."); Console.WriteLine("Некорректный ID группы.");
} }

View File

@ -27,7 +27,8 @@ namespace Demo.UI
Console.WriteLine("4 - Вывести все группы"); Console.WriteLine("4 - Вывести все группы");
Console.WriteLine("5 - Найти пользователя по GUID"); Console.WriteLine("5 - Найти пользователя по GUID");
Console.WriteLine("6 - Добавить группу"); Console.WriteLine("6 - Добавить группу");
Console.WriteLine("7 - Изменить название группы"); Console.WriteLine("7 - Обновить группу по ID");
Console.WriteLine("8 - Удалить группу по ID");
Console.WriteLine("0 - Выход"); Console.WriteLine("0 - Выход");
var input = Console.ReadLine(); var input = Console.ReadLine();
@ -96,6 +97,17 @@ namespace Demo.UI
case "7": case "7":
_groupConsoleUI.UpdateGroupName(); _groupConsoleUI.UpdateGroupName();
break; break;
case "8":
Console.WriteLine("Введите ID группы для удаления:");
if (int.TryParse(Console.ReadLine(), out int groupId))
{
_groupConsoleUI.RemoveGroupById(groupId);
}
else
{
Console.WriteLine("Некорректный ID группы.");
}
break;
case "0": case "0":
return; return;
default: default: