new_presence/data/Repository/SQLUserRepositoryImpl.cs

95 lines
4.6 KiB
C#
Raw Normal View History

2024-11-16 08:29:24 +00:00
using data.Exception;
using data.RemoteData;
using data.RemoteData.DAO;
using domain.Models;
using System.Collections.Generic;
using System.Linq;
namespace data.Repository
{
public class SQLUserRepositoryImpl : IUserRepository
{
// Контекст базы данных для удаленного доступа
private readonly RemoteDatabaseContext _remoteDatabaseContext;
// Конструктор, принимающий контекст базы данных
public SQLUserRepositoryImpl(RemoteDatabaseContext remoteDatabaseContext)
{
_remoteDatabaseContext = remoteDatabaseContext;
}
// Получить список всех пользователей как локальные сущности.
public IEnumerable<UserLocalEntity> GetAllUsers => _remoteDatabaseContext.Users
.Select(u => new UserLocalEntity
{
Guid = u.Guid, // Уникальный идентификатор пользователя.
FIO = u.FIO, // Полное имя пользователя.
GroupID = u.GroupID // Идентификатор группы пользователя.
})
.ToList(); // Преобразуем в список для удобства работы.
// Удалить пользователя по его GUID.
// Уникальный идентификатор пользователя.
// <returns>True, если пользователь успешно удален.
// Исключение, если пользователь не найден.
public bool RemoveUserByGuid(Guid userGuid)
{
// Находим пользователя по его GUID
var user = _remoteDatabaseContext.Users.FirstOrDefault(u => u.Guid == userGuid);
if (user == null)
throw new UserNotFoundException(userGuid); // Если пользователь не найден, выбрасываем исключение.
// Удаляем пользователя из базы данных.
_remoteDatabaseContext.Users.Remove(user);
// Сохраняем изменения в базе данных.
_remoteDatabaseContext.SaveChanges();
// Возвращаем true, если удаление успешно.
return true;
}
// Обновить данные пользователя.
// <param name="user">Объект с обновленными данными пользователя.
// Обновленный объект UserLocalEntity.
public UserLocalEntity? UpdateUser(UserLocalEntity user)
{
// Находим существующего пользователя по GUID
var existingUser = _remoteDatabaseContext.Users.FirstOrDefault(u => u.Guid == user.Guid);
if (existingUser == null)
throw new UserNotFoundException(user.Guid); // Если пользователь не найден, выбрасываем исключение
// Обновляем данные пользователя.
existingUser.FIO = user.FIO; // Обновляем имя.
existingUser.GroupID = user.GroupID; // Обновляем группу.
// Сохраняем изменения в базе данных
_remoteDatabaseContext.SaveChanges();
// Возвращаем обновленные данные пользователя
return new UserLocalEntity
{
Guid = existingUser.Guid,
FIO = existingUser.FIO,
GroupID = existingUser.GroupID
};
}
// Получить всех пользователей как DAO-объекты
public IEnumerable<UserDao> GetAllUsersDao => _remoteDatabaseContext.Users.ToList();
// Получить список пользователей с их именами и GUID.
// Список объектов UserDao с GUID и именами пользователей.
public List<UserDao> GetUserNames()
{
return _remoteDatabaseContext.Users
.Select(u => new UserDao
{
Guid = u.Guid, // Уникальный идентификатор пользователя.
FIO = u.FIO // Полное имя пользователя.
})
.ToList(); // Преобразуем в список.
}
}
}