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 AspNetCore.Security.Jwt;
using MongoDB.Bson; using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Attributes;
using MyCore.Interfaces.DTO;
using MyCore.Interfaces.Models; using MyCore.Interfaces.Models;
namespace MyCore.Interfaces.Models namespace MyCore.Interfaces.Models
@ -87,6 +88,17 @@ namespace MyCore.Interfaces.Models
[BsonElement("DeviceIds")] [BsonElement("DeviceIds")]
public ScreenDevice[] DeviceIds { get; set; } 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.Interfaces.Models;
using MyCore.Service.Services; using MyCore.Service.Services;
using MyCore.Services; using MyCore.Services;
using MyCore.Interfaces.DTO;
namespace MyCore.Controllers namespace MyCore.Controllers
{ {
@ -32,11 +34,18 @@ namespace MyCore.Controllers
/// Get a list of user /// Get a list of user
/// </summary> /// </summary>
[HttpGet] [HttpGet]
public ActionResult<IEnumerable<UserInfo>> Get() public ObjectResult Get()
{ {
//return new string[] { "value1", "value2" }; try
//return _userService.GetUsers(); {
return null; 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 /// Get a specific user
/// </summary> /// </summary>
/// <param name="id">id user</param> /// <param name="id">id user</param>
[ProducesResponseType(typeof(UserInfoDetailDTO), 200)]
[HttpGet("{id}")] [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 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 // POST: User/Create
@ -67,8 +81,11 @@ namespace MyCore.Controllers
/// ///
/// </summary> /// </summary>
[AllowAnonymous] [AllowAnonymous]
[ProducesResponseType(typeof(UserInfoDetailDTO), 200)]
[HttpPost] [HttpPost]
public ActionResult<UserInfo> CreateUser([FromBody] UserInfo newUser) public ObjectResult CreateUser([FromBody] UserInfo newUser)
{
try
{ {
if (newUser != null) if (newUser != null)
{ {
@ -84,9 +101,17 @@ namespace MyCore.Controllers
UserInfo userCreated = _userService.Create(newUser); UserInfo userCreated = _userService.Create(newUser);
return userCreated; return new OkObjectResult(userCreated.ToDTO());
}
else {
// TODO
return new ObjectResult("An error has occurred") { StatusCode = 500 };
}
}
catch (Exception ex)
{
return new ObjectResult(ex.Message) { StatusCode = 500 };
} }
return StatusCode(500);
} }
@ -94,35 +119,52 @@ namespace MyCore.Controllers
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[ProducesResponseType(typeof(UserInfoDetailDTO), 200)]
[HttpPut] [HttpPut]
public ActionResult<UserInfo> UpdateUser([FromBody] UserInfo updatedUser) public ObjectResult UpdateUser([FromBody] UserInfo updatedUser)
{ {
try
{
// TODO ! Add object id verification
if (updatedUser != null) if (updatedUser != null)
{ {
List<UserInfo> users = _userService.GetAll(); UserInfo user = _userService.GetById(updatedUser.Id);
if (!users.Select(u => u.Email).Contains(updatedUser.Email)) if (user != null)
{ {
return NotFound("The user was not found"); return NotFound("The user was not found");
} }
UserInfo userModified = _userService.Update(updatedUser.Id, updatedUser); UserInfo userModified = _userService.Update(updatedUser.Id, updatedUser);
return userModified; return new OkObjectResult(userModified.ToDTO());
}
else {
// TODO
return new ObjectResult("An error has occurred") { StatusCode = 500 };
}
}
catch (Exception ex)
{
return new ObjectResult(ex.Message) { StatusCode = 500 };
} }
return StatusCode(500);
} }
// DELETE: User/Delete // DELETE: User/Delete
[HttpDelete("{id}")] [HttpDelete("{id}")]
public ActionResult DeleteUser(string id) public ObjectResult DeleteUser(string id)
{ {
try
{
// TODO ! Add object id verification
if (id != null) if (id != null)
{ {
List<UserInfo> users = _userService.GetAll(); UserInfo user = _userService.GetById(id);
if (!users.Select(u => u.Id).Contains(id)) if (user != null)
{ {
return NotFound("The user was not found"); return NotFound("The user was not found");
} }
@ -131,7 +173,16 @@ namespace MyCore.Controllers
return Accepted("The user has been deleted"); return Accepted("The user has been deleted");
} }
return StatusCode(500); else
{
// TODO
return new ObjectResult("An error has occurred") { 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.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.Azure.Containers.Tools.Targets" Version="1.0.2105168" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" /> <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="MQTTnet" Version="3.0.8" />
<PackageReference Include="NSwag.AspNetCore" Version="13.9.2" /> <PackageReference Include="NSwag.AspNetCore" Version="13.9.2" />
<PackageReference Include="ServiceStack.Client" Version="5.8.0" /> <PackageReference Include="ServiceStack.Client" Version="5.8.0" />

View File

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