68 lines
1.9 KiB
C#

using Microsoft.EntityFrameworkCore;
using Project.Domain.Entities;
using Project.Infrastructure.Interfaces;
namespace Project.Infrastructure.Repositories
{
public class UserRepository : IUserRepository
{
// FIELDS FOR CTOR
private readonly ApplicationDbContext _context;
// CTOR
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.Role).ToListAsync();
}
// READ BY ID
public async Task<User?> GetByIdAsync(int id)
{
return await _context.Users.Where(user => user.Id == id).Include(user => user.Role).FirstAsync(); // Role important for authorization
}
// READ BY EMAIL
public async Task<User?> GetByEmailAsync(string email)
{
return await _context.Users.Include(user => user.Role).FirstOrDefaultAsync(u => u.Email == email); // Role important for authorization
}
// 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;
}
}
}