83 lines
3.3 KiB
C#
83 lines
3.3 KiB
C#
|
using data.Repository;
|
|||
|
using domain.Models;
|
|||
|
|
|||
|
namespace domain.UseCase
|
|||
|
{
|
|||
|
// Класс GroupUseCase предоставляет операции для работы с группами.
|
|||
|
public class GroupUseCase
|
|||
|
{
|
|||
|
private readonly IGroupRepository _repositoryGroupImpl; // Репозиторий для работы с группами
|
|||
|
|
|||
|
// Конструктор для инициализации репозитория групп.
|
|||
|
public GroupUseCase(IGroupRepository repositoryGroupImpl)
|
|||
|
{
|
|||
|
_repositoryGroupImpl = repositoryGroupImpl;
|
|||
|
}
|
|||
|
|
|||
|
// Проверяет существование группы по её ID.
|
|||
|
private GroupLocalEntity ValidateGroupExistence(int groupId)
|
|||
|
{
|
|||
|
var existingGroup = _repositoryGroupImpl.GetAllGroup()
|
|||
|
.FirstOrDefault(g => g.Id == groupId);
|
|||
|
|
|||
|
if (existingGroup == null)
|
|||
|
{
|
|||
|
throw new ArgumentException("Группа не найдена.");
|
|||
|
}
|
|||
|
return existingGroup; // Возвращаем найденную группу
|
|||
|
}
|
|||
|
|
|||
|
// Получить все группы
|
|||
|
public List<Group> GetAllGroups()
|
|||
|
{
|
|||
|
return _repositoryGroupImpl.GetAllGroup()
|
|||
|
.Select(it => new Group { Id = it.Id, Name = it.Name }) // Преобразуем в DTO-объект
|
|||
|
.ToList();// Список групп
|
|||
|
}
|
|||
|
|
|||
|
// Найти группу по ID
|
|||
|
public Group FindGroupById(int groupId)
|
|||
|
{
|
|||
|
return GetAllGroups().FirstOrDefault(g => g.Id == groupId) ?? throw new ArgumentException("Группа не найдена."); // Выбрасываем исключение, если группа не найдена
|
|||
|
}
|
|||
|
|
|||
|
// Добавить новую группу
|
|||
|
public void AddGroup(string groupName)
|
|||
|
{
|
|||
|
var newId = _repositoryGroupImpl.GetAllGroup().Any()
|
|||
|
? _repositoryGroupImpl.GetAllGroup().Max(g => g.Id) + 1 // Генерируем новый ID
|
|||
|
: 1;
|
|||
|
|
|||
|
var newGroup = new GroupLocalEntity
|
|||
|
{
|
|||
|
Id = newId,
|
|||
|
Name = groupName
|
|||
|
};
|
|||
|
_repositoryGroupImpl.AddGroup(newGroup); // Добавляем группу в репозиторий
|
|||
|
}
|
|||
|
|
|||
|
// Удалить группу по ID
|
|||
|
public void RemoveGroupById(int groupId)
|
|||
|
{
|
|||
|
ValidateGroupExistence(groupId); // Проверяем, существует ли группа
|
|||
|
_repositoryGroupImpl.RemoveGroupById(groupId); // Удаляем группу
|
|||
|
}
|
|||
|
|
|||
|
// Изменить название группы
|
|||
|
public bool UpdateGroup(int groupId, string newGroupName)
|
|||
|
{
|
|||
|
var existingGroup = _repositoryGroupImpl.GetAllGroup()
|
|||
|
.FirstOrDefault(g => g.Id == groupId);
|
|||
|
|
|||
|
if (existingGroup == null)
|
|||
|
{
|
|||
|
return false; // Если группа не найдена
|
|||
|
}
|
|||
|
|
|||
|
existingGroup.Name = newGroupName; // Обновляем название
|
|||
|
_repositoryGroupImpl.UpdateGroupById(existingGroup.Id, existingGroup); // Сохраняем изменения
|
|||
|
return true;// True, если обновление успешно
|
|||
|
}
|
|||
|
}
|
|||
|
}
|