diff options
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 |
