Vizual_Zurnal/Zurnal/domain/UseCase/GroupUseCase.cs

129 lines
3.7 KiB
C#
Raw Permalink Normal View History

2024-12-06 07:26:58 +00:00
using data.RemoteData.RemoteDataBase.DAO;
using data.Repository;
using domain.Models;
2024-12-09 10:41:40 +00:00
using UserDao = data.RemoteData.RemoteDataBase.DAO.UserDao;
2024-12-06 07:26:58 +00:00
namespace domain.UseCase
{
public class GroupUseCase
{
private readonly IGroupRepository _repositoryGroupImpl;
public GroupUseCase(IGroupRepository repositoryGroupImpl)
{
_repositoryGroupImpl = repositoryGroupImpl;
}
private GroupDao ValidateGroupExistence(int groupId)
{
var existingGroup = _repositoryGroupImpl.GetAllGroup()
.FirstOrDefault(g => g.Id == groupId);
if (existingGroup == null)
{
throw new ArgumentException("Группа не найдена.");
}
return new GroupDao
{
Id = existingGroup.Id,
Name = existingGroup.Name
};
}
public List<Group> GetAllGroups()
{
return [.. _repositoryGroupImpl.GetAllGroup()
.Select(it => new Group { Id = it.Id, Name = it.Name })];
}
public Group FindGroupById(int groupId)
{
var group = GetAllGroups().FirstOrDefault(g => g.Id == groupId);
if (group == null)
{
throw new ArgumentException("Группа не найдена.");
}
return group;
}
public void AddGroup(string groupName)
{
var newId = _repositoryGroupImpl.GetAllGroup().Any()
? _repositoryGroupImpl.GetAllGroup().Max(g => g.Id) + 1
: 1;
GroupDao newGroup = new GroupDao
{
Id = newId,
Name = groupName
};
_repositoryGroupImpl.AddGroup(newGroup);
}
public void RemoveGroupById(int 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("Группа не найдена.");
}
}
public bool UpdateGroup(int groupId, string newGroupName)
{
var existingGroup = _repositoryGroupImpl.GetAllGroup()
.FirstOrDefault(g => g.Id == groupId);
if (existingGroup == null)
{
2024-12-09 10:41:40 +00:00
return false;
2024-12-06 07:26:58 +00:00
}
existingGroup.Name = newGroupName;
_repositoryGroupImpl.UpdateGroupById(existingGroup.Id, existingGroup);
2024-12-09 10:41:40 +00:00
return true;
}
public IEnumerable<GroupDao> GetGroupsWithStudents()
{
return _repositoryGroupImpl.GetAllGroup().Select(
group => new GroupDao
{
Id = group.Id,
Name = group.Name,
Users = group.Users.Select(
user => new UserDao
{
Guid = user.Guid,
FIO = user.FIO,
Group = new GroupDao
{
Id = group.Id,
Name = group.Name,
}
}).ToList()
}).ToList();
2024-12-06 07:26:58 +00:00
}
}
}