2024-12-23 09:12:26 +00:00
|
|
|
|
using System;
|
2024-12-05 09:30:01 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2024-12-23 09:12:26 +00:00
|
|
|
|
using System.Security.Cryptography.X509Certificates;
|
2024-12-05 09:30:01 +00:00
|
|
|
|
using System.Threading.Tasks;
|
2024-12-23 09:12:26 +00:00
|
|
|
|
using data.Repository;
|
|
|
|
|
using domain.Models.ResponseModels;
|
|
|
|
|
using presence.data.LocalData.Entity;
|
|
|
|
|
using presence.data.RemoteData.RemoteDataBase.DAO;
|
|
|
|
|
using presence.data.Repository;
|
2024-12-05 09:30:01 +00:00
|
|
|
|
|
2024-12-19 17:36:57 +00:00
|
|
|
|
namespace domain.UseCase
|
2024-12-05 09:30:01 +00:00
|
|
|
|
{
|
2024-12-19 17:36:57 +00:00
|
|
|
|
public class AdminUseCase
|
2024-12-05 09:30:01 +00:00
|
|
|
|
{
|
2024-12-19 17:36:57 +00:00
|
|
|
|
private readonly IAdminRepository _adminRepository;
|
|
|
|
|
private readonly IGroupRepository _groupRepository;
|
|
|
|
|
|
2024-12-23 09:12:26 +00:00
|
|
|
|
// Конструктор, инициализирующий оба репозитория
|
2024-12-19 17:36:57 +00:00
|
|
|
|
public AdminUseCase(IAdminRepository adminRepository, IGroupRepository groupRepository)
|
|
|
|
|
{
|
|
|
|
|
_adminRepository = adminRepository;
|
|
|
|
|
_groupRepository = groupRepository;
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-23 09:12:26 +00:00
|
|
|
|
// Метод для получения всех групп с их студентами
|
2024-12-19 17:36:57 +00:00
|
|
|
|
public IEnumerable<GroupResponse> GetAllGroupsWithStudents() =>
|
|
|
|
|
_adminRepository.GetAllGroupsWithStudents().Select(it => new GroupResponse
|
|
|
|
|
{
|
|
|
|
|
Name = it.Name,
|
|
|
|
|
Id = it.Id,
|
2024-12-23 09:12:26 +00:00
|
|
|
|
// Фильтруем пользователей по идентификатору группы и создаем список UserResponse
|
|
|
|
|
User = it.User.Where(u => u.GroupId == it.Id)
|
2024-12-19 17:36:57 +00:00
|
|
|
|
.Select(u => new UserResponse { Id = u.UserId, FIO = u.FIO })
|
|
|
|
|
.ToList()
|
|
|
|
|
})
|
|
|
|
|
.ToList();
|
|
|
|
|
|
2024-12-23 09:12:26 +00:00
|
|
|
|
public bool AddStudents(string GroupName, List<string> Students) //Метод для добавления студента в существующую группу
|
2024-12-19 17:36:57 +00:00
|
|
|
|
{
|
2024-12-23 09:12:26 +00:00
|
|
|
|
// Создаем объект GroupDao для группы
|
|
|
|
|
GroupDao groupDao = new GroupDao { Name = GroupName };
|
|
|
|
|
List<UserDao> users = new List<UserDao>();
|
|
|
|
|
|
|
|
|
|
// Проходим по списку студентов и создаем объекты UserDao
|
|
|
|
|
foreach (string student in Students)
|
|
|
|
|
{
|
|
|
|
|
var user = new UserDao
|
|
|
|
|
{
|
|
|
|
|
FIO = student,
|
|
|
|
|
Group = groupDao // Привязываем студента к группе
|
|
|
|
|
};
|
|
|
|
|
users.Add(user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Добавляем студентов в репозиторий и возвращаем результат операции
|
|
|
|
|
return _adminRepository.AddStudents(groupDao, users);
|
|
|
|
|
}
|
2024-12-19 17:36:57 +00:00
|
|
|
|
|
2024-12-23 09:12:26 +00:00
|
|
|
|
public UserResponse GetStudentInfo(int userId) //Метод для получения информации о студенте по его Id
|
|
|
|
|
{
|
|
|
|
|
// Запрашиваем информацию о студенте из репозитория
|
2024-12-19 17:36:57 +00:00
|
|
|
|
var studentInfo = _adminRepository.GetStudentInfo(userId);
|
2024-12-23 09:12:26 +00:00
|
|
|
|
|
|
|
|
|
// Если информация не найдена, возвращаем null
|
2024-12-19 17:36:57 +00:00
|
|
|
|
if (studentInfo == null) return null;
|
|
|
|
|
|
2024-12-23 09:12:26 +00:00
|
|
|
|
// Создаем объект UserResponse с данными студента
|
2024-12-19 17:36:57 +00:00
|
|
|
|
UserResponse user = new UserResponse
|
|
|
|
|
{
|
|
|
|
|
Id = userId,
|
2024-12-23 09:12:26 +00:00
|
|
|
|
FIO = studentInfo.FIO,
|
|
|
|
|
GroupId = studentInfo.GroupId
|
2024-12-19 17:36:57 +00:00
|
|
|
|
};
|
|
|
|
|
return user;
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-23 09:12:26 +00:00
|
|
|
|
// Метод для удаления группы по идентификатору
|
|
|
|
|
public bool DeleteGroup(int groupId) =>
|
|
|
|
|
_groupRepository.RemoveGroupById(groupId);
|
2024-12-19 17:36:57 +00:00
|
|
|
|
|
|
|
|
|
|
2024-12-23 09:12:26 +00:00
|
|
|
|
// Метод для удаления пользователя из группы по их идентификаторам
|
|
|
|
|
public bool DeleteUserFromGroup(int userId, int groupId) =>
|
|
|
|
|
_adminRepository.RemoveUserById(userId, groupId);
|
2024-12-05 09:30:01 +00:00
|
|
|
|
}
|
2024-12-23 09:12:26 +00:00
|
|
|
|
|
2024-12-05 09:30:01 +00:00
|
|
|
|
}
|