new_presence/domain/UseCase/GroupUseCase.cs

83 lines
3.3 KiB
C#
Raw Permalink Normal View History

2024-11-16 08:48:23 +00:00
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, если обновление успешно
}
}
}