aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Services
diff options
context:
space:
mode:
Diffstat (limited to 'src/DevHive.Services')
-rw-r--r--src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs5
-rw-r--r--src/DevHive.Services/Models/Identity/User/UserServiceModel.cs6
-rw-r--r--src/DevHive.Services/Models/Language/CreateLanguageServiceModel.cs2
-rw-r--r--src/DevHive.Services/Models/Language/UpdateLanguageServiceModel.cs7
-rw-r--r--src/DevHive.Services/Services/LanguageService.cs7
-rw-r--r--src/DevHive.Services/Services/UserService.cs42
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
}