using API.Models.UserModels; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace API.DBAccess { public class DbAccess { private readonly DBContext _context; public DbAccess(DBContext context) { _context = context; } public async Task ReadUser(int userId) { return await _context.Users.FirstOrDefaultAsync(u => u.Id == userId); } public async Task> ReadAllUsers() { return await _context.Users.ToListAsync(); } public async Task ReadUserByRefreshToken(string refreshToken) { return await _context.Users.FirstOrDefaultAsync(u => u.RefreshToken == refreshToken); } public async Task ReadUserForDelete(int userId) { return await _context.Users.FirstOrDefaultAsync(u => u.Id == userId); } public async Task ReadUserForLogin(string emailOrUsername) { if (emailOrUsername.Contains("@")) { return await _context.Users.FirstOrDefaultAsync(u => u.Email == emailOrUsername); } else { return await _context.Users.FirstOrDefaultAsync(u => u.UserName == emailOrUsername); } } public async Task CreateUser(User user) { _context.Users.Add(user); bool saved = await _context.SaveChangesAsync() == 1; if (saved) { return new OkObjectResult(true); } return new ConflictObjectResult(new { message = "Could not save to database" }); } public async Task UpdateUser(User user) { _context.Entry(user).State = EntityState.Modified; bool saved = await _context.SaveChangesAsync() == 1; if (saved) { return new OkObjectResult(user); } return new ConflictObjectResult(new { message = "Could not save to database" }); } public async Task UpdatePassword(User user) { _context.Entry(user).State = EntityState.Modified; bool saved = await _context.SaveChangesAsync() == 1; if (saved) { return new OkObjectResult(user); } return new ConflictObjectResult(new { message = "Could not save to database" }); } public async Task DeleteUser(User user) { _context.Users.Remove(user); bool saved = await _context.SaveChangesAsync() >= 0; if (saved) { return new OkObjectResult(saved); } return new ConflictObjectResult(new { message = "Could not save to database" }); } } }