using API.Models.UserModels; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace API.DBAccess { public class UserDBAccess { private readonly DBContext _context; public UserDBAccess(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 UserNameInUse(string username) { var user = await _context.Users.FirstOrDefaultAsync(u => u.UserName == username); if (user == null || user.UserName == null || user.UserName != username) { return false; } return true; } public async Task EmailInUse(string email) { var user = await _context.Users.FirstOrDefaultAsync(u => u.UserName == email); if (user == null || user.Email == null || user.Email != email) { return false; } return true; } 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" }); } } }