From 3f4c0720e1e3421431e7baa20882a4a4512a7fab Mon Sep 17 00:00:00 2001 From: ivar Date: Sun, 19 Oct 2025 23:41:23 +0200 Subject: Initial --- src/Controllers/UsersController.cs | 93 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/Controllers/UsersController.cs (limited to 'src/Controllers/UsersController.cs') diff --git a/src/Controllers/UsersController.cs b/src/Controllers/UsersController.cs new file mode 100644 index 0000000..0d3211b --- /dev/null +++ b/src/Controllers/UsersController.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using IOL.Fagprove.Data; +using IOL.Fagprove.Data.DTOs; +using IOL.Fagprove.Data.Models; +using IOL.Fagprove.Services.Interfaces; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace IOL.Fagprove.Controllers +{ + [Authorize("Administrator")] + public class UsersController : BaseController + { + private readonly AppDbContext _context; + private readonly IUserService _userService; + + public UsersController(AppDbContext context, IUserService userService) + { + _context = context; + _userService = userService; + } + + [HttpGet] + public ActionResult> GetUsers() + { + return _context.Users.Select(u => new UserDto + { + Email = u.Email, + Id = u.Id, + Name = u.Name, + Role = u.Role + }).ToList(); + } + + [HttpPost("create")] + public ActionResult CreateUser(UserDto payload) + { + var userExists = _context.Users.Any(u => u.Email == payload.Email); + if (userExists) + return BadRequest(new {error = "En bruker med den e-postadressen finnes allerede"}); + var newUser = new User + { + Email = payload.Email, + Name = payload.Name, + Role = payload.Role, + CreatedBy = LoggedInUser.Id, + CreatedUtc = DateTime.UtcNow, + Id = Guid.NewGuid() + }; + _context.Users.Add(newUser); + _context.SaveChanges(); + var welcomeTask = _userService.SetTemporaryPasswordAndSendWelcomeMail(newUser); + if (!welcomeTask) + return StatusCode(500, new {error = "En feil oppstod, prøv igjen senere"}); + return Ok(payload); + } + + [HttpDelete("delete")] + public ActionResult DeleteUser(UserDto payload) + { + var userToDelete = _context.Users.SingleOrDefault(u => u.Id == payload.Id); + if (userToDelete == default) return BadRequest(new {error = "Fant ikke brukeren"}); + _context.Users.Remove(userToDelete); + _context.SaveChanges(); + return Ok(userToDelete.Name); + } + + [HttpPut("update")] + public ActionResult UpdateUser(UserDto payload) + { + var user = _context.Users.SingleOrDefault(u => u.Id == payload.Id); + if (user == default) return BadRequest(new {error = "Fant ikke brukeren"}); + if (user.Email != payload.Email) + { + var userExists = _context.Users.Any(u => u.Email == payload.Email); + if (userExists) return BadRequest(new {error = "En bruker med den e-postadressen finnes allerede"}); + } + user.ModifiedBy = LoggedInUser.Id; + user.ModifiedUtc = DateTime.UtcNow; + user.Email = payload.Email; + user.Name = payload.Name; + user.Role = payload.Role; + _context.Users.Update(user); + _context.Entry(user).Property(x => x.CreatedBy).IsModified = false; + _context.Entry(user).Property(x => x.CreatedUtc).IsModified = false; + _context.Entry(user).Property(x => x.Id).IsModified = false; + _context.SaveChanges(); + return Ok(); + } + } +} \ No newline at end of file -- cgit v1.3