new_presence/domain/UseCase/GroupUseCase.cs
2024-11-16 11:48:23 +03:00

83 lines
3.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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, если обновление успешно
}
}
}