blob: 0d3211bb5db77c0f3e94970ba8d08217385b1d0a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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<List<UserDto>> 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();
}
}
}
|