using DigitalData.Core.Infrastructure; using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Infrastructure.Contracts; using Microsoft.EntityFrameworkCore; namespace DigitalData.UserManager.Infrastructure.Repositories { public class UserRepRepository : CRUDRepository, IUserRepRepository where TDbContext : DbContext { public UserRepRepository(TDbContext dbContext) : base(dbContext) { } public async Task> ReadAllAsync(bool withUser = false, bool withRepGroup = false, bool withGroup = false, bool withRepUser = false, int? userId = null, int? groupId = null) { var query = _dbSet.AsNoTracking(); if (withUser) query = query.Include(ur => ur.User); if (withRepGroup) query = query.Include(ur => ur.RepGroup); if (withGroup) query = query.Include(ur => ur.Group); if (withRepUser) query = query.Include(ur => ur.RepUser); if(userId is not null) { query = query.Where(ur => ur.UserId == userId); } if (groupId is not null) { query = query.Where(ur => ur.GroupId == groupId); } return await query.ToListAsync(); } } }