new_presence/data/Repository/SQLUserRepositoryImpl.cs
2024-11-16 11:29:24 +03:00

95 lines
4.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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