presence/Demo/Domain/UseCase/GroupUseCase.cs
2024-11-14 10:53:42 +03:00

92 lines
2.9 KiB
C#

using Demo.Data.LocalData;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.Data.Repository;
using Demo.domain.Models;
namespace Demo.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)
{
Console.WriteLine("Группа не найдена.");
return null;
}
return existingGroup;
}
// Метод для получения списка всех групп
public List<GroupDao> GetAllGroups()
{
return [.. _SQLGroupRepositoryImpl.GetAllGroups()
.Select(it => new GroupDao { Id = it.Id, Name = it.Name })];
}
// Метод для получения группы по 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 bool UpdateGroup(int groupId, string newGroupName)
{
ValidateGroupName(newGroupName);
var existingGroup = ValidateGroupExistence(groupId);
if (existingGroup != null)
{
existingGroup.Name = newGroupName;
_SQLGroupRepositoryImpl.UpdateGroupById(groupId, existingGroup);
return true;
}
return false;
}
}
}