2024-11-10 18:56:16 +00:00
|
|
|
|
using Demo.Data.LocalData;
|
|
|
|
|
using Demo.Data.Repository;
|
2024-10-19 09:39:40 +00:00
|
|
|
|
using Demo.domain.Models;
|
2024-11-10 18:56:16 +00:00
|
|
|
|
using Demo.domain.Models.RequestModels;
|
2024-10-18 10:20:54 +00:00
|
|
|
|
|
|
|
|
|
namespace Demo.Domain.UseCase
|
|
|
|
|
{
|
2024-11-10 18:56:16 +00:00
|
|
|
|
public class GroupUseCase
|
2024-10-18 10:20:54 +00:00
|
|
|
|
{
|
2024-11-10 18:56:16 +00:00
|
|
|
|
private readonly IGroupRepository _repositoryGroupImpl;
|
2024-10-19 09:39:40 +00:00
|
|
|
|
|
2024-11-10 18:56:16 +00:00
|
|
|
|
public GroupUseCase(IGroupRepository repositoryGroupImpl)
|
2024-10-19 09:39:40 +00:00
|
|
|
|
{
|
|
|
|
|
_repositoryGroupImpl = repositoryGroupImpl;
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-10 18:56:16 +00:00
|
|
|
|
// Приватный метод для валидации имени группы
|
|
|
|
|
private void ValidateGroupName(string groupName)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(groupName))
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException("Имя группы не может быть пустым.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ValidateGroupId(int GroupId)
|
|
|
|
|
{
|
|
|
|
|
if (GroupId < 1)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException("Введите корректный ID группы.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Приватный метод для валидации существования группы по ID
|
|
|
|
|
private GroupLocalEntity ValidateGroupExistence(int groupId)
|
|
|
|
|
{
|
|
|
|
|
var existingGroup = _repositoryGroupImpl.GetAllGroup().FirstOrDefault(g => g.Id == groupId);
|
|
|
|
|
|
|
|
|
|
if (existingGroup == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException("Группа не найдена.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return existingGroup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Метод для получения списка всех групп
|
2024-10-19 09:39:40 +00:00
|
|
|
|
public List<Group> GetAllGroups()
|
|
|
|
|
{
|
2024-11-10 18:56:16 +00:00
|
|
|
|
return [.. _repositoryGroupImpl.GetAllGroup().Select(it => new Group { Id = it.Id, Name = it.Name })];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void FindGroupById(int IdGroup)
|
|
|
|
|
{
|
|
|
|
|
List<Group> GetAllGroups()
|
|
|
|
|
{
|
|
|
|
|
return [.. _repositoryGroupImpl.GetAllGroup().Select(
|
|
|
|
|
it => new Group
|
|
|
|
|
{ Id = it.Id, Name = it.Name }
|
|
|
|
|
)
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
foreach (var group in GetAllGroups())
|
|
|
|
|
{
|
|
|
|
|
if (IdGroup == group.Id)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"ID группы: {group.Id} Название группы: {group.Name}");
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-10-19 09:39:40 +00:00
|
|
|
|
}
|
2024-11-10 18:56:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Метод для добавления новой группы
|
2024-10-19 09:39:40 +00:00
|
|
|
|
public void AddGroup(string groupName)
|
|
|
|
|
{
|
2024-11-10 18:56:16 +00:00
|
|
|
|
ValidateGroupName(groupName);
|
|
|
|
|
|
|
|
|
|
var newId = _repositoryGroupImpl.GetAllGroup().Any() ? _repositoryGroupImpl.GetAllGroup().Max(g => g.Id) + 1 : 1;
|
|
|
|
|
|
2024-10-19 09:39:40 +00:00
|
|
|
|
GroupLocalEntity newGroup = new GroupLocalEntity
|
|
|
|
|
{
|
|
|
|
|
Id = newId,
|
|
|
|
|
Name = groupName
|
|
|
|
|
};
|
2024-11-10 18:56:16 +00:00
|
|
|
|
|
2024-10-19 09:39:40 +00:00
|
|
|
|
_repositoryGroupImpl.AddGroup(newGroup);
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-10 18:56:16 +00:00
|
|
|
|
public void RemoveGroupById(int groupId)
|
|
|
|
|
{
|
|
|
|
|
ValidateGroupId(groupId);
|
|
|
|
|
var existingGroup = ValidateGroupExistence(groupId);
|
|
|
|
|
List<Group> _groups = GetAllGroups();
|
|
|
|
|
|
|
|
|
|
// Находим группу по ID и удаляем ее
|
|
|
|
|
var groupToRemove = _groups.FirstOrDefault(g => g.Id == existingGroup.Id);
|
|
|
|
|
if (groupToRemove != null)
|
|
|
|
|
{
|
|
|
|
|
_groups.Remove(groupToRemove);
|
|
|
|
|
_repositoryGroupImpl.RemoveGroupById(existingGroup.Id);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException("Группа не найдена.");
|
|
|
|
|
// Обработка случая, если группа не найдена (например, выброс исключения)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Метод для изменения названия группы
|
2024-10-19 09:39:40 +00:00
|
|
|
|
public void UpdateGroup(int groupId, string newGroupName)
|
|
|
|
|
{
|
2024-11-10 18:56:16 +00:00
|
|
|
|
ValidateGroupName(newGroupName);
|
|
|
|
|
var existingGroup = ValidateGroupExistence(groupId);
|
|
|
|
|
|
2024-10-19 09:39:40 +00:00
|
|
|
|
existingGroup.Name = newGroupName;
|
2024-11-10 18:56:16 +00:00
|
|
|
|
_repositoryGroupImpl.UpdateGroupById(existingGroup.Id, existingGroup);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<GroupResponse> getAllGroup()
|
|
|
|
|
{
|
|
|
|
|
return _repository.GetAllGroup().Select(Group => new GroupResponse
|
|
|
|
|
{
|
|
|
|
|
Id = Group.Id,
|
|
|
|
|
Name = Group.Name,
|
|
|
|
|
}
|
|
|
|
|
).ToList();
|
2024-10-19 09:39:40 +00:00
|
|
|
|
}
|
2024-10-18 10:20:54 +00:00
|
|
|
|
}
|
2024-11-10 18:56:16 +00:00
|
|
|
|
}
|