68 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|