aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Web
diff options
context:
space:
mode:
Diffstat (limited to 'src/DevHive.Web')
-rw-r--r--src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs2
-rw-r--r--src/DevHive.Web/Configurations/Mapping/FeedMappings.cs18
-rw-r--r--src/DevHive.Web/Configurations/Mapping/RoleMappings.cs4
-rw-r--r--src/DevHive.Web/Configurations/Mapping/UserMappings.cs3
-rw-r--r--src/DevHive.Web/Controllers/FeedController.cs36
-rw-r--r--src/DevHive.Web/Controllers/PostController.cs2
-rw-r--r--src/DevHive.Web/Controllers/RoleController.cs2
-rw-r--r--src/DevHive.Web/Controllers/UserController.cs15
-rw-r--r--src/DevHive.Web/Models/Feed/GetPageWebModel.cs19
-rw-r--r--src/DevHive.Web/Models/Feed/ReadPageWebModel.cs10
10 files changed, 106 insertions, 5 deletions
diff --git a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
index bcf16ac..d7c859e 100644
--- a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
+++ b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
@@ -17,12 +17,14 @@ namespace DevHive.Web.Configurations.Extensions
services.AddTransient<IUserRepository, UserRepository>();
services.AddTransient<IPostRepository, PostRepository>();
services.AddTransient<ICommentRepository, CommentRepository>();
+ services.AddTransient<IFeedRepository, FeedRepository>();
services.AddTransient<ILanguageService, LanguageService>();
services.AddTransient<IRoleService, RoleService>();
services.AddTransient<ITechnologyService, TechnologyService>();
services.AddTransient<IUserService, UserService>();
services.AddTransient<IPostService, PostService>();
+ services.AddTransient<IFeedService, FeedService>();
}
}
}
diff --git a/src/DevHive.Web/Configurations/Mapping/FeedMappings.cs b/src/DevHive.Web/Configurations/Mapping/FeedMappings.cs
new file mode 100644
index 0000000..159582d
--- /dev/null
+++ b/src/DevHive.Web/Configurations/Mapping/FeedMappings.cs
@@ -0,0 +1,18 @@
+using AutoMapper;
+using DevHive.Services.Models;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Feed;
+
+namespace DevHive.Web.Configurations.Mapping
+{
+ public class FeedMappings : Profile
+ {
+ public FeedMappings()
+ {
+ CreateMap<GetPageWebModel, GetPageServiceModel>()
+ .ForMember(dest => dest.FirstRequestIssued, src => src.MapFrom(p => p.FirstPageTimeIssued));
+
+ CreateMap<ReadPageServiceModel, ReadPageWebModel>();
+ }
+ }
+}
diff --git a/src/DevHive.Web/Configurations/Mapping/RoleMappings.cs b/src/DevHive.Web/Configurations/Mapping/RoleMappings.cs
index 2ea2742..2f01f77 100644
--- a/src/DevHive.Web/Configurations/Mapping/RoleMappings.cs
+++ b/src/DevHive.Web/Configurations/Mapping/RoleMappings.cs
@@ -11,11 +11,11 @@ namespace DevHive.Web.Configurations.Mapping
CreateMap<CreateRoleWebModel, CreateRoleServiceModel>();
CreateMap<UpdateRoleWebModel, UpdateRoleServiceModel>()
.ForMember(src => src.Id, dest => dest.Ignore());
- CreateMap<RoleWebModel, RoleServiceModel>();
+ CreateMap<RoleWebModel, ReadRoleServiceModel>();
CreateMap<CreateRoleServiceModel, CreateRoleWebModel>();
CreateMap<UpdateRoleServiceModel, UpdateRoleWebModel>();
- CreateMap<RoleServiceModel, RoleWebModel>();
+ CreateMap<ReadRoleServiceModel, RoleWebModel>();
}
}
}
diff --git a/src/DevHive.Web/Configurations/Mapping/UserMappings.cs b/src/DevHive.Web/Configurations/Mapping/UserMappings.cs
index 9dbf613..e80a69a 100644
--- a/src/DevHive.Web/Configurations/Mapping/UserMappings.cs
+++ b/src/DevHive.Web/Configurations/Mapping/UserMappings.cs
@@ -25,6 +25,9 @@ namespace DevHive.Web.Configurations.Mapping
.ForMember(src => src.Id, dest => dest.Ignore());
CreateMap<FriendWebModel, FriendServiceModel>()
.ForMember(src => src.Id, dest => dest.Ignore());
+ CreateMap<FriendWebModel, UpdateFriendServiceModel>()
+ .ForMember(src => src.Id, dest => dest.Ignore())
+ .ForMember(src => src.Name, dest => dest.MapFrom(p => p.UserName));
CreateMap<UpdateUserServiceModel, UpdateUserWebModel>();
CreateMap<FriendServiceModel, FriendWebModel>();
diff --git a/src/DevHive.Web/Controllers/FeedController.cs b/src/DevHive.Web/Controllers/FeedController.cs
new file mode 100644
index 0000000..7d0269b
--- /dev/null
+++ b/src/DevHive.Web/Controllers/FeedController.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models;
+using DevHive.Web.Models.Feed;
+using Microsoft.AspNetCore.Mvc;
+
+namespace DevHive.Web.Controllers
+{
+ [ApiController]
+ [Route("/api/[controller]")]
+ public class FeedController
+ {
+ private readonly IFeedService _feedService;
+ private readonly IMapper _mapper;
+
+ public FeedController(IFeedService feedService, IMapper mapper)
+ {
+ this._feedService = feedService;
+ this._mapper = mapper;
+ }
+
+ [HttpGet]
+ public async Task<IActionResult> GetPosts(Guid userId, [FromBody] GetPageWebModel getPageWebModel)
+ {
+ GetPageServiceModel getPageServiceModel = this._mapper.Map<GetPageServiceModel>(getPageWebModel);
+ getPageServiceModel.UserId = userId;
+
+ ReadPageServiceModel readPageServiceModel = await this._feedService.GetPage(getPageServiceModel);
+ ReadPageWebModel readPageWebModel = this._mapper.Map<ReadPageWebModel>(readPageServiceModel);
+
+ return new OkObjectResult(readPageWebModel);
+ }
+ }
+}
diff --git a/src/DevHive.Web/Controllers/PostController.cs b/src/DevHive.Web/Controllers/PostController.cs
index b5e1c98..151c688 100644
--- a/src/DevHive.Web/Controllers/PostController.cs
+++ b/src/DevHive.Web/Controllers/PostController.cs
@@ -13,7 +13,7 @@ namespace DevHive.Web.Controllers
{
[ApiController]
[Route("/api/[controller]")]
- // [Authorize(Roles = "User")]
+ [Authorize(Roles = "User,Admin")]
public class PostController
{
private readonly IPostService _postService;
diff --git a/src/DevHive.Web/Controllers/RoleController.cs b/src/DevHive.Web/Controllers/RoleController.cs
index c68a32b..d8bb60c 100644
--- a/src/DevHive.Web/Controllers/RoleController.cs
+++ b/src/DevHive.Web/Controllers/RoleController.cs
@@ -40,7 +40,7 @@ namespace DevHive.Web.Controllers
[Authorize(Policy = "User")]
public async Task<IActionResult> GetById(Guid id)
{
- RoleServiceModel roleServiceModel = await this._roleService.GetRoleById(id);
+ ReadRoleServiceModel roleServiceModel = await this._roleService.GetRoleById(id);
RoleWebModel roleWebModel = this._roleMapper.Map<RoleWebModel>(roleServiceModel);
return new OkObjectResult(roleWebModel);
diff --git a/src/DevHive.Web/Controllers/UserController.cs b/src/DevHive.Web/Controllers/UserController.cs
index dd94089..e409eea 100644
--- a/src/DevHive.Web/Controllers/UserController.cs
+++ b/src/DevHive.Web/Controllers/UserController.cs
@@ -12,7 +12,7 @@ namespace DevHive.Web.Controllers
{
[ApiController]
[Route("/api/[controller]")]
- [Authorize(Policy = "User")]
+ [Authorize(Roles = "User,Admin")]
public class UserController : ControllerBase
{
private readonly IUserService _userService;
@@ -104,5 +104,18 @@ namespace DevHive.Web.Controllers
return new OkResult();
}
#endregion
+
+ [HttpPost]
+ [Route("SuperSecretPromotionToAdmin")]
+ public async Task<IActionResult> SuperSecretPromotionToAdmin(Guid userId)
+ {
+ object obj = new
+ {
+ UserId = userId,
+ AdminRoleId = await this._userService.SuperSecretPromotionToAdmin(userId)
+ };
+
+ return new OkObjectResult(obj);
+ }
}
}
diff --git a/src/DevHive.Web/Models/Feed/GetPageWebModel.cs b/src/DevHive.Web/Models/Feed/GetPageWebModel.cs
new file mode 100644
index 0000000..4ea44cc
--- /dev/null
+++ b/src/DevHive.Web/Models/Feed/GetPageWebModel.cs
@@ -0,0 +1,19 @@
+using System;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+
+namespace DevHive.Web.Models.Feed
+{
+ public class GetPageWebModel
+ {
+ [Range(1, int.MaxValue)]
+ public int PageNumber { get; set; }
+
+ [Required]
+ public DateTime FirstPageTimeIssued { get; set; }
+
+ [DefaultValue(5)]
+ [Range(1, int.MaxValue)]
+ public int PageSize { get; set; }
+ }
+}
diff --git a/src/DevHive.Web/Models/Feed/ReadPageWebModel.cs b/src/DevHive.Web/Models/Feed/ReadPageWebModel.cs
new file mode 100644
index 0000000..40d29c9
--- /dev/null
+++ b/src/DevHive.Web/Models/Feed/ReadPageWebModel.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+using DevHive.Web.Models.Post.Post;
+
+namespace DevHive.Web.Controllers
+{
+ public class ReadPageWebModel
+ {
+ public List<ReadPostWebModel> Posts { get; set; } = new();
+ }
+}