aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Services/Services/UserService.cs
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-01-14 00:12:48 +0200
committertranstrike <transtrike@gmail.com>2021-01-14 00:12:48 +0200
commit2948a92492141f4d807449191901f499530d8465 (patch)
tree36d30886af22351d86d937f03558c501254ad621 /src/DevHive.Services/Services/UserService.cs
parentd77add41838823ad50caf8d1ae5ee8e61c1bb26b (diff)
downloadDevHive-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/Services/UserService.cs')
-rw-r--r--src/DevHive.Services/Services/UserService.cs100
1 files changed, 56 insertions, 44 deletions
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
}
}