Presence_Desktop/data/Repository/SQLUserRepositoryImpl.cs
2024-12-23 14:26:41 +03:00

115 lines
4.9 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.DAO;
using data.RemoteData;
using domain.Models;
using Microsoft.EntityFrameworkCore;
namespace data.Repository
{
public class SQLUserRepositoryImpl : IUserRepository
{
private readonly RemoteDatabaseContext _remoteDatabaseContext;
// Конструктор, инициализирующий контекст базы данных
public SQLUserRepositoryImpl(RemoteDatabaseContext remoteDatabaseContext)
{
_remoteDatabaseContext = remoteDatabaseContext;
}
// Добавление нового пользователя
public bool AddUser(UserDao user)
{
try
{
// Создание нового объекта UserDao
var userDao = new UserDao
{
Guid = user.Guid,
FIO = user.FIO,
GroupID = user.GroupID // Привязываем к группе
};
// Добавление пользователя в контекст базы данных
_remoteDatabaseContext.Users.Add(userDao);
// Сохранение изменений в базе данных
_remoteDatabaseContext.SaveChanges();
return true;
}
catch (System.Exception ex)
{
// Логирование ошибки (при необходимости)
Console.WriteLine($"Ошибка при добавлении пользователя: {ex.Message}");
return false;
}
}
// Получение полной информации о пользователе по его GUID, включая информацию о группе
public UserDao GetUserInfo(Guid userGuid)
{
return _remoteDatabaseContext.Users
.Include(u => u.Group) // Включаем информацию о группе
.FirstOrDefault(u => u.Guid == userGuid);
}
// Получение списка пользователей с ФИО
public List<UserDao> GetUserNames()
{
return _remoteDatabaseContext.Users
.Select(u => new UserDao { Guid = u.Guid, FIO = u.FIO })
.ToList();
}
// Получение всех пользователей в виде списка UserDao (для внутреннего использования)
public IEnumerable<RemoteData.DAO.UserDao> GetAllUsersDao => _remoteDatabaseContext.Users.ToList();
// Обновление информации о пользователе
public UserLocalEnity? UpdateUser(UserLocalEnity 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();
// Возвращаем обновленный объект UserLocalEnity
return new UserLocalEnity
{
Guid = existingUser.Guid,
FIO = existingUser.FIO,
GroupID = existingUser.GroupID
};
}
// Удаление пользователя по его GUID
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();
return true;
}
// Получение всех пользователей в виде списка UserLocalEnity
public IEnumerable<UserLocalEnity> GetAllUsers => _remoteDatabaseContext.Users
.Select(u => new UserLocalEnity
{
Guid = u.Guid,
FIO = u.FIO,
GroupID = u.GroupID
})
.ToList();
}
}