pr1/Demo/Domain/UseCase/GroupUseCase.cs
2024-11-17 19:24:01 +03:00

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