95 lines
4.6 KiB
C#
95 lines
4.6 KiB
C#
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(); // Преобразуем в список.
|
||
}
|
||
}
|
||
}
|