Presence.Desktop/domain/UseCase/GroupUseCase.cs
2024-12-20 11:49:17 +03:00

115 lines
3.8 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.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("Имя группы не может быть пустым.");
}
}
public void RemoveAllStudentsFromGroup(int groupId)
{
var existingGroup = ValidateGroupExistence(groupId);
_SQLGroupRepositoryImpl.RemoveAllStudentsFromGroup(existingGroup.Id);
}
public void AddStudentToGroup(int groupId, User newStudent)
{
// Проверяем существование группы по ID
var existingGroup = ValidateGroupExistence(groupId);
// Создаем UserDao для добавления в базу данных
UserDao studentDao = new UserDao
{
FIO = newStudent.FIO
};
// Проверка существования пользователя в группе (по GUID)
var existingStudent = existingGroup.Users.FirstOrDefault(u => u.UserId == newStudent.ID);
if (existingStudent != null)
{
throw new ArgumentException($"Студент с ID {newStudent.ID} уже добавлен в эту группу.");
}
// Добавляем студента в группу
_SQLGroupRepositoryImpl.AddStudentToGroup(existingGroup.Id, studentDao);
}
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()
{
return _SQLGroupRepositoryImpl.GetAllGroups();
}
// Метод для получения группы по 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);
}
}
}