aboutsummaryrefslogtreecommitdiff
path: root/src/Web/DevHive.Web/Controllers
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-03-13 11:44:01 +0200
committertranstrike <transtrike@gmail.com>2021-03-13 11:44:25 +0200
commit93ded2b68a31fc9da643ac65955219e4f306ab82 (patch)
tree9647a722d5974337f999da34b9a023114b0a9324 /src/Web/DevHive.Web/Controllers
parent441f04790659a439c0054b7b06130d14cc2eb90b (diff)
downloadDevHive-93ded2b68a31fc9da643ac65955219e4f306ab82.tar
DevHive-93ded2b68a31fc9da643ac65955219e4f306ab82.tar.gz
DevHive-93ded2b68a31fc9da643ac65955219e4f306ab82.zip
XML Docs on all controllers
Diffstat (limited to 'src/Web/DevHive.Web/Controllers')
-rw-r--r--src/Web/DevHive.Web/Controllers/CommentController.cs38
-rw-r--r--src/Web/DevHive.Web/Controllers/FeedController.cs15
-rw-r--r--src/Web/DevHive.Web/Controllers/LanguageController.cs32
-rw-r--r--src/Web/DevHive.Web/Controllers/PostController.cs34
-rw-r--r--src/Web/DevHive.Web/Controllers/ProfilePictureController.cs18
-rw-r--r--src/Web/DevHive.Web/Controllers/RoleController.cs24
-rw-r--r--src/Web/DevHive.Web/Controllers/TechnologyController.cs25
-rw-r--r--src/Web/DevHive.Web/Controllers/UserController.cs6
8 files changed, 177 insertions, 15 deletions
diff --git a/src/Web/DevHive.Web/Controllers/CommentController.cs b/src/Web/DevHive.Web/Controllers/CommentController.cs
index 1722801..8fa3577 100644
--- a/src/Web/DevHive.Web/Controllers/CommentController.cs
+++ b/src/Web/DevHive.Web/Controllers/CommentController.cs
@@ -10,6 +10,9 @@ using DevHive.Common.Jwt.Interfaces;
namespace DevHive.Web.Controllers
{
+ /// <summary>
+ /// All endpoints for interacting with the comments layer
+ /// </summary>
[ApiController]
[Route("/api/[controller]")]
[Authorize(Roles = "User,Admin")]
@@ -26,6 +29,13 @@ namespace DevHive.Web.Controllers
this._jwtService = jwtService;
}
+ /// <summary>
+ /// Create a comment and attach it to a post
+ /// </summary>
+ /// <param name="userId">The useer's Id</param>
+ /// <param name="createCommentWebModel">The new comment's parametars</param>
+ /// <param name="authorization">JWT Bearer token</param>
+ /// <returns>The comment's Id</returns>
[HttpPost]
public async Task<IActionResult> AddComment(Guid userId, [FromBody] CreateCommentWebModel createCommentWebModel, [FromHeader] string authorization)
{
@@ -46,16 +56,28 @@ namespace DevHive.Web.Controllers
new OkObjectResult(new { Id = id });
}
+ /// <summary>
+ /// Query comment's data by it's Id
+ /// </summary>
+ /// <param name="commentId">The comment's Id</param>
+ /// <returns>Full data model of the comment</returns>
[HttpGet]
[AllowAnonymous]
- public async Task<IActionResult> GetCommentById(Guid id)
+ public async Task<IActionResult> GetCommentById(Guid commentId)
{
- ReadCommentServiceModel readCommentServiceModel = await this._commentService.GetCommentById(id);
+ ReadCommentServiceModel readCommentServiceModel = await this._commentService.GetCommentById(commentId);
ReadCommentWebModel readCommentWebModel = this._commentMapper.Map<ReadCommentWebModel>(readCommentServiceModel);
return new OkObjectResult(readCommentWebModel);
}
+ /// <summary>
+ /// Update comment's parametars. Comment creator only!
+ /// </summary>
+ /// <param name="userId">The comment creator's Id</param>
+ /// <param name="updateCommentWebModel">New comment's parametars</param>
+ /// <param name="authorization">JWT Bearer token</param>
+ /// <returns>Ok result</returns>
[HttpPut]
public async Task<IActionResult> UpdateComment(Guid userId, [FromBody] UpdateCommentWebModel updateCommentWebModel, [FromHeader] string authorization)
{
@@ -73,13 +95,19 @@ namespace DevHive.Web.Controllers
new OkObjectResult(new { Id = id });
}
+ /// <summary>
+ /// Delete a comment. Comment creator only!
+ /// </summary>
+ /// <param name="commentId">Comment's Id</param>
+ /// <param name="authorization">JWT Bearer token</param>
+ /// <returns>Ok result</returns>
[HttpDelete]
- public async Task<IActionResult> DeleteComment(Guid id, [FromHeader] string authorization)
+ public async Task<IActionResult> DeleteComment(Guid commentId, [FromHeader] string authorization)
{
- if (!await this._commentService.ValidateJwtForComment(id, authorization))
+ if (!await this._commentService.ValidateJwtForComment(commentId, authorization))
return new UnauthorizedResult();
- return await this._commentService.DeleteComment(id) ?
+ return await this._commentService.DeleteComment(commentId) ?
new OkResult() :
new BadRequestObjectResult("Could not delete Comment");
}
diff --git a/src/Web/DevHive.Web/Controllers/FeedController.cs b/src/Web/DevHive.Web/Controllers/FeedController.cs
index abca3e4..37532a9 100644
--- a/src/Web/DevHive.Web/Controllers/FeedController.cs
+++ b/src/Web/DevHive.Web/Controllers/FeedController.cs
@@ -10,6 +10,9 @@ using Microsoft.AspNetCore.Mvc;
namespace DevHive.Web.Controllers
{
+ /// <summary>
+ /// All endpoints for interacting with the feed layer
+ /// </summary>
[ApiController]
[Route("/api/[controller]")]
[Authorize(Roles = "User,Admin")]
@@ -24,6 +27,12 @@ namespace DevHive.Web.Controllers
this._mapper = mapper;
}
+ /// <summary>
+ /// Query posts for user's feed
+ /// </summary>
+ /// <param name="userId">The user's Id, whose feed is begin queried</param>
+ /// <param name="getPageWebModel">Page parametars</param>
+ /// <returns>A page of the feed</returns>
[HttpPost]
[Route("GetPosts")]
public async Task<IActionResult> GetPosts(Guid userId, [FromBody] GetPageWebModel getPageWebModel)
@@ -37,6 +46,12 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(readPageWebModel);
}
+ /// <summary>
+ /// Query a user profile's posts
+ /// </summary>
+ /// <param name="username">The user's username, whose posts are being queried</param>
+ /// <param name="getPageWebModel">Page parametars</param>
+ /// <returns>A page of the user's posts</returns>
[HttpPost]
[Route("GetUserPosts")]
[AllowAnonymous]
diff --git a/src/Web/DevHive.Web/Controllers/LanguageController.cs b/src/Web/DevHive.Web/Controllers/LanguageController.cs
index 5b0d5de..665fb66 100644
--- a/src/Web/DevHive.Web/Controllers/LanguageController.cs
+++ b/src/Web/DevHive.Web/Controllers/LanguageController.cs
@@ -10,6 +10,9 @@ using Microsoft.AspNetCore.Mvc;
namespace DevHive.Web.Controllers
{
+ /// <summary>
+ /// All endpoints for interacting with the language layer
+ /// </summary>
[ApiController]
[Route("/api/[controller]")]
public class LanguageController
@@ -23,6 +26,11 @@ namespace DevHive.Web.Controllers
this._languageMapper = mapper;
}
+ /// <summary>
+ /// Create a new language, so users can have a choice. Admin only!
+ /// </summary>
+ /// <param name="createLanguageWebModel">The new language's parametars</param>
+ /// <returns>The new language's Id</returns>
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Create([FromBody] CreateLanguageWebModel createLanguageWebModel)
@@ -36,6 +44,11 @@ namespace DevHive.Web.Controllers
new OkObjectResult(new { Id = id });
}
+ /// <summary>
+ /// Query full language data by Id
+ /// </summary>
+ /// <param name="id">The language's Id</param>
+ /// <returns>Full language data</returns>
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> GetById(Guid id)
@@ -46,6 +59,10 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(languageWebModel);
}
+ /// <summary>
+ /// Query all languages in the database
+ /// </summary>
+ /// <returns>All languages in the database</returns>
[HttpGet]
[Route("GetLanguages")]
[Authorize(Roles = "User,Admin")]
@@ -57,6 +74,12 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(languageWebModels);
}
+ /// <summary>
+ /// Alter language's properties. Admin only!
+ /// </summary>
+ /// <param name="id">The language's Id</param>
+ /// <param name="updateModel">The langauge's new parametars</param>
+ /// <returns>Ok result</returns>
[HttpPut]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Update(Guid id, [FromBody] UpdateLanguageWebModel updateModel)
@@ -72,11 +95,16 @@ namespace DevHive.Web.Controllers
return new OkResult();
}
+ /// <summary>
+ /// Delete a language. Admin only!
+ /// </summary>
+ /// <param name="langaugeId">The language's Id</param>
+ /// <returns>Ok result</returns>
[HttpDelete]
[Authorize(Roles = "Admin")]
- public async Task<IActionResult> Delete(Guid id)
+ public async Task<IActionResult> Delete(Guid langaugeId)
{
- bool result = await this._languageService.DeleteLanguage(id);
+ bool result = await this._languageService.DeleteLanguage(langaugeId);
if (!result)
return new BadRequestObjectResult("Could not delete Language");
diff --git a/src/Web/DevHive.Web/Controllers/PostController.cs b/src/Web/DevHive.Web/Controllers/PostController.cs
index 309070c..44b291d 100644
--- a/src/Web/DevHive.Web/Controllers/PostController.cs
+++ b/src/Web/DevHive.Web/Controllers/PostController.cs
@@ -10,6 +10,9 @@ using DevHive.Common.Jwt.Interfaces;
namespace DevHive.Web.Controllers
{
+ /// <summary>
+ /// All endpoints for interacting with the post layer
+ /// </summary>
[ApiController]
[Route("/api/[controller]")]
[Authorize(Roles = "User,Admin")]
@@ -27,6 +30,13 @@ namespace DevHive.Web.Controllers
}
#region Create
+ /// <summary>
+ /// Create a new post
+ /// </summary>
+ /// <param name="userId">The user's Id</param>
+ /// <param name="createPostWebModel">The new post's data</param>
+ /// <param name="authorization">JWT Bearer token</param>
+ /// <returns>New post's Id</returns>
[HttpPost]
public async Task<IActionResult> Create(Guid userId, [FromForm] CreatePostWebModel createPostWebModel, [FromHeader] string authorization)
{
@@ -46,6 +56,11 @@ namespace DevHive.Web.Controllers
#endregion
#region Read
+ /// <summary>
+ /// Query full post's data by it's Id
+ /// </summary>
+ /// <param name="id">The post's Id</param>
+ /// <returns>Full data model of the post</returns>
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> GetById(Guid id)
@@ -58,6 +73,13 @@ namespace DevHive.Web.Controllers
#endregion
#region Update
+ /// <summary>
+ /// Update post's data. Creator only!
+ /// </summary>
+ /// <param name="userId">The post creator's Id</param>
+ /// <param name="updatePostWebModel">The new params of the post</param>
+ /// <param name="authorization">JWT Bearer token</param>
+ /// <returns>The post's Id</returns>
[HttpPut]
public async Task<IActionResult> Update(Guid userId, [FromForm] UpdatePostWebModel updatePostWebModel, [FromHeader] string authorization)
{
@@ -80,13 +102,19 @@ namespace DevHive.Web.Controllers
#endregion
#region Delete
+ /// <summary>
+ /// Delete a post. Creator only!
+ /// </summary>
+ /// <param name="postId">Post's Id</param>
+ /// <param name="authorization">JWT Bearer token</param>
+ /// <returns>Ok result</returns>
[HttpDelete]
- public async Task<IActionResult> Delete(Guid id, [FromHeader] string authorization)
+ public async Task<IActionResult> Delete(Guid postId, [FromHeader] string authorization)
{
- if (!await this._postService.ValidateJwtForPost(id, authorization))
+ if (!await this._postService.ValidateJwtForPost(postId, authorization))
return new UnauthorizedResult();
- return await this._postService.DeletePost(id) ?
+ return await this._postService.DeletePost(postId) ?
new OkResult() :
new BadRequestObjectResult("Could not delete Post");
}
diff --git a/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs b/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs
index d3971ff..2eec99e 100644
--- a/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs
+++ b/src/Web/DevHive.Web/Controllers/ProfilePictureController.cs
@@ -1,16 +1,32 @@
using System;
using System.Threading.Tasks;
-using DevHive.Services.Models.User;
using DevHive.Web.Models.User;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace DevHive.Web.Controllers
{
+ /// <summary>
+ /// All endpoints for interacting with the profile picture layer
+ /// </summary>
[ApiController]
[Route("api/[controller]")]
public class ProfilePictureController
{
+ // private readonly ProfilePictureService _profilePictureService;
+
+ // public ProfilePictureController(ProfilePictureService profilePictureService)
+ // {
+ // this._profilePictureService = profilePictureService;
+ // }
+
+ /// <summary>
+ /// Alter the profile picture of a user
+ /// </summary>
+ /// <param name="userId">The user's Id</param>
+ /// <param name="updateProfilePictureWebModel">The new profile picture</param>
+ /// <param name="authorization">JWT Bearer Token</param>
+ /// <returns>???</returns>
[HttpPut]
[Route("ProfilePicture")]
[Authorize(Roles = "User,Admin")]
diff --git a/src/Web/DevHive.Web/Controllers/RoleController.cs b/src/Web/DevHive.Web/Controllers/RoleController.cs
index 1465795..ebb305e 100644
--- a/src/Web/DevHive.Web/Controllers/RoleController.cs
+++ b/src/Web/DevHive.Web/Controllers/RoleController.cs
@@ -9,6 +9,9 @@ using Microsoft.AspNetCore.Authorization;
namespace DevHive.Web.Controllers
{
+ /// <summary>
+ /// All endpoints for interacting with the roles layer
+ /// </summary>
[ApiController]
[Route("/api/[controller]")]
public class RoleController
@@ -22,6 +25,11 @@ namespace DevHive.Web.Controllers
this._roleMapper = mapper;
}
+ /// <summary>
+ /// Create a new role for the roles hierarchy. Admin only!
+ /// </summary>
+ /// <param name="createRoleWebModel">The new role's parametars</param>
+ /// <returns>The new role's Id</returns>
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Create([FromBody] CreateRoleWebModel createRoleWebModel)
@@ -36,6 +44,11 @@ namespace DevHive.Web.Controllers
new OkObjectResult(new { Id = id });
}
+ /// <summary>
+ /// Get a role's full data, querying it by it's Id
+ /// </summary>
+ /// <param name="id">The role's Id</param>
+ /// <returns>Full info of the role</returns>
[HttpGet]
[Authorize(Roles = "User,Admin")]
public async Task<IActionResult> GetById(Guid id)
@@ -46,6 +59,12 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(roleWebModel);
}
+ /// <summary>
+ /// Update a role's parametars. Admin only!
+ /// </summary>
+ /// <param name="id">The role's Id</param>
+ /// <param name="updateRoleWebModel">The new parametrats for that role</param>
+ /// <returns>Ok result</returns>
[HttpPut]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Update(Guid id, [FromBody] UpdateRoleWebModel updateRoleWebModel)
@@ -62,6 +81,11 @@ namespace DevHive.Web.Controllers
return new OkResult();
}
+ /// <summary>
+ /// Delete a role. Admin only!
+ /// </summary>
+ /// <param name="id">The role's Id</param>
+ /// <returns>Ok result</returns>
[HttpDelete]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Delete(Guid id)
diff --git a/src/Web/DevHive.Web/Controllers/TechnologyController.cs b/src/Web/DevHive.Web/Controllers/TechnologyController.cs
index ba3f04a..ecf2bd7 100644
--- a/src/Web/DevHive.Web/Controllers/TechnologyController.cs
+++ b/src/Web/DevHive.Web/Controllers/TechnologyController.cs
@@ -10,6 +10,9 @@ using Microsoft.AspNetCore.Mvc;
namespace DevHive.Web.Controllers
{
+ /// <summary>
+ /// All endpoints for interacting with the technology layer
+ /// </summary>
[ApiController]
[Route("/api/[controller]")]
public class TechnologyController
@@ -27,7 +30,7 @@ namespace DevHive.Web.Controllers
/// Create a new technology, so users can have a choice. Admin only!
/// </summary>
/// <param name="createTechnologyWebModel">Data for the new technology</param>
- /// <returns></returns>
+ /// <returns>The new technology's Id</returns>
[HttpPost]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Create([FromBody] CreateTechnologyWebModel createTechnologyWebModel)
@@ -41,6 +44,11 @@ namespace DevHive.Web.Controllers
new OkObjectResult(new { Id = id });
}
+ /// <summary>
+ /// Get technology's data by it's Id
+ /// </summary>
+ /// <param name="id">The technology's Id</param>
+ /// <returns>The technology's full data</returns>
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> GetById(Guid id)
@@ -51,6 +59,10 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(readTechnologyWebModel);
}
+ /// <summary>
+ /// Get all technologies from our database
+ /// </summary>
+ /// <returns>All technologies</returns>
[HttpGet]
[Route("GetTechnologies")]
[Authorize(Roles = "User,Admin")]
@@ -62,6 +74,12 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(languageWebModels);
}
+ /// <summary>
+ /// Alter a technology's parameters. Admin only!
+ /// </summary>
+ /// <param name="id">Technology's Id</param>
+ /// <param name="updateModel">The new parametars</param>
+ /// <returns>Ok result</returns>
[HttpPut]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Update(Guid id, [FromBody] UpdateTechnologyWebModel updateModel)
@@ -77,6 +95,11 @@ namespace DevHive.Web.Controllers
return new OkResult();
}
+ /// <summary>
+ /// Delete a etchnology from the database. Admin only!
+ /// </summary>
+ /// <param name="id">The technology's Id</param>
+ /// <returns>Ok result</returns>
[HttpDelete]
[Authorize(Roles = "Admin")]
public async Task<IActionResult> Delete(Guid id)
diff --git a/src/Web/DevHive.Web/Controllers/UserController.cs b/src/Web/DevHive.Web/Controllers/UserController.cs
index 86076e5..4d01447 100644
--- a/src/Web/DevHive.Web/Controllers/UserController.cs
+++ b/src/Web/DevHive.Web/Controllers/UserController.cs
@@ -75,7 +75,7 @@ namespace DevHive.Web.Controllers
/// <summary>
/// Get a User's information using the Guid
/// </summary>
- /// <param name="id">User's Guid</param>
+ /// <param name="id">User's Id</param>
/// <param name="authorization">The JWT Token, contained in the header and used for validation</param>
/// <returns>A full User's read model</returns>
[HttpGet]
@@ -112,7 +112,7 @@ namespace DevHive.Web.Controllers
/// <summary>
/// Full update on User's data. A PUSTINQK can only edit his account
/// </summary>
- /// <param name="id">The User's Guid</param>
+ /// <param name="id">The User's Id</param>
/// <param name="updateUserWebModel">A full User update model</param>
/// <param name="authorization">The JWT Token, contained in the header and used for validation</param>
/// <returns>A full User's read model</returns>
@@ -137,7 +137,7 @@ namespace DevHive.Web.Controllers
/// <summary>
/// Delete a User with his Id. A PUSTINQK can only delete his account. An Admin can delete all accounts
/// </summary>
- /// <param name="id">The User's Guid</param>
+ /// <param name="id">The User's Id</param>
/// <param name="authorization">The JWT Token, contained in the header and used for validation</param>
/// <returns>Ok, BadRequest or Unauthorized</returns>
[HttpDelete]