aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2020-12-19 09:44:14 +0200
committertranstrike <transtrike@gmail.com>2020-12-19 09:44:14 +0200
commitc69c21b2fe8aaca47b27277e0686ef37602a4813 (patch)
treede565062ef62c0f4502b54811f9d1e81336db07d
parent0b7db1681290c6177538900064fa05bb5ef34916 (diff)
downloadDevHive-c69c21b2fe8aaca47b27277e0686ef37602a4813.tar
DevHive-c69c21b2fe8aaca47b27277e0686ef37602a4813.tar.gz
DevHive-c69c21b2fe8aaca47b27277e0686ef37602a4813.zip
Friends insert validations
-rw-r--r--src/DevHive.Services/Services/FriendsService.cs7
-rw-r--r--src/DevHive.Web/Configurations/Extensions/ConfigureProblemDetails.cs19
-rw-r--r--src/DevHive.Web/Controllers/FriendsController.cs8
-rw-r--r--src/DevHive.Web/DevHive.Web.csproj21
4 files changed, 41 insertions, 14 deletions
diff --git a/src/DevHive.Services/Services/FriendsService.cs b/src/DevHive.Services/Services/FriendsService.cs
index 21a2aac..c0ec551 100644
--- a/src/DevHive.Services/Services/FriendsService.cs
+++ b/src/DevHive.Services/Services/FriendsService.cs
@@ -26,6 +26,9 @@ namespace DevHive.Services.Services
User user = await this._friendsRepository.GetByIdAsync(userId);
User friend = await this._friendsRepository.GetByIdAsync(friendId);
+ if (DoesUserHaveThisFriend(user, friend))
+ throw new ArgumentException("Friend already exists in your friends list.");
+
return user != default(User) && friend != default(User) ?
await this._friendsRepository.AddFriendAsync(user, friend) :
throw new ArgumentException("Invalid user!");
@@ -49,10 +52,14 @@ namespace DevHive.Services.Services
throw new ArgumentException("Invalid user!");
User user = await this._friendsRepository.GetByIdAsync(userId);
+ User friend = await this._friendsRepository.GetByIdAsync(friendId);
if(!this.DoesUserHaveFriends(user))
throw new ArgumentException("User does not have any friends.");
+ if (!DoesUserHaveThisFriend(user, friend))
+ throw new ArgumentException("This ain't your friend, amigo.");
+
return await this.RemoveFriend(user.Id, friendId);
}
diff --git a/src/DevHive.Web/Configurations/Extensions/ConfigureProblemDetails.cs b/src/DevHive.Web/Configurations/Extensions/ConfigureProblemDetails.cs
new file mode 100644
index 0000000..f945f03
--- /dev/null
+++ b/src/DevHive.Web/Configurations/Extensions/ConfigureProblemDetails.cs
@@ -0,0 +1,19 @@
+using Hellang.Middleware.ProblemDetails;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace DevHive.Web.Configurations.Extensions
+{
+ public static class ConfigureProblemDetails
+ {
+ public static void ProblemDetailsConfiguration(this IServiceCollection services)
+ {
+ services.AddProblemDetails();
+ }
+
+ public static void UseProblemDetailsConfiguration(this IApplicationBuilder app)
+ {
+ app.UseProblemDetails();
+ }
+ }
+} \ No newline at end of file
diff --git a/src/DevHive.Web/Controllers/FriendsController.cs b/src/DevHive.Web/Controllers/FriendsController.cs
index 1c69bc3..216228b 100644
--- a/src/DevHive.Web/Controllers/FriendsController.cs
+++ b/src/DevHive.Web/Controllers/FriendsController.cs
@@ -13,14 +13,14 @@ using Microsoft.AspNetCore.Mvc;
namespace DevHive.Web.Controllers
{
[ApiController]
+ [Route("/api")]
[Authorize(Roles = "User")]
- public class FriendsController : UserController
+ public class FriendsController
{
private readonly FriendsService _friendsService;
private readonly IMapper _friendsMapper;
- public FriendsController(DevHiveContext context, IMapper mapper, JWTOptions jwtOptions)
- : base(context, mapper, jwtOptions)
+ public FriendsController(DevHiveContext context, IMapper mapper, JWTOptions jwtOptions)
{
this._friendsService = new FriendsService(context, mapper, jwtOptions);
this._friendsMapper = mapper;
@@ -49,7 +49,7 @@ namespace DevHive.Web.Controllers
//Delete
[HttpDelete]
- [Route("GetAFriend")]
+ [Route("RemoveAFriend")]
public async Task<IActionResult> RemoveAFriend(Guid userId, Guid friendId)
{
await this._friendsService.RemoveFriend(userId, friendId);
diff --git a/src/DevHive.Web/DevHive.Web.csproj b/src/DevHive.Web/DevHive.Web.csproj
index ad23ce9..515d2f5 100644
--- a/src/DevHive.Web/DevHive.Web.csproj
+++ b/src/DevHive.Web/DevHive.Web.csproj
@@ -3,21 +3,22 @@
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.1" NoWarn="NU1605"/>
- <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.1" NoWarn="NU1605"/>
+ <PackageReference Include="Hellang.Middleware.ProblemDetails" Version="5.1.1" />
+ <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.1" NoWarn="NU1605" />
+ <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.1" NoWarn="NU1605" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
- <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.1"/>
- <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3"/>
- <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.0"/>
- <PackageReference Include="AutoMapper" Version="10.1.1"/>
- <PackageReference Include="Newtonsoft.Json" Version="12.0.3"/>
- <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.1"/>
+ <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.1" />
+ <PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
+ <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.0" />
+ <PackageReference Include="AutoMapper" Version="10.1.1" />
+ <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
+ <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.1" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\DevHive.Services\DevHive.Services.csproj"/>
- <ProjectReference Include="..\DevHive.Common\DevHive.Common.csproj"/>
+ <ProjectReference Include="..\DevHive.Services\DevHive.Services.csproj" />
+ <ProjectReference Include="..\DevHive.Common\DevHive.Common.csproj" />
</ItemGroup>
</Project> \ No newline at end of file