diff options
Diffstat (limited to 'src/DevHive.Services/Services/UserService.cs')
| -rw-r--r-- | src/DevHive.Services/Services/UserService.cs | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/DevHive.Services/Services/UserService.cs b/src/DevHive.Services/Services/UserService.cs index 4fb18a0..c1de741 100644 --- a/src/DevHive.Services/Services/UserService.cs +++ b/src/DevHive.Services/Services/UserService.cs @@ -111,6 +111,9 @@ namespace DevHive.Services.Services { Tuple<User, Language> tuple = await ValidateUserAndLanguage(userId, languageServiceModel); + if (this._userRepository.DoesUserHaveThisLanguage(tuple.Item1, tuple.Item2)) + throw new ArgumentException("User already has this language!"); + return await this._userRepository.AddLanguageToUserAsync(tuple.Item1, tuple.Item2); } @@ -201,6 +204,9 @@ namespace DevHive.Services.Services { Tuple<User, Language> tuple = await ValidateUserAndLanguage(userId, languageServiceModel); + if (!this._userRepository.DoesUserHaveThisLanguage(tuple.Item1, tuple.Item2)) + throw new ArgumentException("User does not have this language!"); + return await this._userRepository.RemoveLanguageFromUserAsync(tuple.Item1, tuple.Item2); } @@ -293,44 +299,36 @@ namespace DevHive.Services.Services private async Task<Tuple<User, Language>> ValidateUserAndLanguage(Guid userId, LanguageServiceModel languageServiceModel) { - Task<bool> userExists = this._userRepository.DoesUserExistAsync(userId); - Task<bool> languageExists = this._languageRepository.DoesLanguageExistAsync(languageServiceModel.Id); + bool userExists = await this._userRepository.DoesUserExistAsync(userId); + bool languageExists = await this._languageRepository.DoesLanguageExistAsync(languageServiceModel.Id); - await Task.WhenAll(userExists, languageExists); - - if (!userExists.Result) + if (!userExists) throw new ArgumentException("User does not exist!"); - if (!languageExists.Result) + if (!languageExists) throw new ArgumentException("Language does not exist!"); - Task<User> user = this._userRepository.GetByIdAsync(userId); - Task<Language> language = this._languageRepository.GetByIdAsync(languageServiceModel.Id); - - await Task.WhenAll(user, language); + User user = await this._userRepository.GetByIdAsync(userId); + Language language = await this._languageRepository.GetByIdAsync(languageServiceModel.Id); - return new Tuple<User, Language>(user.Result, language.Result); + return new Tuple<User, Language>(user, language); } private async Task<Tuple<User, Technology>> ValidateUserAndTechnology(Guid userId, TechnologyServiceModel technologyServiceModel) { - Task<bool> userExists = this._userRepository.DoesUserExistAsync(userId); - Task<bool> technologyExists = this._technologyRepository.DoesTechnologyExistAsync(technologyServiceModel.Id); - - await Task.WhenAll(userExists, technologyExists); + bool userExists = await this._userRepository.DoesUserExistAsync(userId); + bool technologyExists = await this._technologyRepository.DoesTechnologyExistAsync(technologyServiceModel.Id); - if (!userExists.Result) + if (!userExists) throw new ArgumentException("User does not exist!"); - if (!technologyExists.Result) + if (!technologyExists) throw new ArgumentException("Language does not exist!"); - Task<User> user = this._userRepository.GetByIdAsync(userId); - Task<Technology> technology = this._technologyRepository.GetByIdAsync(technologyServiceModel.Id); - - await Task.WhenAll(user, technology); + User user = await this._userRepository.GetByIdAsync(userId); + Technology technology = await this._technologyRepository.GetByIdAsync(technologyServiceModel.Id); - return new Tuple<User, Technology>(user.Result, technology.Result); + return new Tuple<User, Technology>(user, technology); } #endregion } |
