aboutsummaryrefslogtreecommitdiff
path: root/src/Services/DevHive.Services
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-04-07 19:56:55 +0300
committertranstrike <transtrike@gmail.com>2021-04-07 19:56:55 +0300
commit5595bf9abe7b3d495f36ef39cfa5236dbde86039 (patch)
treee0663d2ece9f8124ff58de7a565944092f67003a /src/Services/DevHive.Services
parent43336a1e977f33ad49ad8b4851ca449936f93ce6 (diff)
downloadDevHive-5595bf9abe7b3d495f36ef39cfa5236dbde86039.tar
DevHive-5595bf9abe7b3d495f36ef39cfa5236dbde86039.tar.gz
DevHive-5595bf9abe7b3d495f36ef39cfa5236dbde86039.zip
Added adding & removing friends funtionality & endpoints for them
Diffstat (limited to 'src/Services/DevHive.Services')
-rw-r--r--src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs4
-rw-r--r--src/Services/DevHive.Services/Services/FriendsService.cs46
2 files changed, 23 insertions, 27 deletions
diff --git a/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs b/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs
index 37f259a..e870ab1 100644
--- a/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs
+++ b/src/Services/DevHive.Services/Configurations/Mapping/RoleMapings.cs
@@ -1,5 +1,5 @@
-using DevHive.Data.Models;
using AutoMapper;
+using DevHive.Data.Models;
using DevHive.Services.Models.Role;
namespace DevHive.Services.Configurations.Mapping
@@ -14,6 +14,8 @@ namespace DevHive.Services.Configurations.Mapping
CreateMap<Role, RoleServiceModel>();
CreateMap<Role, UpdateRoleServiceModel>();
+
+ CreateMap<RoleServiceModel, UpdateRoleServiceModel>();
}
}
}
diff --git a/src/Services/DevHive.Services/Services/FriendsService.cs b/src/Services/DevHive.Services/Services/FriendsService.cs
index 6d4ee73..4e3e355 100644
--- a/src/Services/DevHive.Services/Services/FriendsService.cs
+++ b/src/Services/DevHive.Services/Services/FriendsService.cs
@@ -1,51 +1,45 @@
using System;
-using System.Linq;
using System.Threading.Tasks;
-using AutoMapper;
-using DevHive.Common.Jwt.Interfaces;
+using DevHive.Common.Constants;
+using DevHive.Data.Interfaces;
+using DevHive.Data.Models;
using DevHive.Services.Interfaces;
-using DevHive.Services.Models.User;
namespace DevHive.Services.Services
{
public class FriendsService : IFriendsService
{
- private readonly IUserService _userService;
- private readonly IMapper _userMapper;
+ private readonly IUserRepository _friendRepository;
- public FriendsService(IUserService userService,
- IMapper mapper)
+ public FriendsService(IUserRepository friendRepository)
{
- this._userService = userService;
- this._userMapper = mapper;
+ this._friendRepository = friendRepository;
}
public async Task<bool> AddFriend(Guid userId, Guid friendId)
{
- UserServiceModel user = await this._userService.GetUserById(userId);
- UserServiceModel friendUser = await this._userService.GetUserById(friendId);
+ User user = await this._friendRepository.GetByIdAsync(userId) ??
+ throw new ArgumentNullException(string.Format(ErrorMessages.DoesNotExist, nameof(user)));
- UpdateUserServiceModel updateUser = this._userMapper.Map<UpdateUserServiceModel>(user);
- UpdateFriendServiceModel updatefriendUser = this._userMapper.Map<UpdateFriendServiceModel>(friendUser);
+ User friend = await this._friendRepository.GetByIdAsync(friendId) ??
+ throw new ArgumentNullException(string.Format(ErrorMessages.DoesNotExist, nameof(friend)));
- updateUser.Friends.Add(updatefriendUser);
-
- return (await this._userService.UpdateUser(updateUser))
- .Friends.Any(x => x.Id == friendId);
+ bool addedToUser = user.Friends.Add(friend) && await this._friendRepository.EditAsync(userId, user);
+ bool addedToFriend = friend.Friends.Add(user) && await this._friendRepository.EditAsync(friendId, friend);
+ return addedToUser && addedToFriend;
}
public async Task<bool> RemoveFriend(Guid userId, Guid friendId)
{
- UserServiceModel user = await this._userService.GetUserById(userId);
- UserServiceModel friendUser = await this._userService.GetUserById(friendId);
-
- UpdateUserServiceModel updateUser = this._userMapper.Map<UpdateUserServiceModel>(user);
- UpdateFriendServiceModel updatefriendUser = this._userMapper.Map<UpdateFriendServiceModel>(friendUser);
+ User user = await this._friendRepository.GetByIdAsync(userId) ??
+ throw new ArgumentNullException(string.Format(ErrorMessages.DoesNotExist, nameof(user)));
- updateUser.Friends.Remove(updatefriendUser);
+ User friend = await this._friendRepository.GetByIdAsync(friendId) ??
+ throw new ArgumentNullException(string.Format(ErrorMessages.DoesNotExist, nameof(friend)));
- return !(await this._userService.UpdateUser(updateUser))
- .Friends.Any(x => x.Id == friendId);
+ bool addedToUser = user.Friends.Remove(friend) && await this._friendRepository.EditAsync(userId, user);
+ bool addedToFriend = friend.Friends.Remove(user) && await this._friendRepository.EditAsync(friendId, friend);
+ return addedToUser && addedToFriend;
}
}
}