aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-01-30 11:31:21 +0200
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-01-30 11:31:21 +0200
commitff91162eb83dcf19402240ae8fa06f70cbf2b9e0 (patch)
tree2948559f7326c8221f799d4aaf794c5e00c06bd9
parentdde27f48caf455f9b342d68b0a4a5c95f302b9f7 (diff)
downloadDevHive-ff91162eb83dcf19402240ae8fa06f70cbf2b9e0.tar
DevHive-ff91162eb83dcf19402240ae8fa06f70cbf2b9e0.tar.gz
DevHive-ff91162eb83dcf19402240ae8fa06f70cbf2b9e0.zip
Separated comment models, controler and service from post's
-rw-r--r--src/DevHive.Services/Configurations/Mapping/CommentMappings.cs2
-rw-r--r--src/DevHive.Services/Configurations/Mapping/PostMappings.cs2
-rw-r--r--src/DevHive.Services/Interfaces/ICommentService.cs20
-rw-r--r--src/DevHive.Services/Interfaces/IPostService.cs10
-rw-r--r--src/DevHive.Services/Models/Comment/CreateCommentServiceModel.cs (renamed from src/DevHive.Services/Models/Post/Comment/CreateCommentServiceModel.cs)2
-rw-r--r--src/DevHive.Services/Models/Comment/ReadCommentServiceModel.cs (renamed from src/DevHive.Services/Models/Post/Comment/ReadCommentServiceModel.cs)2
-rw-r--r--src/DevHive.Services/Models/Comment/UpdateCommentServiceModel.cs (renamed from src/DevHive.Services/Models/Post/Comment/UpdateCommentServiceModel.cs)2
-rw-r--r--src/DevHive.Services/Models/Feed/ReadPageServiceModel.cs2
-rw-r--r--src/DevHive.Services/Models/Post/CreatePostServiceModel.cs (renamed from src/DevHive.Services/Models/Post/Post/CreatePostServiceModel.cs)2
-rw-r--r--src/DevHive.Services/Models/Post/ReadPostServiceModel.cs (renamed from src/DevHive.Services/Models/Post/Post/ReadPostServiceModel.cs)4
-rw-r--r--src/DevHive.Services/Models/Post/UpdatePostServiceModel.cs (renamed from src/DevHive.Services/Models/Post/Post/UpdatePostServiceModel.cs)2
-rw-r--r--src/DevHive.Services/Services/CommentService.cs156
-rw-r--r--src/DevHive.Services/Services/FeedService.cs2
-rw-r--r--src/DevHive.Services/Services/PostService.cs72
-rw-r--r--src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs4
-rw-r--r--src/DevHive.Web/Configurations/Mapping/CommentMappings.cs7
-rw-r--r--src/DevHive.Web/Configurations/Mapping/PostMappings.cs4
-rw-r--r--src/DevHive.Web/Controllers/CommentController.cs82
-rw-r--r--src/DevHive.Web/Controllers/PostController.cs67
-rw-r--r--src/DevHive.Web/Models/Comment/CreateCommentWebModel.cs (renamed from src/DevHive.Web/Models/Post/Comment/CreateCommentWebModel.cs)2
-rw-r--r--src/DevHive.Web/Models/Comment/ReadCommentWebModel.cs (renamed from src/DevHive.Web/Models/Post/Comment/ReadCommentWebModel.cs)2
-rw-r--r--src/DevHive.Web/Models/Comment/UpdateCommentWebModel.cs (renamed from src/DevHive.Web/Models/Post/Comment/UpdateCommentWebModel.cs)2
-rw-r--r--src/DevHive.Web/Models/Feed/ReadPageWebModel.cs2
-rw-r--r--src/DevHive.Web/Models/Post/CreatePostWebModel.cs (renamed from src/DevHive.Web/Models/Post/Post/CreatePostWebModel.cs)5
-rw-r--r--src/DevHive.Web/Models/Post/ReadPostWebModel.cs (renamed from src/DevHive.Web/Models/Post/Post/ReadPostWebModel.cs)4
-rw-r--r--src/DevHive.Web/Models/Post/UpdatePostWebModel.cs (renamed from src/DevHive.Web/Models/Post/Post/UpdatePostWebModel.cs)2
26 files changed, 291 insertions, 172 deletions
diff --git a/src/DevHive.Services/Configurations/Mapping/CommentMappings.cs b/src/DevHive.Services/Configurations/Mapping/CommentMappings.cs
index ac3c8f6..a43b64e 100644
--- a/src/DevHive.Services/Configurations/Mapping/CommentMappings.cs
+++ b/src/DevHive.Services/Configurations/Mapping/CommentMappings.cs
@@ -1,6 +1,6 @@
using DevHive.Data.Models;
using AutoMapper;
-using DevHive.Services.Models.Post.Comment;
+using DevHive.Services.Models.Comment;
namespace DevHive.Services.Configurations.Mapping
{
diff --git a/src/DevHive.Services/Configurations/Mapping/PostMappings.cs b/src/DevHive.Services/Configurations/Mapping/PostMappings.cs
index c7466d9..81e6ecc 100644
--- a/src/DevHive.Services/Configurations/Mapping/PostMappings.cs
+++ b/src/DevHive.Services/Configurations/Mapping/PostMappings.cs
@@ -1,6 +1,6 @@
using DevHive.Data.Models;
using AutoMapper;
-using DevHive.Services.Models.Post.Post;
+using DevHive.Services.Models.Post;
namespace DevHive.Services.Configurations.Mapping
{
diff --git a/src/DevHive.Services/Interfaces/ICommentService.cs b/src/DevHive.Services/Interfaces/ICommentService.cs
new file mode 100644
index 0000000..e7409a8
--- /dev/null
+++ b/src/DevHive.Services/Interfaces/ICommentService.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Threading.Tasks;
+using DevHive.Services.Models.Comment;
+
+namespace DevHive.Services.Interfaces
+{
+ public interface ICommentService
+ {
+ Task<Guid> AddComment(CreateCommentServiceModel createPostServiceModel);
+
+ Task<ReadCommentServiceModel> GetCommentById(Guid id);
+
+ Task<Guid> UpdateComment(UpdateCommentServiceModel updateCommentServiceModel);
+
+ Task<bool> DeleteComment(Guid id);
+
+ Task<bool> ValidateJwtForCreating(Guid userId, string rawTokenData);
+ Task<bool> ValidateJwtForComment(Guid commentId, string rawTokenData);
+ }
+}
diff --git a/src/DevHive.Services/Interfaces/IPostService.cs b/src/DevHive.Services/Interfaces/IPostService.cs
index 71b558c..d35acfd 100644
--- a/src/DevHive.Services/Interfaces/IPostService.cs
+++ b/src/DevHive.Services/Interfaces/IPostService.cs
@@ -1,26 +1,20 @@
using System;
using System.Threading.Tasks;
-using DevHive.Services.Models.Post.Comment;
-using DevHive.Services.Models.Post.Post;
+using DevHive.Services.Models.Post;
namespace DevHive.Services.Interfaces
{
- public interface IPostService
+ public interface IPostService
{
Task<Guid> CreatePost(CreatePostServiceModel createPostServiceModel);
- Task<Guid> AddComment(CreateCommentServiceModel createPostServiceModel);
Task<ReadPostServiceModel> GetPostById(Guid id);
- Task<ReadCommentServiceModel> GetCommentById(Guid id);
Task<Guid> UpdatePost(UpdatePostServiceModel updatePostServiceModel);
- Task<Guid> UpdateComment(UpdateCommentServiceModel updateCommentServiceModel);
Task<bool> DeletePost(Guid id);
- Task<bool> DeleteComment(Guid id);
Task<bool> ValidateJwtForCreating(Guid userId, string rawTokenData);
Task<bool> ValidateJwtForPost(Guid postId, string rawTokenData);
- Task<bool> ValidateJwtForComment(Guid commentId, string rawTokenData);
}
}
diff --git a/src/DevHive.Services/Models/Post/Comment/CreateCommentServiceModel.cs b/src/DevHive.Services/Models/Comment/CreateCommentServiceModel.cs
index 8d49659..30e919b 100644
--- a/src/DevHive.Services/Models/Post/Comment/CreateCommentServiceModel.cs
+++ b/src/DevHive.Services/Models/Comment/CreateCommentServiceModel.cs
@@ -1,6 +1,6 @@
using System;
-namespace DevHive.Services.Models.Post.Comment
+namespace DevHive.Services.Models.Comment
{
public class CreateCommentServiceModel
{
diff --git a/src/DevHive.Services/Models/Post/Comment/ReadCommentServiceModel.cs b/src/DevHive.Services/Models/Comment/ReadCommentServiceModel.cs
index 12e29a0..3196233 100644
--- a/src/DevHive.Services/Models/Post/Comment/ReadCommentServiceModel.cs
+++ b/src/DevHive.Services/Models/Comment/ReadCommentServiceModel.cs
@@ -1,6 +1,6 @@
using System;
-namespace DevHive.Services.Models.Post.Comment
+namespace DevHive.Services.Models.Comment
{
public class ReadCommentServiceModel
{
diff --git a/src/DevHive.Services/Models/Post/Comment/UpdateCommentServiceModel.cs b/src/DevHive.Services/Models/Comment/UpdateCommentServiceModel.cs
index 3827d4d..3b78200 100644
--- a/src/DevHive.Services/Models/Post/Comment/UpdateCommentServiceModel.cs
+++ b/src/DevHive.Services/Models/Comment/UpdateCommentServiceModel.cs
@@ -1,6 +1,6 @@
using System;
-namespace DevHive.Services.Models.Post.Comment
+namespace DevHive.Services.Models.Comment
{
public class UpdateCommentServiceModel
{
diff --git a/src/DevHive.Services/Models/Feed/ReadPageServiceModel.cs b/src/DevHive.Services/Models/Feed/ReadPageServiceModel.cs
index f291de7..95f6845 100644
--- a/src/DevHive.Services/Models/Feed/ReadPageServiceModel.cs
+++ b/src/DevHive.Services/Models/Feed/ReadPageServiceModel.cs
@@ -1,5 +1,5 @@
using System.Collections.Generic;
-using DevHive.Services.Models.Post.Post;
+using DevHive.Services.Models.Post;
namespace DevHive.Services.Models
{
diff --git a/src/DevHive.Services/Models/Post/Post/CreatePostServiceModel.cs b/src/DevHive.Services/Models/Post/CreatePostServiceModel.cs
index 8676f6c..304eb90 100644
--- a/src/DevHive.Services/Models/Post/Post/CreatePostServiceModel.cs
+++ b/src/DevHive.Services/Models/Post/CreatePostServiceModel.cs
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
-namespace DevHive.Services.Models.Post.Post
+namespace DevHive.Services.Models.Post
{
public class CreatePostServiceModel
{
diff --git a/src/DevHive.Services/Models/Post/Post/ReadPostServiceModel.cs b/src/DevHive.Services/Models/Post/ReadPostServiceModel.cs
index f0a4fe5..04ec6bd 100644
--- a/src/DevHive.Services/Models/Post/Post/ReadPostServiceModel.cs
+++ b/src/DevHive.Services/Models/Post/ReadPostServiceModel.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
-using DevHive.Services.Models.Post.Comment;
+using DevHive.Services.Models.Comment;
using Microsoft.Extensions.FileProviders;
-namespace DevHive.Services.Models.Post.Post
+namespace DevHive.Services.Models.Post
{
public class ReadPostServiceModel
{
diff --git a/src/DevHive.Services/Models/Post/Post/UpdatePostServiceModel.cs b/src/DevHive.Services/Models/Post/UpdatePostServiceModel.cs
index 24b0b74..51b16bc 100644
--- a/src/DevHive.Services/Models/Post/Post/UpdatePostServiceModel.cs
+++ b/src/DevHive.Services/Models/Post/UpdatePostServiceModel.cs
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
-namespace DevHive.Services.Models.Post.Post
+namespace DevHive.Services.Models.Post
{
public class UpdatePostServiceModel
{
diff --git a/src/DevHive.Services/Services/CommentService.cs b/src/DevHive.Services/Services/CommentService.cs
new file mode 100644
index 0000000..e0eb88a
--- /dev/null
+++ b/src/DevHive.Services/Services/CommentService.cs
@@ -0,0 +1,156 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Data.Models;
+using DevHive.Services.Models.Comment;
+using System.IdentityModel.Tokens.Jwt;
+using System.Security.Claims;
+using DevHive.Services.Interfaces;
+using DevHive.Data.Interfaces.Repositories;
+using System.Linq;
+
+namespace DevHive.Services.Services
+{
+ public class CommentService : ICommentService
+ {
+ private readonly IUserRepository _userRepository;
+ private readonly IPostRepository _postRepository;
+ private readonly ICommentRepository _commentRepository;
+ private readonly IMapper _postMapper;
+
+ public CommentService(IUserRepository userRepository, IPostRepository postRepository, ICommentRepository commentRepository, IMapper postMapper)
+ {
+ this._userRepository = userRepository;
+ this._postRepository = postRepository;
+ this._commentRepository = commentRepository;
+ this._postMapper = postMapper;
+ }
+
+ #region Create
+ public async Task<Guid> AddComment(CreateCommentServiceModel createCommentServiceModel)
+ {
+ if (!await this._postRepository.DoesPostExist(createCommentServiceModel.PostId))
+ throw new ArgumentException("Post does not exist!");
+
+ Comment comment = this._postMapper.Map<Comment>(createCommentServiceModel);
+ comment.TimeCreated = DateTime.Now;
+
+ comment.Creator = await this._userRepository.GetByIdAsync(createCommentServiceModel.CreatorId);
+ comment.Post = await this._postRepository.GetByIdAsync(createCommentServiceModel.PostId);
+
+ bool success = await this._commentRepository.AddAsync(comment);
+ if (success)
+ {
+ Comment newComment = await this._commentRepository
+ .GetCommentByIssuerAndTimeCreatedAsync(comment.Creator.Id, comment.TimeCreated);
+
+ return newComment.Id;
+ }
+ else
+ return Guid.Empty;
+ }
+ #endregion
+
+ #region Read
+ public async Task<ReadCommentServiceModel> GetCommentById(Guid id)
+ {
+ Comment comment = await this._commentRepository.GetByIdAsync(id) ??
+ throw new ArgumentException("The comment does not exist");
+
+ User user = await this._userRepository.GetByIdAsync(comment.Creator.Id) ??
+ throw new ArgumentException("The user does not exist");
+
+ ReadCommentServiceModel readCommentServiceModel = this._postMapper.Map<ReadCommentServiceModel>(comment);
+ readCommentServiceModel.IssuerFirstName = user.FirstName;
+ readCommentServiceModel.IssuerLastName = user.LastName;
+ readCommentServiceModel.IssuerUsername = user.UserName;
+
+ return readCommentServiceModel;
+ }
+ #endregion
+
+ #region Update
+ public async Task<Guid> UpdateComment(UpdateCommentServiceModel updateCommentServiceModel)
+ {
+ if (!await this._commentRepository.DoesCommentExist(updateCommentServiceModel.CommentId))
+ throw new ArgumentException("Comment does not exist!");
+
+ Comment comment = this._postMapper.Map<Comment>(updateCommentServiceModel);
+ comment.TimeCreated = DateTime.Now;
+
+ comment.Creator = await this._userRepository.GetByIdAsync(updateCommentServiceModel.CreatorId);
+ comment.Post = await this._postRepository.GetByIdAsync(updateCommentServiceModel.PostId);
+
+ bool result = await this._commentRepository.EditAsync(updateCommentServiceModel.CommentId, comment);
+
+ if (result)
+ return (await this._commentRepository.GetByIdAsync(updateCommentServiceModel.CommentId)).Id;
+ else
+ return Guid.Empty;
+ }
+ #endregion
+
+ #region Delete
+ public async Task<bool> DeleteComment(Guid id)
+ {
+ if (!await this._commentRepository.DoesCommentExist(id))
+ throw new ArgumentException("Comment does not exist!");
+
+ Comment comment = await this._commentRepository.GetByIdAsync(id);
+ return await this._commentRepository.DeleteAsync(comment);
+ }
+ #endregion
+
+ #region Validations
+ public async Task<bool> ValidateJwtForCreating(Guid userId, string rawTokenData)
+ {
+ User user = await this.GetUserForValidation(rawTokenData);
+
+ return user.Id == userId;
+ }
+
+ public async Task<bool> ValidateJwtForComment(Guid commentId, string rawTokenData)
+ {
+ Comment comment = await this._commentRepository.GetByIdAsync(commentId) ??
+ throw new ArgumentException("Comment does not exist!");
+ User user = await this.GetUserForValidation(rawTokenData);
+
+ //If user made the comment
+ if (comment.Creator.Id == user.Id)
+ return true;
+ //If user is admin
+ else if (user.Roles.Any(x => x.Name == Role.AdminRole))
+ return true;
+ else
+ return false;
+ }
+
+ private async Task<User> GetUserForValidation(string rawTokenData)
+ {
+ JwtSecurityToken jwt = new JwtSecurityTokenHandler().ReadJwtToken(rawTokenData.Remove(0, 7));
+
+ Guid jwtUserId = Guid.Parse(this.GetClaimTypeValues("ID", jwt.Claims).First());
+ //HashSet<string> jwtRoleNames = this.GetClaimTypeValues("role", jwt.Claims);
+
+ User user = await this._userRepository.GetByIdAsync(jwtUserId) ??
+ throw new ArgumentException("User does not exist!");
+
+ return user;
+ }
+
+
+ private List<string> GetClaimTypeValues(string type, IEnumerable<Claim> claims)
+ {
+ List<string> toReturn = new();
+
+ foreach (var claim in claims)
+ if (claim.Type == type)
+ toReturn.Add(claim.Value);
+
+ return toReturn;
+ }
+ #endregion
+ }
+}
+
diff --git a/src/DevHive.Services/Services/FeedService.cs b/src/DevHive.Services/Services/FeedService.cs
index 1bddac4..269471e 100644
--- a/src/DevHive.Services/Services/FeedService.cs
+++ b/src/DevHive.Services/Services/FeedService.cs
@@ -7,7 +7,7 @@ using DevHive.Data.Interfaces.Repositories;
using DevHive.Data.Models;
using DevHive.Services.Interfaces;
using DevHive.Services.Models;
-using DevHive.Services.Models.Post.Post;
+using DevHive.Services.Models.Post;
namespace DevHive.Services.Services
{
diff --git a/src/DevHive.Services/Services/PostService.cs b/src/DevHive.Services/Services/PostService.cs
index 7ce7b58..0eaac94 100644
--- a/src/DevHive.Services/Services/PostService.cs
+++ b/src/DevHive.Services/Services/PostService.cs
@@ -3,8 +3,7 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using AutoMapper;
using DevHive.Data.Models;
-using DevHive.Services.Models.Post.Comment;
-using DevHive.Services.Models.Post.Post;
+using DevHive.Services.Models.Post;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using DevHive.Services.Interfaces;
@@ -13,7 +12,7 @@ using System.Linq;
namespace DevHive.Services.Services
{
- public class PostService : IPostService
+ public class PostService : IPostService
{
private readonly ICloudService _cloudService;
private readonly IUserRepository _userRepository;
@@ -55,29 +54,6 @@ namespace DevHive.Services.Services
else
return Guid.Empty;
}
-
- public async Task<Guid> AddComment(CreateCommentServiceModel createCommentServiceModel)
- {
- if (!await this._postRepository.DoesPostExist(createCommentServiceModel.PostId))
- throw new ArgumentException("Post does not exist!");
-
- Comment comment = this._postMapper.Map<Comment>(createCommentServiceModel);
- comment.TimeCreated = DateTime.Now;
-
- comment.Creator = await this._userRepository.GetByIdAsync(createCommentServiceModel.CreatorId);
- comment.Post = await this._postRepository.GetByIdAsync(createCommentServiceModel.PostId);
-
- bool success = await this._commentRepository.AddAsync(comment);
- if (success)
- {
- Comment newComment = await this._commentRepository
- .GetCommentByIssuerAndTimeCreatedAsync(comment.Creator.Id, comment.TimeCreated);
-
- return newComment.Id;
- }
- else
- return Guid.Empty;
- }
#endregion
#region Read
@@ -96,22 +72,6 @@ namespace DevHive.Services.Services
return readPostServiceModel;
}
-
- public async Task<ReadCommentServiceModel> GetCommentById(Guid id)
- {
- Comment comment = await this._commentRepository.GetByIdAsync(id) ??
- throw new ArgumentException("The comment does not exist");
-
- User user = await this._userRepository.GetByIdAsync(comment.Creator.Id) ??
- throw new ArgumentException("The user does not exist");
-
- ReadCommentServiceModel readCommentServiceModel = this._postMapper.Map<ReadCommentServiceModel>(comment);
- readCommentServiceModel.IssuerFirstName = user.FirstName;
- readCommentServiceModel.IssuerLastName = user.LastName;
- readCommentServiceModel.IssuerUsername = user.UserName;
-
- return readCommentServiceModel;
- }
#endregion
#region Update
@@ -146,25 +106,6 @@ namespace DevHive.Services.Services
else
return Guid.Empty;
}
-
- public async Task<Guid> UpdateComment(UpdateCommentServiceModel updateCommentServiceModel)
- {
- if (!await this._commentRepository.DoesCommentExist(updateCommentServiceModel.CommentId))
- throw new ArgumentException("Comment does not exist!");
-
- Comment comment = this._postMapper.Map<Comment>(updateCommentServiceModel);
- comment.TimeCreated = DateTime.Now;
-
- comment.Creator = await this._userRepository.GetByIdAsync(updateCommentServiceModel.CreatorId);
- comment.Post = await this._postRepository.GetByIdAsync(updateCommentServiceModel.PostId);
-
- bool result = await this._commentRepository.EditAsync(updateCommentServiceModel.CommentId, comment);
-
- if (result)
- return (await this._commentRepository.GetByIdAsync(updateCommentServiceModel.CommentId)).Id;
- else
- return Guid.Empty;
- }
#endregion
#region Delete
@@ -185,15 +126,6 @@ namespace DevHive.Services.Services
return await this._postRepository.DeleteAsync(post);
}
-
- public async Task<bool> DeleteComment(Guid id)
- {
- if (!await this._commentRepository.DoesCommentExist(id))
- throw new ArgumentException("Comment does not exist!");
-
- Comment comment = await this._commentRepository.GetByIdAsync(id);
- return await this._commentRepository.DeleteAsync(comment);
- }
#endregion
#region Validations
diff --git a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
index fe2c788..8ba0d69 100644
--- a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
+++ b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
@@ -1,5 +1,4 @@
using DevHive.Data.Interfaces.Repositories;
-using DevHive.Data.Models;
using DevHive.Data.Repositories;
using DevHive.Services.Interfaces;
using DevHive.Services.Services;
@@ -8,7 +7,7 @@ using Microsoft.Extensions.DependencyInjection;
namespace DevHive.Web.Configurations.Extensions
{
- public static class ConfigureDependencyInjection
+ public static class ConfigureDependencyInjection
{
public static void DependencyInjectionConfiguration(this IServiceCollection services, IConfiguration configuration)
{
@@ -25,6 +24,7 @@ namespace DevHive.Web.Configurations.Extensions
services.AddTransient<ITechnologyService, TechnologyService>();
services.AddTransient<IUserService, UserService>();
services.AddTransient<IPostService, PostService>();
+ services.AddTransient<ICommentService, CommentService>();
services.AddTransient<IFeedService, FeedService>();
services.AddTransient<ICloudService, CloudinaryService>(options =>
new CloudinaryService(
diff --git a/src/DevHive.Web/Configurations/Mapping/CommentMappings.cs b/src/DevHive.Web/Configurations/Mapping/CommentMappings.cs
index a28ee16..b8d6829 100644
--- a/src/DevHive.Web/Configurations/Mapping/CommentMappings.cs
+++ b/src/DevHive.Web/Configurations/Mapping/CommentMappings.cs
@@ -1,6 +1,6 @@
using AutoMapper;
-using DevHive.Services.Models.Post.Comment;
-using DevHive.Web.Models.Post.Comment;
+using DevHive.Services.Models.Comment;
+using DevHive.Web.Models.Comment;
namespace DevHive.Web.Configurations.Mapping
{
@@ -15,6 +15,3 @@ namespace DevHive.Web.Configurations.Mapping
}
}
}
-
-
-
diff --git a/src/DevHive.Web/Configurations/Mapping/PostMappings.cs b/src/DevHive.Web/Configurations/Mapping/PostMappings.cs
index bc7bc06..a5b46ee 100644
--- a/src/DevHive.Web/Configurations/Mapping/PostMappings.cs
+++ b/src/DevHive.Web/Configurations/Mapping/PostMappings.cs
@@ -1,6 +1,6 @@
using AutoMapper;
-using DevHive.Services.Models.Post.Post;
-using DevHive.Web.Models.Post.Post;
+using DevHive.Services.Models.Post;
+using DevHive.Web.Models.Post;
namespace DevHive.Web.Configurations.Mapping
{
diff --git a/src/DevHive.Web/Controllers/CommentController.cs b/src/DevHive.Web/Controllers/CommentController.cs
new file mode 100644
index 0000000..ebcb87a
--- /dev/null
+++ b/src/DevHive.Web/Controllers/CommentController.cs
@@ -0,0 +1,82 @@
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using AutoMapper;
+using System;
+using DevHive.Web.Models.Comment;
+using DevHive.Services.Models.Comment;
+using Microsoft.AspNetCore.Authorization;
+using DevHive.Services.Interfaces;
+
+namespace DevHive.Web.Controllers
+{
+ [ApiController]
+ [Route("/api/[controller]")]
+ [Authorize(Roles = "User,Admin")]
+ public class CommentController {
+ private readonly ICommentService _commentService;
+ private readonly IMapper _commentMapper;
+
+ public CommentController(ICommentService commentService, IMapper commentMapper)
+ {
+ this._commentService = commentService;
+ this._commentMapper = commentMapper;
+ }
+
+ [HttpPost]
+ public async Task<IActionResult> AddComment(Guid userId, [FromBody] CreateCommentWebModel createCommentWebModel, [FromHeader] string authorization)
+ {
+ if (!await this._commentService.ValidateJwtForCreating(userId, authorization))
+ return new UnauthorizedResult();
+
+ CreateCommentServiceModel createCommentServiceModel =
+ this._commentMapper.Map<CreateCommentServiceModel>(createCommentWebModel);
+ createCommentServiceModel.CreatorId = userId;
+
+ Guid id = await this._commentService.AddComment(createCommentServiceModel);
+
+ return id == Guid.Empty ?
+ new BadRequestObjectResult("Could not create comment!") :
+ new OkObjectResult(new { Id = id });
+ }
+
+ [HttpGet]
+ [AllowAnonymous]
+ public async Task<IActionResult> GetCommentById(Guid id)
+ {
+ ReadCommentServiceModel readCommentServiceModel = await this._commentService.GetCommentById(id);
+ ReadCommentWebModel readCommentWebModel = this._commentMapper.Map<ReadCommentWebModel>(readCommentServiceModel);
+
+ return new OkObjectResult(readCommentWebModel);
+ }
+
+ [HttpPut]
+ public async Task<IActionResult> UpdateComment(Guid userId, [FromBody] UpdateCommentWebModel updateCommentWebModel, [FromHeader] string authorization)
+ {
+ if (!await this._commentService.ValidateJwtForComment(updateCommentWebModel.CommentId, authorization))
+ return new UnauthorizedResult();
+
+ UpdateCommentServiceModel updateCommentServiceModel =
+ this._commentMapper.Map<UpdateCommentServiceModel>(updateCommentWebModel);
+ updateCommentServiceModel.CreatorId = userId;
+
+ Guid id = await this._commentService.UpdateComment(updateCommentServiceModel);
+
+ return id == Guid.Empty ?
+ new BadRequestObjectResult("Unable to update comment!") :
+ new OkObjectResult(new { Id = id });
+ }
+
+ [HttpDelete]
+ public async Task<IActionResult> DeleteComment(Guid id, [FromHeader] string authorization)
+ {
+ if (!await this._commentService.ValidateJwtForComment(id, authorization))
+ return new UnauthorizedResult();
+
+ return await this._commentService.DeleteComment(id) ?
+ new OkResult() :
+ new BadRequestObjectResult("Could not delete Comment");
+ }
+
+ }
+}
+
diff --git a/src/DevHive.Web/Controllers/PostController.cs b/src/DevHive.Web/Controllers/PostController.cs
index fe71519..53adfce 100644
--- a/src/DevHive.Web/Controllers/PostController.cs
+++ b/src/DevHive.Web/Controllers/PostController.cs
@@ -2,16 +2,14 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using AutoMapper;
using System;
-using DevHive.Web.Models.Post.Post;
-using DevHive.Services.Models.Post.Post;
-using DevHive.Web.Models.Post.Comment;
-using DevHive.Services.Models.Post.Comment;
+using DevHive.Web.Models.Post;
+using DevHive.Services.Models.Post;
using Microsoft.AspNetCore.Authorization;
using DevHive.Services.Interfaces;
namespace DevHive.Web.Controllers
{
- [ApiController]
+ [ApiController]
[Route("/api/[controller]")]
[Authorize(Roles = "User,Admin")]
public class PostController
@@ -42,24 +40,6 @@ namespace DevHive.Web.Controllers
new BadRequestObjectResult("Could not create post!") :
new OkObjectResult(new { Id = id });
}
-
- [HttpPost]
- [Route("Comment")]
- public async Task<IActionResult> AddComment(Guid userId, [FromBody] CreateCommentWebModel createCommentWebModel, [FromHeader] string authorization)
- {
- if (!await this._postService.ValidateJwtForCreating(userId, authorization))
- return new UnauthorizedResult();
-
- CreateCommentServiceModel createCommentServiceModel =
- this._postMapper.Map<CreateCommentServiceModel>(createCommentWebModel);
- createCommentServiceModel.CreatorId = userId;
-
- Guid id = await this._postService.AddComment(createCommentServiceModel);
-
- return id == Guid.Empty ?
- new BadRequestObjectResult("Could not create comment!") :
- new OkObjectResult(new { Id = id });
- }
#endregion
#region Read
@@ -72,17 +52,6 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(postWebModel);
}
-
- [HttpGet]
- [Route("Comment")]
- [AllowAnonymous]
- public async Task<IActionResult> GetCommentById(Guid id)
- {
- ReadCommentServiceModel readCommentServiceModel = await this._postService.GetCommentById(id);
- ReadCommentWebModel readCommentWebModel = this._postMapper.Map<ReadCommentWebModel>(readCommentServiceModel);
-
- return new OkObjectResult(readCommentWebModel);
- }
#endregion
#region Update
@@ -102,24 +71,6 @@ namespace DevHive.Web.Controllers
new BadRequestObjectResult("Unable to update post!") :
new OkObjectResult(new { Id = id });
}
-
- [HttpPut]
- [Route("Comment")]
- public async Task<IActionResult> UpdateComment(Guid userId, [FromBody] UpdateCommentWebModel updateCommentWebModel, [FromHeader] string authorization)
- {
- if (!await this._postService.ValidateJwtForComment(updateCommentWebModel.CommentId, authorization))
- return new UnauthorizedResult();
-
- UpdateCommentServiceModel updateCommentServiceModel =
- this._postMapper.Map<UpdateCommentServiceModel>(updateCommentWebModel);
- updateCommentServiceModel.CreatorId = userId;
-
- Guid id = await this._postService.UpdateComment(updateCommentServiceModel);
-
- return id == Guid.Empty ?
- new BadRequestObjectResult("Unable to update comment!") :
- new OkObjectResult(new { Id = id });
- }
#endregion
#region Delete
@@ -133,18 +84,6 @@ namespace DevHive.Web.Controllers
new OkResult() :
new BadRequestObjectResult("Could not delete Comment");
}
-
- [HttpDelete]
- [Route("Comment")]
- public async Task<IActionResult> DeleteComment(Guid id, [FromHeader] string authorization)
- {
- if (!await this._postService.ValidateJwtForComment(id, authorization))
- return new UnauthorizedResult();
-
- return await this._postService.DeleteComment(id) ?
- new OkResult() :
- new BadRequestObjectResult("Could not delete Comment");
- }
#endregion
}
}
diff --git a/src/DevHive.Web/Models/Post/Comment/CreateCommentWebModel.cs b/src/DevHive.Web/Models/Comment/CreateCommentWebModel.cs
index 85c67bf..8b2bf8d 100644
--- a/src/DevHive.Web/Models/Post/Comment/CreateCommentWebModel.cs
+++ b/src/DevHive.Web/Models/Comment/CreateCommentWebModel.cs
@@ -2,7 +2,7 @@ using System;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;
-namespace DevHive.Web.Models.Post.Comment
+namespace DevHive.Web.Models.Comment
{
public class CreateCommentWebModel
{
diff --git a/src/DevHive.Web/Models/Post/Comment/ReadCommentWebModel.cs b/src/DevHive.Web/Models/Comment/ReadCommentWebModel.cs
index 5320c3c..4d3aff7 100644
--- a/src/DevHive.Web/Models/Post/Comment/ReadCommentWebModel.cs
+++ b/src/DevHive.Web/Models/Comment/ReadCommentWebModel.cs
@@ -1,6 +1,6 @@
using System;
-namespace DevHive.Web.Models.Post.Comment
+namespace DevHive.Web.Models.Comment
{
public class ReadCommentWebModel
{
diff --git a/src/DevHive.Web/Models/Post/Comment/UpdateCommentWebModel.cs b/src/DevHive.Web/Models/Comment/UpdateCommentWebModel.cs
index cb1c60a..b5d7970 100644
--- a/src/DevHive.Web/Models/Post/Comment/UpdateCommentWebModel.cs
+++ b/src/DevHive.Web/Models/Comment/UpdateCommentWebModel.cs
@@ -1,6 +1,6 @@
using System;
-namespace DevHive.Web.Models.Post.Comment
+namespace DevHive.Web.Models.Comment
{
public class UpdateCommentWebModel
{
diff --git a/src/DevHive.Web/Models/Feed/ReadPageWebModel.cs b/src/DevHive.Web/Models/Feed/ReadPageWebModel.cs
index 40d29c9..839aaa6 100644
--- a/src/DevHive.Web/Models/Feed/ReadPageWebModel.cs
+++ b/src/DevHive.Web/Models/Feed/ReadPageWebModel.cs
@@ -1,5 +1,5 @@
using System.Collections.Generic;
-using DevHive.Web.Models.Post.Post;
+using DevHive.Web.Models.Post;
namespace DevHive.Web.Controllers
{
diff --git a/src/DevHive.Web/Models/Post/Post/CreatePostWebModel.cs b/src/DevHive.Web/Models/Post/CreatePostWebModel.cs
index e35a813..256055a 100644
--- a/src/DevHive.Web/Models/Post/Post/CreatePostWebModel.cs
+++ b/src/DevHive.Web/Models/Post/CreatePostWebModel.cs
@@ -1,12 +1,11 @@
-using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;
using Microsoft.AspNetCore.Http;
-namespace DevHive.Web.Models.Post.Post
+namespace DevHive.Web.Models.Post
{
- public class CreatePostWebModel
+ public class CreatePostWebModel
{
[NotNull]
[Required]
diff --git a/src/DevHive.Web/Models/Post/Post/ReadPostWebModel.cs b/src/DevHive.Web/Models/Post/ReadPostWebModel.cs
index 5d4da31..1d2669e 100644
--- a/src/DevHive.Web/Models/Post/Post/ReadPostWebModel.cs
+++ b/src/DevHive.Web/Models/Post/ReadPostWebModel.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
-using DevHive.Web.Models.Post.Comment;
+using DevHive.Web.Models.Comment;
using Microsoft.AspNetCore.Http;
-namespace DevHive.Web.Models.Post.Post
+namespace DevHive.Web.Models.Post
{
public class ReadPostWebModel
{
diff --git a/src/DevHive.Web/Models/Post/Post/UpdatePostWebModel.cs b/src/DevHive.Web/Models/Post/UpdatePostWebModel.cs
index ac84d2c..a0c9b61 100644
--- a/src/DevHive.Web/Models/Post/Post/UpdatePostWebModel.cs
+++ b/src/DevHive.Web/Models/Post/UpdatePostWebModel.cs
@@ -4,7 +4,7 @@ using System.ComponentModel.DataAnnotations;
using System.Diagnostics.CodeAnalysis;
using Microsoft.AspNetCore.Http;
-namespace DevHive.Web.Models.Post.Post
+namespace DevHive.Web.Models.Post
{
public class UpdatePostWebModel
{