diff options
| author | transtrike <transtrike@gmail.com> | 2021-01-12 23:07:13 +0200 |
|---|---|---|
| committer | transtrike <transtrike@gmail.com> | 2021-01-12 23:07:13 +0200 |
| commit | 8e11fbaa79ad6fba234e8162c5b291174ed31fbb (patch) | |
| tree | 284e015b6126ea714ccae916296c750a9d78cef1 /src/DevHive.Services | |
| parent | 65367fb0db7c62a10cf20738ee3e64e1659a1e76 (diff) | |
| download | DevHive-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')
6 files changed, 41 insertions, 28 deletions
diff --git a/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs b/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs index 0be9ca2..e483fff 100644 --- a/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs +++ b/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs @@ -9,7 +9,12 @@ namespace DevHive.Services.Configurations.Mapping public LanguageMappings() { CreateMap<LanguageServiceModel, Language>(); + CreateMap<CreateLanguageServiceModel, Language>(); + CreateMap<UpdateLanguageServiceModel, Language>(); + CreateMap<Language, LanguageServiceModel>(); + CreateMap<Language, CreateLanguageServiceModel>(); + CreateMap<Language, UpdateLanguageServiceModel>(); } } }
\ No newline at end of file diff --git a/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs b/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs index 953b038..8825f50 100644 --- a/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs +++ b/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs @@ -1,11 +1,15 @@ using System.Collections.Generic; using DevHive.Common.Models.Identity; +using DevHive.Services.Models.Language; +using DevHive.Services.Models.Technology; namespace DevHive.Services.Models.Identity.User { public class UserServiceModel : BaseUserServiceModel { public IList<RoleModel> Roles { get; set; } = new List<RoleModel>(); - public List<UserServiceModel> Friends { get; set; } = new List<UserServiceModel>(); + public IList<UserServiceModel> Friends { get; set; } = new List<UserServiceModel>(); + public IList<LanguageServiceModel> Languages { get; set; } = new List<LanguageServiceModel>(); + public IList<TechnologyServiceModel> TechnologyServiceModels { get; set; } = new List<TechnologyServiceModel>(); } } diff --git a/src/DevHive.Services/Models/Language/CreateLanguageServiceModel.cs b/src/DevHive.Services/Models/Language/CreateLanguageServiceModel.cs index 75e7714..9d66d3e 100644 --- a/src/DevHive.Services/Models/Language/CreateLanguageServiceModel.cs +++ b/src/DevHive.Services/Models/Language/CreateLanguageServiceModel.cs @@ -2,7 +2,7 @@ using System; namespace DevHive.Services.Models.Language { - public class CreateLanguageServiceModel : LanguageServiceModel + public class CreateLanguageServiceModel { public string Name { get; set; } } diff --git a/src/DevHive.Services/Models/Language/UpdateLanguageServiceModel.cs b/src/DevHive.Services/Models/Language/UpdateLanguageServiceModel.cs index fdc309e..8536693 100644 --- a/src/DevHive.Services/Models/Language/UpdateLanguageServiceModel.cs +++ b/src/DevHive.Services/Models/Language/UpdateLanguageServiceModel.cs @@ -1,4 +1,9 @@ +using System; + namespace DevHive.Services.Models.Language { - public class UpdateLanguageServiceModel : CreateLanguageServiceModel { } + public class UpdateLanguageServiceModel : LanguageServiceModel + { + public string Name { get; set; } + } } diff --git a/src/DevHive.Services/Services/LanguageService.cs b/src/DevHive.Services/Services/LanguageService.cs index 127bde4..ccc64fd 100644 --- a/src/DevHive.Services/Services/LanguageService.cs +++ b/src/DevHive.Services/Services/LanguageService.cs @@ -18,12 +18,13 @@ namespace DevHive.Services.Services this._languageMapper = mapper; } - public async Task<bool> CreateLanguage(CreateLanguageServiceModel languageServiceModel) + public async Task<bool> CreateLanguage(CreateLanguageServiceModel createLanguageServiceModel) { - if (await this._languageRepository.DoesLanguageNameExistAsync(languageServiceModel.Name)) + if (await this._languageRepository.DoesLanguageNameExistAsync(createLanguageServiceModel.Name)) throw new ArgumentException("Language already exists!"); - Language language = this._languageMapper.Map<Language>(languageServiceModel); + //TODO: Fix, cuz it breaks + Language language = this._languageMapper.Map<Language>(createLanguageServiceModel); bool result = await this._languageRepository.AddAsync(language); return result; 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 } |
