Fix usercontroller

This commit is contained in:
Thomas Fransolet 2021-01-01 18:10:37 +01:00
parent 90e27b6ae4
commit c92db12495
5 changed files with 126 additions and 46 deletions

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace MyCore.Interfaces.DTO
{
public class UserInfoDetailDTO
{
public string Id { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
// TODO
}
}

View File

@ -5,6 +5,7 @@ using System.Threading.Tasks;
//using AspNetCore.Security.Jwt;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MyCore.Interfaces.DTO;
using MyCore.Interfaces.Models;
namespace MyCore.Interfaces.Models
@ -87,6 +88,17 @@ namespace MyCore.Interfaces.Models
[BsonElement("DeviceIds")]
public ScreenDevice[] DeviceIds { get; set; }
public UserInfoDetailDTO ToDTO()
{
return new UserInfoDetailDTO()
{
Id = Id,
Email = Email,
FirstName = FirstName,
LastName = LastName,
};
}
}
}

View File

@ -10,6 +10,8 @@ using MQTTnet.Server;
using MyCore.Interfaces.Models;
using MyCore.Service.Services;
using MyCore.Services;
using MyCore.Interfaces.DTO;
namespace MyCore.Controllers
{
@ -32,11 +34,18 @@ namespace MyCore.Controllers
/// Get a list of user
/// </summary>
[HttpGet]
public ActionResult<IEnumerable<UserInfo>> Get()
public ObjectResult Get()
{
//return new string[] { "value1", "value2" };
//return _userService.GetUsers();
return null;
try
{
List<UserInfo> users = _userService.GetAll();
return new OkObjectResult(users);
}
catch (Exception ex)
{
return new ObjectResult(ex.Message) { StatusCode = 500 };
}
}
@ -45,21 +54,26 @@ namespace MyCore.Controllers
/// Get a specific user
/// </summary>
/// <param name="id">id user</param>
[ProducesResponseType(typeof(UserInfoDetailDTO), 200)]
[HttpGet("{id}")]
public ActionResult<UserInfo> Get(string id)
public ObjectResult Get(string id)
{
if (id != null)
try
{
List<UserInfo> users = _userService.GetAll();
// TODO ! Add object id verification
UserInfo user = _userService.GetById(id);
if (!users.Select(u => u.Id).Contains(id))
if (user == null)
{
return Conflict("This user was not found");
}
return _userService.GetById(id);
return new OkObjectResult(user.ToDTO());
}
catch (Exception ex)
{
return new ObjectResult(ex.Message) { StatusCode = 500 };
}
return StatusCode(500);
}
// POST: User/Create
@ -67,26 +81,37 @@ namespace MyCore.Controllers
///
/// </summary>
[AllowAnonymous]
[ProducesResponseType(typeof(UserInfoDetailDTO), 200)]
[HttpPost]
public ActionResult<UserInfo> CreateUser([FromBody] UserInfo newUser)
public ObjectResult CreateUser([FromBody] UserInfo newUser)
{
if (newUser != null)
try
{
newUser.Token = _tokenService.GenerateToken(newUser.Email).ToString();
newUser.DateCreation = DateTime.Now;
List<UserInfo> users = _userService.GetAll();
if (users.Select(u => u.Email).Contains(newUser.Email))
if (newUser != null)
{
return Conflict("This Email is already used");
newUser.Token = _tokenService.GenerateToken(newUser.Email).ToString();
newUser.DateCreation = DateTime.Now;
List<UserInfo> users = _userService.GetAll();
if (users.Select(u => u.Email).Contains(newUser.Email))
{
return Conflict("This Email is already used");
}
UserInfo userCreated = _userService.Create(newUser);
return new OkObjectResult(userCreated.ToDTO());
}
else {
// TODO
return new ObjectResult("An error has occurred") { StatusCode = 500 };
}
UserInfo userCreated = _userService.Create(newUser);
return userCreated;
}
return StatusCode(500);
catch (Exception ex)
{
return new ObjectResult(ex.Message) { StatusCode = 500 };
}
}
@ -94,44 +119,70 @@ namespace MyCore.Controllers
/// <summary>
///
/// </summary>
[ProducesResponseType(typeof(UserInfoDetailDTO), 200)]
[HttpPut]
public ActionResult<UserInfo> UpdateUser([FromBody] UserInfo updatedUser)
public ObjectResult UpdateUser([FromBody] UserInfo updatedUser)
{
if (updatedUser != null)
try
{
List<UserInfo> users = _userService.GetAll();
// TODO ! Add object id verification
if (!users.Select(u => u.Email).Contains(updatedUser.Email))
if (updatedUser != null)
{
return NotFound("The user was not found");
UserInfo user = _userService.GetById(updatedUser.Id);
if (user != null)
{
return NotFound("The user was not found");
}
UserInfo userModified = _userService.Update(updatedUser.Id, updatedUser);
return new OkObjectResult(userModified.ToDTO());
}
else {
// TODO
return new ObjectResult("An error has occurred") { StatusCode = 500 };
}
UserInfo userModified = _userService.Update(updatedUser.Id, updatedUser);
return userModified;
}
return StatusCode(500);
catch (Exception ex)
{
return new ObjectResult(ex.Message) { StatusCode = 500 };
}
}
// DELETE: User/Delete
[HttpDelete("{id}")]
public ActionResult DeleteUser(string id)
public ObjectResult DeleteUser(string id)
{
if (id != null)
try
{
List<UserInfo> users = _userService.GetAll();
// TODO ! Add object id verification
if (!users.Select(u => u.Id).Contains(id))
if (id != null)
{
return NotFound("The user was not found");
UserInfo user = _userService.GetById(id);
if (user != null)
{
return NotFound("The user was not found");
}
_userService.Remove(id);
return Accepted("The user has been deleted");
}
else
{
// TODO
return new ObjectResult("An error has occurred") { StatusCode = 500 };
}
_userService.Remove(id);
return Accepted("The user has been deleted");
}
return StatusCode(500);
catch (Exception ex)
{
return new ObjectResult(ex.Message) { StatusCode = 500 };
}
}
}
}

View File

@ -25,7 +25,7 @@
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.0.2105168" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
<PackageReference Include="MongoDB.Driver" Version="2.8.0" />
<PackageReference Include="MongoDB.Driver" Version="2.11.5" />
<PackageReference Include="MQTTnet" Version="3.0.8" />
<PackageReference Include="NSwag.AspNetCore" Version="13.9.2" />
<PackageReference Include="ServiceStack.Client" Version="5.8.0" />

View File

@ -12,7 +12,7 @@
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/test",
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_URLS": "http://*:5000/",
"ASPNETCORE_ENVIRONMENT": "Development"