using Distribution.Data; using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Features.Role; public class RoleRepository(AppDBContext context) : IRoleRepository { public async Task GetByIdAsync(Guid id) => await context.Roles.FindAsync(id); public async Task> GetAllAsync() => await context.Roles.ToListAsync(); public async Task> GetPermissionsAsync(Guid roleId) => await context.RolePermissions .Include(rp => rp.Permission) .Where(rp => rp.FK_RoleId == roleId && rp.IsActive) .ToListAsync(); public async Task AddAsync(Models.Role role) => await context.Roles.AddAsync(role); public void Update(Models.Role role) => context.Roles.Update(role); public void Remove(Models.Role role) { role.IsActive = false; context.Roles.Update(role); } public async Task ReplacePermissionsAsync(Guid roleId, List permissionIds) { var existing = await context.RolePermissions .Where(rp => rp.FK_RoleId == roleId) .ToListAsync(); context.RolePermissions.RemoveRange(existing); context.RolePermissions.AddRange(permissionIds.Select(pid => new RolePermission { FK_RoleId = roleId, FK_PermissionId = pid })); } }