106 lines
3.1 KiB
C#
106 lines
3.1 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
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
|
|
[AllowAnonymous]
|
|
[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();
|
|
}
|
|
}
|
|
}
|