diff options
Diffstat (limited to 'src/DevHive.Services')
| -rw-r--r-- | src/DevHive.Services/Services/FriendsService.cs | 76 | ||||
| -rw-r--r-- | src/DevHive.Services/Services/UserService.cs | 73 |
2 files changed, 62 insertions, 87 deletions
diff --git a/src/DevHive.Services/Services/FriendsService.cs b/src/DevHive.Services/Services/FriendsService.cs deleted file mode 100644 index 119c955..0000000 --- a/src/DevHive.Services/Services/FriendsService.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using System.Threading.Tasks; -using AutoMapper; -using DevHive.Data.Models; -using DevHive.Data.Repositories; -using DevHive.Services.Models.Identity.User; -using DevHive.Services.Options; - -namespace DevHive.Services.Services -{ - public class FriendsService - { - private readonly FriendsRepository _friendsRepository; - private readonly IMapper _friendsMapper; - - public FriendsService(FriendsRepository friendsRepository, IMapper mapper) - { - this._friendsRepository = friendsRepository; - this._friendsMapper = mapper; - } - - //Create - public async Task<bool> AddFriend(Guid userId, Guid friendId) - { - 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!"); - } - - //Read - public async Task<UserServiceModel> GetFriendById(Guid friendId) - { - if(!_friendsRepository.DoesUserExist(friendId)) - throw new ArgumentException("User does not exist!"); - - User friend = await this._friendsRepository.GetByIdAsync(friendId); - - return this._friendsMapper.Map<UserServiceModel>(friend); - } - - public async Task<bool> RemoveFriend(Guid userId, Guid friendId) - { - if(!this._friendsRepository.DoesUserExist(userId) && - !this._friendsRepository.DoesUserExist(friendId)) - 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); - } - - //Validation - private bool DoesUserHaveThisFriend(User user, User friend) - { - return user.Friends.Contains(friend); - } - - private bool DoesUserHaveFriends(User user) - { - return user.Friends.Count >= 1; - } - } -}
\ No newline at end of file diff --git a/src/DevHive.Services/Services/UserService.cs b/src/DevHive.Services/Services/UserService.cs index 99a8d9f..7fd0682 100644 --- a/src/DevHive.Services/Services/UserService.cs +++ b/src/DevHive.Services/Services/UserService.cs @@ -67,6 +67,19 @@ namespace DevHive.Services.Services return new TokenModel(WriteJWTSecurityToken(user.UserName, user.Roles)); } + public async Task<bool> AddFriend(Guid userId, Guid friendId) + { + User user = await this._userRepository.GetByIdAsync(userId); + User friend = await this._userRepository.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._userRepository.AddFriendAsync(user, friend) : + throw new ArgumentException("Invalid user!"); + } + public async Task<UserServiceModel> GetUserById(Guid id) { User user = await this._userRepository.GetByIdAsync(id) @@ -75,6 +88,16 @@ namespace DevHive.Services.Services return this._userMapper.Map<UserServiceModel>(user); } + public async Task<UserServiceModel> GetFriendById(Guid friendId) + { + if(!_userRepository.DoesUserExist(friendId)) + throw new ArgumentException("User does not exist!"); + + User friend = await this._userRepository.GetByIdAsync(friendId); + + return this._userMapper.Map<UserServiceModel>(friend); + } + public async Task<UserServiceModel> UpdateUser(UpdateUserServiceModel updateModel) { if (!this._userRepository.DoesUserExist(updateModel.Id)) @@ -105,6 +128,24 @@ namespace DevHive.Services.Services throw new InvalidOperationException("Unable to delete user!"); } + public async Task<bool> RemoveFriend(Guid userId, Guid friendId) + { + if(!this._userRepository.DoesUserExist(userId) && + !this._userRepository.DoesUserExist(friendId)) + throw new ArgumentException("Invalid user!"); + + User user = await this._userRepository.GetByIdAsync(userId); + User friend = await this._userRepository.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); + } + public async Task<bool> ValidJWT(Guid id, string rawTokenData) { // There is authorization name in the beginning, i.e. "Bearer eyJh..." @@ -143,6 +184,27 @@ namespace DevHive.Services.Services return string.Join(string.Empty, SHA512.HashData(Encoding.ASCII.GetBytes(password))); } + private bool DoesUserHaveThisFriend(User user, User friend) + { + return user.Friends.Contains(friend); + } + + private bool DoesUserHaveFriends(User user) + { + return user.Friends.Count >= 1; + } + + 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; + } + private string WriteJWTSecurityToken(string userName, IList<Role> roles) { byte[] signingKey = Encoding.ASCII.GetBytes(_jwtOptions.Secret); @@ -170,16 +232,5 @@ namespace DevHive.Services.Services SecurityToken token = tokenHandler.CreateToken(tokenDescriptor); return tokenHandler.WriteToken(token); } - - 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; - } } } |
