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, IUserManagerDbContext { public UserRepRepository(TDbContext dbContext) : base(dbContext, dbContext.UserReps) { } public async Task> ReadAllAsync(bool withUser = false, bool withRepGroup = false, bool withGroup = false, bool withRepUser = false, int? userId = null, int? groupId = null, bool readOnly = true) { var query = readOnly ? _dbSet.AsNoTracking() : _dbSet.AsQueryable(); 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(); } } }