115 lines
3.8 KiB
C#
115 lines
3.8 KiB
C#
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);
|
||
}
|
||
}
|
||
} |