75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
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<User?> AddAsync(User user)
|
|
{
|
|
await _context.Users.AddAsync(user);
|
|
await _context.SaveChangesAsync();
|
|
return user;
|
|
}
|
|
|
|
// READ ALL
|
|
public async Task<IEnumerable<User>> GetAllAsync()
|
|
{
|
|
return await _context.Users
|
|
.Include(u => u.UserRoles)
|
|
.ThenInclude(ur => ur.Role)
|
|
.ToListAsync();
|
|
}
|
|
|
|
// READ BY ID
|
|
public async Task<User?> GetByIdAsync(int id)
|
|
{
|
|
return await _context.Users.Where(user => user.Id == id)
|
|
.Include(user => user.UserRoles)
|
|
.ThenInclude(ur =>ur.Role)
|
|
.FirstAsync();
|
|
}
|
|
|
|
// READ BY USERNAME
|
|
public async Task<User?> GetByUsernameAsync(string username)
|
|
{
|
|
return await _context.Users
|
|
.Include(user => user.UserRoles)
|
|
.ThenInclude(ur => ur.Role)
|
|
.FirstOrDefaultAsync(u => u.UserName == username);
|
|
}
|
|
|
|
// UPDATE
|
|
public async Task<bool> UpdateAsync(User user)
|
|
{
|
|
_context.Entry(user).State = EntityState.Modified;
|
|
var results = await _context.SaveChangesAsync();
|
|
return results > 0;
|
|
}
|
|
|
|
// DELETE
|
|
public async Task<bool> DeleteAsync(User user)
|
|
{
|
|
_context.Users.Remove(user);
|
|
var result = await _context.SaveChangesAsync();
|
|
return result > 0;
|
|
}
|
|
|
|
// SAVE
|
|
public async Task<bool> SaveAsync()
|
|
{
|
|
var saved = await _context.SaveChangesAsync();
|
|
return saved > 0 ? true : false;
|
|
}
|
|
}
|
|
}
|