aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Services/Services/UserService.cs
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-01-12 23:07:13 +0200
committertranstrike <transtrike@gmail.com>2021-01-12 23:07:13 +0200
commit8e11fbaa79ad6fba234e8162c5b291174ed31fbb (patch)
tree284e015b6126ea714ccae916296c750a9d78cef1 /src/DevHive.Services/Services/UserService.cs
parent65367fb0db7c62a10cf20738ee3e64e1659a1e76 (diff)
downloadDevHive-8e11fbaa79ad6fba234e8162c5b291174ed31fbb.tar
DevHive-8e11fbaa79ad6fba234e8162c5b291174ed31fbb.tar.gz
DevHive-8e11fbaa79ad6fba234e8162c5b291174ed31fbb.zip
Fixed bugs with Lang features, User's GetById, Lang & User mappings; Added more UserService validations
Diffstat (limited to 'src/DevHive.Services/Services/UserService.cs')
-rw-r--r--src/DevHive.Services/Services/UserService.cs42
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
}