presenceNikita/Demo/Domain/UseCase/GroupUseCase.cs

133 lines
4.3 KiB
C#
Raw Permalink Normal View History

2024-11-10 18:56:16 +00:00
using Demo.Data.LocalData;
using Demo.Data.Repository;
2024-10-19 09:39:40 +00:00
using Demo.domain.Models;
2024-11-10 18:56:16 +00:00
using Demo.domain.Models.RequestModels;
namespace Demo.Domain.UseCase
{
2024-11-10 18:56:16 +00:00
public class GroupUseCase
{
2024-11-10 18:56:16 +00:00
private readonly IGroupRepository _repositoryGroupImpl;
2024-10-19 09:39:40 +00:00
2024-11-10 18:56:16 +00:00
public GroupUseCase(IGroupRepository repositoryGroupImpl)
2024-10-19 09:39:40 +00:00
{
_repositoryGroupImpl = repositoryGroupImpl;
}
2024-11-10 18:56:16 +00:00
// Приватный метод для валидации имени группы
private void ValidateGroupName(string groupName)
{
if (string.IsNullOrWhiteSpace(groupName))
{
throw new ArgumentException("Имя группы не может быть пустым.");
}
}
private void ValidateGroupId(int GroupId)
{
if (GroupId < 1)
{
throw new ArgumentException("Введите корректный ID группы.");
}
}
// Приватный метод для валидации существования группы по ID
private GroupLocalEntity ValidateGroupExistence(int groupId)
{
var existingGroup = _repositoryGroupImpl.GetAllGroup().FirstOrDefault(g => g.Id == groupId);
if (existingGroup == null)
{
throw new ArgumentException("Группа не найдена.");
}
return existingGroup;
}
// Метод для получения списка всех групп
2024-10-19 09:39:40 +00:00
public List<Group> GetAllGroups()
{
2024-11-10 18:56:16 +00:00
return [.. _repositoryGroupImpl.GetAllGroup().Select(it => new Group { Id = it.Id, Name = it.Name })];
}
public void FindGroupById(int IdGroup)
{
List<Group> GetAllGroups()
{
return [.. _repositoryGroupImpl.GetAllGroup().Select(
it => new Group
{ Id = it.Id, Name = it.Name }
)
];
}
foreach (var group in GetAllGroups())
{
if (IdGroup == group.Id)
{
Console.WriteLine($"ID группы: {group.Id} Название группы: {group.Name}");
}
}
2024-10-19 09:39:40 +00:00
}
2024-11-10 18:56:16 +00:00
// Метод для добавления новой группы
2024-10-19 09:39:40 +00:00
public void AddGroup(string groupName)
{
2024-11-10 18:56:16 +00:00
ValidateGroupName(groupName);
var newId = _repositoryGroupImpl.GetAllGroup().Any() ? _repositoryGroupImpl.GetAllGroup().Max(g => g.Id) + 1 : 1;
2024-10-19 09:39:40 +00:00
GroupLocalEntity newGroup = new GroupLocalEntity
{
Id = newId,
Name = groupName
};
2024-11-10 18:56:16 +00:00
2024-10-19 09:39:40 +00:00
_repositoryGroupImpl.AddGroup(newGroup);
}
2024-11-10 18:56:16 +00:00
public void RemoveGroupById(int groupId)
{
ValidateGroupId(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 09:39:40 +00:00
public void UpdateGroup(int groupId, string newGroupName)
{
2024-11-10 18:56:16 +00:00
ValidateGroupName(newGroupName);
var existingGroup = ValidateGroupExistence(groupId);
2024-10-19 09:39:40 +00:00
existingGroup.Name = newGroupName;
2024-11-10 18:56:16 +00:00
_repositoryGroupImpl.UpdateGroupById(existingGroup.Id, existingGroup);
}
public List<GroupResponse> getAllGroup()
{
return _repository.GetAllGroup().Select(Group => new GroupResponse
{
Id = Group.Id,
Name = Group.Name,
}
).ToList();
2024-10-19 09:39:40 +00:00
}
}
2024-11-10 18:56:16 +00:00
}