presence_api/domain/UseCase/GroupUseCase.cs

86 lines
2.6 KiB
C#
Raw Permalink Normal View History

2024-11-11 11:35:05 +00:00
using data.RemoteData.RemoteDataBase.DAO;
using data.Repository;
using data.domain.Models;
namespace data.Domain.UseCase
{
public class GroupUseCase
{
private readonly IGroupRepository _SQLGroupRepositoryImpl;
public GroupUseCase(IGroupRepository SQlGroupRepositoryImpl)
{
_SQLGroupRepositoryImpl = SQlGroupRepositoryImpl;
}
// Приватный метод для валидации имени группы
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 GroupDao ValidateGroupExistence(int groupId)
{
var existingGroup = _SQLGroupRepositoryImpl.GetAllGroups()
.FirstOrDefault(g => g.Id == groupId);
if (existingGroup == null)
{
throw new ArgumentException("Группа не найдена.");
}
return existingGroup;
}
// Метод для получения списка всех групп
public List<GroupDao> GetAllGroups()
{
2024-11-13 09:08:49 +00:00
return _SQLGroupRepositoryImpl.GetAllGroups();
2024-11-11 11:35:05 +00:00
}
// Метод для получения группы по ID
public string FindGroupById(int IdGroup)
{
string groups = _SQLGroupRepositoryImpl.GetGroupById(IdGroup).Name;
return groups;
}
// Метод для добавления новой группы
public void AddGroup(string groupName)
{
ValidateGroupName(groupName);
GroupDao newGroup = new GroupDao
{
Name = groupName
};
_SQLGroupRepositoryImpl.AddGroup(newGroup.Name);
}
// Метод для изменения названия группы
public void UpdateGroup(int groupId, string newGroupName)
{
ValidateGroupName(newGroupName);
var existingGroup = ValidateGroupExistence(groupId);
existingGroup.Name = newGroupName;
_SQLGroupRepositoryImpl.UpdateGroupById(groupId, existingGroup);
}
}
}