2024-10-19 21:39:57 +00:00
|
|
|
|
using Demo.Data.LocalData;
|
|
|
|
|
using Demo.Data.Repository;
|
|
|
|
|
using Demo.domain.Models;
|
|
|
|
|
|
|
|
|
|
namespace Demo.Domain.UseCase
|
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Класс, представляющий бизнес-логику для работы с группами
|
2024-10-19 21:39:57 +00:00
|
|
|
|
public class GroupUseCase
|
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Репозиторий для работы с группами (интерфейс)
|
|
|
|
|
private readonly IGroupRepository _repositoryGroupImpl;
|
2024-10-19 21:39:57 +00:00
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Конструктор, принимающий репозиторий в качестве зависимости
|
|
|
|
|
public GroupUseCase(IGroupRepository repositoryGroupImpl)
|
|
|
|
|
{
|
|
|
|
|
_repositoryGroupImpl = repositoryGroupImpl;
|
|
|
|
|
}
|
2024-10-19 21:39:57 +00:00
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Метод для проверки существования группы по ее ID
|
|
|
|
|
private GroupLocalEntity ValidateGroupExistence(int groupId)
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Получение группы по ID
|
|
|
|
|
var existingGroup = _repositoryGroupImpl.GetAllGroup()
|
|
|
|
|
.FirstOrDefault(g => g.Id == groupId);
|
|
|
|
|
|
|
|
|
|
// Если группа не найдена
|
|
|
|
|
if (existingGroup == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException("Группа не найдена.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Возвращение существующей группы
|
|
|
|
|
return new GroupLocalEntity
|
|
|
|
|
{
|
|
|
|
|
Id = existingGroup.Id,
|
|
|
|
|
Name = existingGroup.Name
|
|
|
|
|
};
|
2024-10-19 21:39:57 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Метод получения всех групп
|
|
|
|
|
public List<Group> GetAllGroups()
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Получение всех групп и преобразование их в список объектов Group
|
|
|
|
|
return _repositoryGroupImpl.GetAllGroup()
|
|
|
|
|
.Select(it => new Group { Id = it.Id, Name = it.Name })
|
|
|
|
|
.ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Метод для поиска группы по ID
|
|
|
|
|
public Group FindGroupById(int groupId)
|
|
|
|
|
{
|
|
|
|
|
// Ищем группу в списке всех групп
|
|
|
|
|
var group = GetAllGroups().FirstOrDefault(g => g.Id == groupId);
|
|
|
|
|
|
|
|
|
|
// Если группа не найдена
|
|
|
|
|
if (group == null)
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
throw new ArgumentException("Группа не найдена.");
|
2024-10-19 21:39:57 +00:00
|
|
|
|
}
|
2024-11-17 16:24:01 +00:00
|
|
|
|
|
|
|
|
|
return group; // Возвращение найденной группы
|
2024-10-19 21:39:57 +00:00
|
|
|
|
}
|
2024-11-17 16:24:01 +00:00
|
|
|
|
|
|
|
|
|
// Метод добавления новой группы
|
|
|
|
|
public void AddGroup(string groupName)
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Определяем новый ID для группы
|
|
|
|
|
var newId = _repositoryGroupImpl.GetAllGroup().Any()
|
|
|
|
|
? _repositoryGroupImpl.GetAllGroup().Max(g => g.Id) + 1
|
|
|
|
|
: 1;
|
|
|
|
|
|
|
|
|
|
// Создаем новую группу
|
|
|
|
|
GroupLocalEntity newGroup = new GroupLocalEntity
|
2024-10-19 21:39:57 +00:00
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
Id = newId,
|
|
|
|
|
Name = groupName
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Добавление группы в репозиторий
|
|
|
|
|
_repositoryGroupImpl.AddGroup(newGroup);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Метод удаления группы по ID
|
|
|
|
|
public void RemoveGroupById(int 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 21:39:57 +00:00
|
|
|
|
}
|
2024-11-17 16:24:01 +00:00
|
|
|
|
}
|
2024-10-19 21:39:57 +00:00
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Метод изменения названия группы
|
|
|
|
|
public bool UpdateGroup(int groupId, string newGroupName)
|
|
|
|
|
{
|
|
|
|
|
// Проверяем существование группы по ID
|
|
|
|
|
var existingGroup = _repositoryGroupImpl.GetAllGroup()
|
|
|
|
|
.FirstOrDefault(g => g.Id == groupId);
|
|
|
|
|
|
|
|
|
|
// Если группа не найдена, возвращаем false
|
2024-10-19 21:39:57 +00:00
|
|
|
|
if (existingGroup == null)
|
|
|
|
|
{
|
2024-11-17 16:24:01 +00:00
|
|
|
|
return false;
|
2024-10-19 21:39:57 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Обновляем название группы
|
|
|
|
|
existingGroup.Name = newGroupName;
|
2024-10-19 21:39:57 +00:00
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
// Сохраняем изменения в репозитории
|
|
|
|
|
_repositoryGroupImpl.UpdateGroupById(existingGroup.Id, existingGroup);
|
2024-10-19 21:39:57 +00:00
|
|
|
|
|
2024-11-17 16:24:01 +00:00
|
|
|
|
return true; // Успешное обновление
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|