OnProfNext/OnProfNext.Server/Controllers/UsersController.cs
Marc Wieland 6bcf3e881b Init
2025-10-13 13:21:53 +02:00

104 lines
3.1 KiB
C#

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using OnProfNext.Server.Data;
using OnProfNext.Server.Services;
using OnProfNext.Shared.Models;
namespace OnProfNext.Server.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
private readonly AppDbContext _context;
public UsersController(AppDbContext context)
{
_context = context;
}
//GET: api/users
[HttpGet]
public async Task<ActionResult<IEnumerable<User>>> GetUsers()
{
return await _context.Users.AsNoTracking().ToListAsync();
}
//GET: api/users/5
[HttpGet("{id}")]
public async Task<ActionResult<User>> GetUser(int id)
{
var user = await _context.Users.FindAsync(id);
if (user == null)
{
return NotFound();
}
return user;
}
//POST: api/users
[HttpPost]
public async Task<ActionResult<User>> CreateUser(User user)
{
user.PasswordHash = PasswordHasher.HashPassword(user.PasswordHash);
user.CreatedAt = DateTime.UtcNow;
user.UpdatedAt = DateTime.UtcNow;
_context.Users.Add(user);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetUser), new { id = user.Id }, user);
}
//PUT: api/users/5
[HttpPut("{id}")]
public async Task<IActionResult> UpdateUser(int id, User user)
{
if (id != user.Id)
{
return BadRequest();
}
var existingUser = await _context.Users.FindAsync(id);
if (existingUser == null)
{
return NotFound();
}
existingUser.Username = user.Username;
existingUser.Email = user.Email;
if (!string.IsNullOrEmpty(user.PasswordHash))
{
existingUser.PasswordHash = PasswordHasher.HashPassword(user.PasswordHash);
}
existingUser.FirstName = user.FirstName;
existingUser.LastName = user.LastName;
existingUser.MandantId = user.MandantId;
existingUser.IsActive = user.IsActive;
existingUser.UpdatedAt = DateTime.UtcNow;
_context.Entry(existingUser).State = EntityState.Modified;
await _context.SaveChangesAsync();
return NoContent();
}
//DELETE: api/users/5
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteUser(int id)
{
var user = await _context.Users.FindAsync(id);
if(user == null)
{
return NotFound();
}
_context.Users.Remove(user);
await _context.SaveChangesAsync();
return NoContent();
}
}
}