using Demo.Data.RemoteData.RemoteDataBase; using Demo.Data.RemoteData.RemoteDataBase.DAO; using Demo.domain.Models; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Demo.Data.Repository { public class SQLGroupRepositoryImpl : IGroupRepository { private readonly RemoteDatabaseContext _remoteDatabaseContext; public SQLGroupRepositoryImpl(RemoteDatabaseContext remoteDatabaseContext) { _remoteDatabaseContext = remoteDatabaseContext; } // Метод для добавления новой группы public bool AddGroupDao(GroupDao newGroup) { var groupDao = new GroupDao { Name = newGroup.Name }; _remoteDatabaseContext.Groups.Add(groupDao); _remoteDatabaseContext.SaveChanges(); return true; } // Метод для получения группы по ID public GroupDao GetGroupByIdDao(int groupId) { var groupDao = _remoteDatabaseContext.Groups .Include(g => g.Users) .FirstOrDefault(g => g.Id == groupId); if (groupDao == null) return null; return new GroupDao { Id = groupDao.Id, Name = groupDao.Name, Users = groupDao.Users.Select(u => new UserDao { UserId = u.UserId, FIO = u.FIO, GroupId = u.GroupId }).ToList() }; } // Метод для получения всех групп public List GetAllGroupDao() { return _remoteDatabaseContext.Groups .Include(g => g.Users) .Select(g => new GroupDao { Id = g.Id, Name = g.Name, Users = g.Users.Select(u => new UserDao { UserId = u.UserId, FIO = u.FIO, GroupId = u.GroupId }).ToList() }) .ToList(); } // Метод для обновления группы по ID public bool UpdateGroupByIdDao(int groupId, GroupDao updatedGroup) { var groupDao = _remoteDatabaseContext.Groups .Include(g => g.Users) .FirstOrDefault(g => g.Id == groupId); if (groupDao == null) return false; groupDao.Name = updatedGroup.Name; // Пример обновления списка пользователей groupDao.Users = updatedGroup.Users.Select(user => new UserDao { UserId = user.UserId, FIO = user.FIO, GroupId = user.GroupId }).ToList(); _remoteDatabaseContext.SaveChanges(); return true; } // Метод для удаления группы по ID public bool RemoveGroupByIdDao(int groupId) { var groupDao = _remoteDatabaseContext.Groups.Find(groupId); if (groupDao == null) return false; _remoteDatabaseContext.Groups.Remove(groupDao); _remoteDatabaseContext.SaveChanges(); return true; } public List GetAllGroup() { throw new NotImplementedException(); } public bool RemoveGroupById(int groupID) { throw new NotImplementedException(); } public bool UpdateGroupById(int groupID, GroupLocalEntity updatedGroup) { throw new NotImplementedException(); } public GroupLocalEntity GetGroupById(int groupID) { throw new NotImplementedException(); } public bool AddGroup(GroupLocalEntity newGroup) { throw new NotImplementedException(); } } }