easyeat/backend/API/DBAccess/UserDBAccess.cs
2025-04-29 12:31:40 +02:00

93 lines
2.7 KiB
C#

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<User> ReadUser(int userId)
{
return await _context.Users.FirstOrDefaultAsync(u => u.Id == userId);
}
public async Task<List<User>> ReadAllUsers()
{
return await _context.Users.ToListAsync();
}
public async Task<User> ReadUserByRefreshToken(string refreshToken)
{
return await _context.Users.FirstOrDefaultAsync(u => u.RefreshToken == refreshToken);
}
public async Task<User> ReadUserForDelete(int userId)
{
return await _context.Users.FirstOrDefaultAsync(u => u.Id == userId);
}
public async Task<User> 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<IActionResult> 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<IActionResult> 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<IActionResult> 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<IActionResult> 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" });
}
}
}