using Microsoft.EntityFrameworkCore; using UserManagement.Domain.Entities; using UserManagement.Infrastructure.Interfaces; namespace UserManagement.Infrastructure.Repositories { public class UserRepository : IUserRepository { // CTOR private readonly ApplicationDbContext _context; public UserRepository(ApplicationDbContext context) { _context = context; } // CREATE public async Task AddAsync(User user) { await _context.Users.AddAsync(user); await _context.SaveChangesAsync(); return user; } // READ ALL public async Task> GetAllAsync() { return await _context.Users.Include(u => u.Role).ToListAsync(); } // READ BY ID public async Task GetByIdAsync(int id) { return await _context.Users.Where(user => user.Id == id).Include(user => user.Role).FirstAsync(); } // READ BY USERNAME public async Task GetByUsernameAsync(string username) { return await _context.Users.Include(user => user.Role).FirstOrDefaultAsync(u => u.UserName == username); } // UPDATE public async Task UpdateAsync(User user) { _context.Entry(user).State = EntityState.Modified; var results = await _context.SaveChangesAsync(); return results > 0; } // DELETE public async Task DeleteAsync(User user) { _context.Users.Remove(user); var result = await _context.SaveChangesAsync(); return result > 0; } // SAVE public async Task SaveAsync() { var saved = await _context.SaveChangesAsync(); return saved > 0 ? true : false; } } }