aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/DevHive.Data/Repositories/UserRepository.cs9
-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
-rw-r--r--src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs2
-rw-r--r--src/DevHive.Web/Controllers/ErrorController.cs3
-rw-r--r--src/DevHive.Web/Controllers/UserController.cs2
-rw-r--r--src/DevHive.Web/Models/Identity/User/UserWebModel.cs4
-rw-r--r--src/DevHive.Web/Models/Language/CreateLanguageWebModel.cs2
-rw-r--r--src/DevHive.code-workspace3
13 files changed, 62 insertions, 32 deletions
diff --git a/src/DevHive.Data/Repositories/UserRepository.cs b/src/DevHive.Data/Repositories/UserRepository.cs
index e3c1304..64a81ae 100644
--- a/src/DevHive.Data/Repositories/UserRepository.cs
+++ b/src/DevHive.Data/Repositories/UserRepository.cs
@@ -67,8 +67,10 @@ namespace DevHive.Data.Repositories
public async Task<User> GetByIdAsync(Guid id)
{
return await this._context.Users
- .Include(x => x.Roles)
.Include(x => x.Friends)
+ .Include(x => x.Roles)
+ .Include(x => x.Langauges)
+ .Include(x => x.Technologies)
.FirstOrDefaultAsync(x => x.Id == id);
}
@@ -218,6 +220,11 @@ namespace DevHive.Data.Repositories
{
return user.Friends.Count >= 1;
}
+
+ public bool DoesUserHaveThisLanguage(User user, Language language)
+ {
+ return user.Langauges.Contains(language);
+ }
#endregion
}
}
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
}
diff --git a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
index cce5174..46b2591 100644
--- a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
+++ b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
@@ -20,8 +20,6 @@ namespace DevHive.Web.Configurations.Extensions
services.AddTransient<TechnologyService>();
services.AddTransient<UserService>();
services.AddTransient<PostService>();
-
- System.Console.WriteLine(services.Count);
}
}
} \ No newline at end of file
diff --git a/src/DevHive.Web/Controllers/ErrorController.cs b/src/DevHive.Web/Controllers/ErrorController.cs
index 67a83fe..c3f1e55 100644
--- a/src/DevHive.Web/Controllers/ErrorController.cs
+++ b/src/DevHive.Web/Controllers/ErrorController.cs
@@ -1,5 +1,6 @@
using System;
using System.Diagnostics;
+using AutoMapper;
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@@ -29,6 +30,8 @@ namespace DevHive.Web.Controllers
{
case ArgumentException _:
case InvalidOperationException _:
+ case AutoMapperMappingException _:
+ case AutoMapperConfigurationException _:
return MessageToObject(exception.Error.Message);
default:
return MessageToObject(null);
diff --git a/src/DevHive.Web/Controllers/UserController.cs b/src/DevHive.Web/Controllers/UserController.cs
index c222ba6..0960915 100644
--- a/src/DevHive.Web/Controllers/UserController.cs
+++ b/src/DevHive.Web/Controllers/UserController.cs
@@ -94,6 +94,7 @@ namespace DevHive.Web.Controllers
#endregion
#region Read
+
[HttpGet]
public async Task<IActionResult> GetById(Guid id, [FromHeader] string authorization)
{
@@ -135,6 +136,7 @@ namespace DevHive.Web.Controllers
#endregion
#region Delete
+
[HttpDelete]
public async Task<IActionResult> Delete(Guid id, [FromHeader] string authorization)
{
diff --git a/src/DevHive.Web/Models/Identity/User/UserWebModel.cs b/src/DevHive.Web/Models/Identity/User/UserWebModel.cs
index 37d6553..260d34c 100644
--- a/src/DevHive.Web/Models/Identity/User/UserWebModel.cs
+++ b/src/DevHive.Web/Models/Identity/User/UserWebModel.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using DevHive.Common.Models.Identity;
using DevHive.Web.Models.Identity.Role;
+using DevHive.Web.Models.Language;
+using DevHive.Web.Models.Technology;
namespace DevHive.Web.Models.Identity.User
{
@@ -8,5 +10,7 @@ namespace DevHive.Web.Models.Identity.User
{
public IList<RoleWebModel> Roles { get; set; } = new List<RoleWebModel>();
public IList<UserWebModel> Friends { get; set; } = new List<UserWebModel>();
+ public IList<LanguageWebModel> Languages { get; set; } = new List<LanguageWebModel>();
+ public IList<TechnologyWebModel> Technologies { get; set; } = new List<TechnologyWebModel>();
}
}
diff --git a/src/DevHive.Web/Models/Language/CreateLanguageWebModel.cs b/src/DevHive.Web/Models/Language/CreateLanguageWebModel.cs
index 111beed..d261500 100644
--- a/src/DevHive.Web/Models/Language/CreateLanguageWebModel.cs
+++ b/src/DevHive.Web/Models/Language/CreateLanguageWebModel.cs
@@ -2,7 +2,7 @@ using System;
namespace DevHive.Web.Models.Language
{
- public class CreateLanguageWebModel : LanguageWebModel
+ public class CreateLanguageWebModel
{
public string Name { get; set; }
}
diff --git a/src/DevHive.code-workspace b/src/DevHive.code-workspace
index 8899918..04a9a2f 100644
--- a/src/DevHive.code-workspace
+++ b/src/DevHive.code-workspace
@@ -57,6 +57,9 @@
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
+ "launchBrowser": {
+ "enabled": true
+ }
},
],
"compounds": []