diff --git a/MyCore.Interfaces/DTO/UserInfoDetailDTO.cs b/MyCore.Interfaces/DTO/UserInfoDetailDTO.cs new file mode 100644 index 0000000..3d8272d --- /dev/null +++ b/MyCore.Interfaces/DTO/UserInfoDetailDTO.cs @@ -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 + + } +} diff --git a/MyCore.Interfaces/Models/MyControlPanel/Database/UserInfo.cs b/MyCore.Interfaces/Models/MyControlPanel/Database/UserInfo.cs index 3a91ed5..0f2f5f2 100644 --- a/MyCore.Interfaces/Models/MyControlPanel/Database/UserInfo.cs +++ b/MyCore.Interfaces/Models/MyControlPanel/Database/UserInfo.cs @@ -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, + }; + } + } } diff --git a/MyCore/Controllers/MyControlPanel/UserController.cs b/MyCore/Controllers/MyControlPanel/UserController.cs index 61028a7..bbdcdbd 100644 --- a/MyCore/Controllers/MyControlPanel/UserController.cs +++ b/MyCore/Controllers/MyControlPanel/UserController.cs @@ -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 /// [HttpGet] - public ActionResult> Get() + public ObjectResult Get() { - //return new string[] { "value1", "value2" }; - //return _userService.GetUsers(); - return null; + try + { + List 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 /// /// id user + [ProducesResponseType(typeof(UserInfoDetailDTO), 200)] [HttpGet("{id}")] - public ActionResult Get(string id) + public ObjectResult Get(string id) { - if (id != null) + try { - List 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 /// /// [AllowAnonymous] + [ProducesResponseType(typeof(UserInfoDetailDTO), 200)] [HttpPost] - public ActionResult 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 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 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 /// /// /// + [ProducesResponseType(typeof(UserInfoDetailDTO), 200)] [HttpPut] - public ActionResult UpdateUser([FromBody] UserInfo updatedUser) + public ObjectResult UpdateUser([FromBody] UserInfo updatedUser) { - if (updatedUser != null) + try { - List 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 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 }; + } } } } diff --git a/MyCore/MyCore.csproj b/MyCore/MyCore.csproj index 1d335f0..36fe0cd 100644 --- a/MyCore/MyCore.csproj +++ b/MyCore/MyCore.csproj @@ -25,7 +25,7 @@ - + diff --git a/MyCore/Properties/launchSettings.json b/MyCore/Properties/launchSettings.json index 05f3a87..e2756b7 100644 --- a/MyCore/Properties/launchSettings.json +++ b/MyCore/Properties/launchSettings.json @@ -12,7 +12,7 @@ "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, - "launchUrl": "api/test", + "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_URLS": "http://*:5000/", "ASPNETCORE_ENVIRONMENT": "Development"