diff options
| author | transtrike <transtrike@gmail.com> | 2021-01-14 00:12:48 +0200 |
|---|---|---|
| committer | transtrike <transtrike@gmail.com> | 2021-01-14 00:12:48 +0200 |
| commit | 2948a92492141f4d807449191901f499530d8465 (patch) | |
| tree | 36d30886af22351d86d937f03558c501254ad621 /src/DevHive.Services | |
| parent | d77add41838823ad50caf8d1ae5ee8e61c1bb26b (diff) | |
| download | DevHive-2948a92492141f4d807449191901f499530d8465.tar DevHive-2948a92492141f4d807449191901f499530d8465.tar.gz DevHive-2948a92492141f4d807449191901f499530d8465.zip | |
Fixed issues in Language & Technology and their interactions with User
Diffstat (limited to 'src/DevHive.Services')
5 files changed, 69 insertions, 54 deletions
diff --git a/src/DevHive.Services/Interfaces/IUserService.cs b/src/DevHive.Services/Interfaces/IUserService.cs index ba53563..5ef141f 100644 --- a/src/DevHive.Services/Interfaces/IUserService.cs +++ b/src/DevHive.Services/Interfaces/IUserService.cs @@ -20,12 +20,12 @@ namespace DevHive.Services.Interfaces Task<UserServiceModel> GetUserById(Guid id); Task<UserServiceModel> UpdateUser(UpdateUserServiceModel updateModel); - + Task DeleteUser(Guid id); Task<bool> RemoveFriend(Guid userId, Guid friendId); Task<bool> RemoveLanguageFromUser(Guid userId, LanguageServiceModel languageServiceModel); Task<bool> RemoveTechnologyFromUser(Guid userId, TechnologyServiceModel technologyServiceModel); - + Task<bool> ValidJWT(Guid id, string rawTokenData); } -}
\ No newline at end of file +} diff --git a/src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs b/src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs index ca848f9..a31d160 100644 --- a/src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs +++ b/src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs @@ -2,8 +2,8 @@ using System; namespace DevHive.Services.Models.Technology { - public class CreateTechnologyServiceModel : TechnologyServiceModel + public class CreateTechnologyServiceModel { public string Name { get; set; } } -}
\ No newline at end of file +} diff --git a/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs b/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs index bfeae51..a18e286 100644 --- a/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs +++ b/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs @@ -2,5 +2,8 @@ using System; namespace DevHive.Services.Models.Technology { - public class UpdateTechnologyServiceModel : CreateTechnologyServiceModel {} -}
\ No newline at end of file + public class UpdateTechnologyServiceModel : TechnologyServiceModel + { + public string Name { get; set; } + } +} diff --git a/src/DevHive.Services/Services/TechnologyService.cs b/src/DevHive.Services/Services/TechnologyService.cs index cb8fdfc..2b24ed6 100644 --- a/src/DevHive.Services/Services/TechnologyService.cs +++ b/src/DevHive.Services/Services/TechnologyService.cs @@ -23,7 +23,7 @@ namespace DevHive.Services.Services public async Task<bool> Create(CreateTechnologyServiceModel technologyServiceModel) { - if (await this._technologyRepository.DoesTechnologyNameExist(technologyServiceModel.Name)) + if (await this._technologyRepository.DoesTechnologyNameExistAsync(technologyServiceModel.Name)) throw new ArgumentException("Technology already exists!"); Technology technology = this._technologyMapper.Map<Technology>(technologyServiceModel); @@ -53,7 +53,7 @@ namespace DevHive.Services.Services if (!await this._technologyRepository.DoesTechnologyExistAsync(updateTechnologyServiceModel.Id)) throw new ArgumentException("Technology does not exist!"); - if (await this._technologyRepository.DoesTechnologyNameExist(updateTechnologyServiceModel.Name)) + if (await this._technologyRepository.DoesTechnologyNameExistAsync(updateTechnologyServiceModel.Name)) throw new ArgumentException("Technology name already exists!"); Technology technology = this._technologyMapper.Map<Technology>(updateTechnologyServiceModel); @@ -77,4 +77,4 @@ namespace DevHive.Services.Services } #endregion } -}
\ No newline at end of file +} diff --git a/src/DevHive.Services/Services/UserService.cs b/src/DevHive.Services/Services/UserService.cs index 6a6662d..012ec1b 100644 --- a/src/DevHive.Services/Services/UserService.cs +++ b/src/DevHive.Services/Services/UserService.cs @@ -111,19 +111,42 @@ namespace DevHive.Services.Services public async Task<bool> AddLanguageToUser(Guid userId, LanguageServiceModel languageServiceModel) { - Tuple<User, Language> tuple = await ValidateUserAndLanguage(userId, languageServiceModel); + bool userExists = await this._userRepository.DoesUserExistAsync(userId); + bool languageExists = await this._languageRepository.DoesLanguageExistAsync(languageServiceModel.Id); + + if (!userExists) + throw new ArgumentException("User does not exist!"); + + if (!languageExists) + throw new ArgumentException("Language does noy exist!"); + + User user = await this._userRepository.GetByIdAsync(userId); + Language language = await this._languageRepository.GetByIdAsync(languageServiceModel.Id); - if (this._userRepository.DoesUserHaveThisLanguage(tuple.Item1, tuple.Item2)) + if (this._userRepository.DoesUserHaveThisLanguage(user, language)) throw new ArgumentException("User already has this language!"); - return await this._userRepository.AddLanguageToUserAsync(tuple.Item1, tuple.Item2); + return await this._userRepository.AddLanguageToUserAsync(user, language); } public async Task<bool> AddTechnologyToUser(Guid userId, TechnologyServiceModel technologyServiceModel) { - Tuple<User, Technology> tuple = await ValidateUserAndTechnology(userId, technologyServiceModel); + bool userExists = await this._userRepository.DoesUserExistAsync(userId); + bool technologyExists = await this._technologyRepository.DoesTechnologyExistAsync(technologyServiceModel.Id); + + if (!userExists) + throw new ArgumentException("User does not exist!"); + + if (!technologyExists) + throw new ArgumentException("Technology does not exist!"); + + Technology technology = await this._technologyRepository.GetByIdAsync(technologyServiceModel.Id); + User user = await this._userRepository.GetByIdAsync(userId); + + if (this._userRepository.DoesUserHaveThisTechnology(user, technology)) + throw new ArgumentException("User already has this language!"); - return await this._userRepository.AddTechnologyToUserAsync(tuple.Item1, tuple.Item2); + return await this._userRepository.AddTechnologyToUserAsync(user, technology); } #endregion @@ -204,19 +227,42 @@ namespace DevHive.Services.Services public async Task<bool> RemoveLanguageFromUser(Guid userId, LanguageServiceModel languageServiceModel) { - Tuple<User, Language> tuple = await ValidateUserAndLanguage(userId, languageServiceModel); + bool userExists = await this._userRepository.DoesUserExistAsync(userId); + bool languageExists = await this._languageRepository.DoesLanguageExistAsync(languageServiceModel.Id); - if (!this._userRepository.DoesUserHaveThisLanguage(tuple.Item1, tuple.Item2)) + if (!userExists) + throw new ArgumentException("User does not exist!"); + + if (!languageExists) + throw new ArgumentException("Language does not exist!"); + + User user = await this._userRepository.GetByIdAsync(userId); + Language language = await this._languageRepository.GetByIdAsync(languageServiceModel.Id); + + if (!this._userRepository.DoesUserHaveThisLanguage(user, language)) throw new ArgumentException("User does not have this language!"); - return await this._userRepository.RemoveLanguageFromUserAsync(tuple.Item1, tuple.Item2); + return await this._userRepository.RemoveLanguageFromUserAsync(user, language); } public async Task<bool> RemoveTechnologyFromUser(Guid userId, TechnologyServiceModel technologyServiceModel) { - Tuple<User, Technology> tuple = await ValidateUserAndTechnology(userId, technologyServiceModel); + bool userExists = await this._userRepository.DoesUserExistAsync(userId); + bool technologyExists = await this._technologyRepository.DoesTechnologyExistAsync(technologyServiceModel.Id); + + if (!userExists) + throw new ArgumentException("User does not exist!"); - return await this._userRepository.RemoveTechnologyFromUserAsync(tuple.Item1, tuple.Item2); + if (!technologyExists) + throw new ArgumentException("Language does not exist!"); + + User user = await this._userRepository.GetByIdAsync(userId); + Technology technology = await this._technologyRepository.GetByIdAsync(technologyServiceModel.Id); + + if (!this._userRepository.DoesUserHaveThisTechnology(user, technology)) + throw new ArgumentException("User does not have this technology!"); + + return await this._userRepository.RemoveTechnologyFromUserAsync(user, technology); } #endregion @@ -298,40 +344,6 @@ namespace DevHive.Services.Services { return string.Join(string.Empty, SHA512.HashData(Encoding.ASCII.GetBytes(password))); } - - private async Task<Tuple<User, Language>> ValidateUserAndLanguage(Guid userId, LanguageServiceModel languageServiceModel) - { - bool userExists = await this._userRepository.DoesUserExistAsync(userId); - bool languageExists = await this._languageRepository.DoesLanguageExistAsync(languageServiceModel.Id); - - if (!userExists) - throw new ArgumentException("User does not exist!"); - - if (!languageExists) - throw new ArgumentException("Language does not exist!"); - - User user = await this._userRepository.GetByIdAsync(userId); - Language language = await this._languageRepository.GetByIdAsync(languageServiceModel.Id); - - return new Tuple<User, Language>(user, language); - } - - private async Task<Tuple<User, Technology>> ValidateUserAndTechnology(Guid userId, TechnologyServiceModel technologyServiceModel) - { - bool userExists = await this._userRepository.DoesUserExistAsync(userId); - bool technologyExists = await this._technologyRepository.DoesTechnologyExistAsync(technologyServiceModel.Id); - - if (!userExists) - throw new ArgumentException("User does not exist!"); - - if (!technologyExists) - throw new ArgumentException("Language does not exist!"); - - User user = await this._userRepository.GetByIdAsync(userId); - Technology technology = await this._technologyRepository.GetByIdAsync(technologyServiceModel.Id); - - return new Tuple<User, Technology>(user, technology); - } #endregion } } |
