using Domain.Entities; using Domain.Interface; using Infrastructure.Context; using Microsoft.EntityFrameworkCore; namespace Infrastructure.Repositories; public class UserRepository(ApplicationDbContext applicationDbContext) : GenericRepository(applicationDbContext), IUserRepository { public async Task GetUserByEmailAsync(string email) { return await DbSet.FirstOrDefaultAsync(u => u.Email == email); } public async Task GetUserByUsernameAsync(string username) { return await DbSet.FirstOrDefaultAsync(u => u.Username == username); } public async Task> GetUserRolesByEmailAsync(string email) { return await DbSet .Where(ur => ur.Email == email) .SelectMany(ur => ur.UserRoles) .Select(ur => ur.Role!.Name) .ToListAsync(); } public async Task GetUserByIdAsync(int id) { return await DbSet.FindAsync(id); } }