aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-01-12 20:45:14 +0200
committertranstrike <transtrike@gmail.com>2021-01-12 20:45:14 +0200
commit56f5578d5f93a56984deb6735dba51551868f6d8 (patch)
tree5f309ba5a79882ad41ed78bf7ae8f18f38be757e /src
parentd2a754aa220f37ac28393451e7ad5793687bb999 (diff)
downloadDevHive-56f5578d5f93a56984deb6735dba51551868f6d8.tar
DevHive-56f5578d5f93a56984deb6735dba51551868f6d8.tar.gz
DevHive-56f5578d5f93a56984deb6735dba51551868f6d8.zip
Full implementation of Language & Technologies to User
Diffstat (limited to 'src')
-rw-r--r--src/DevHive.Data/Repositories/TechnologyRepository.cs36
-rw-r--r--src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs9
-rw-r--r--src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs4
-rw-r--r--src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs5
-rw-r--r--src/DevHive.Services/Services/TechnologyService.cs24
-rw-r--r--src/DevHive.Services/Services/UserService.cs77
-rw-r--r--src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs10
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs10
-rw-r--r--src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs13
-rw-r--r--src/DevHive.Web/Controllers/TechnologyController.cs5
-rw-r--r--src/DevHive.Web/Controllers/UserController.cs65
-rw-r--r--src/DevHive.Web/Models/Technology/CreateTechnologyWebModel.cs7
-rw-r--r--src/DevHive.Web/Models/Technology/TechnologyWebModel.cs4
-rw-r--r--src/DevHive.Web/Models/Technology/UpdateTechnologyWebModel.cs4
-rw-r--r--src/DevHive.Web/Program.cs4
15 files changed, 206 insertions, 71 deletions
diff --git a/src/DevHive.Data/Repositories/TechnologyRepository.cs b/src/DevHive.Data/Repositories/TechnologyRepository.cs
index cc0e642..21d69a3 100644
--- a/src/DevHive.Data/Repositories/TechnologyRepository.cs
+++ b/src/DevHive.Data/Repositories/TechnologyRepository.cs
@@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore;
namespace DevHive.Data.Repositories
{
- public abstract class TechnologyRepository : IRepository<Technology>
+ public class TechnologyRepository : IRepository<Technology>
{
private readonly DevHiveContext _context;
@@ -18,7 +18,6 @@ namespace DevHive.Data.Repositories
#region Create
-
public async Task<bool> AddAsync(Technology entity)
{
await this._context
@@ -37,22 +36,6 @@ namespace DevHive.Data.Repositories
.Set<Technology>()
.FindAsync(id);
}
-
- public async Task<bool> DoesTechnologyNameExist(string technologyName)
- {
- return await this._context
- .Set<Technology>()
- .AsNoTracking()
- .AnyAsync(r => r.Name == technologyName);
- }
-
- public async Task<bool> DoesTechnologyExist(Guid id)
- {
- return await this._context
- .Set<Technology>()
- .AsNoTracking()
- .AnyAsync(r => r.Id == id);
- }
#endregion
#region Edit
@@ -78,5 +61,22 @@ namespace DevHive.Data.Repositories
return await RepositoryMethods.SaveChangesAsync(this._context);
}
#endregion
+
+ #region Validations
+
+ public async Task<bool> DoesTechnologyNameExist(string technologyName)
+ {
+ return await this._context
+ .Set<Technology>()
+ .AsNoTracking()
+ .AnyAsync(r => r.Name == technologyName);
+ }
+
+ public async Task<bool> DoesTechnologyExistAsync(Guid id)
+ {
+ return await this._context.Technologies
+ .AnyAsync(x => x.Id == id);
+ }
+ #endregion
}
} \ No newline at end of file
diff --git a/src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs b/src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs
new file mode 100644
index 0000000..ca848f9
--- /dev/null
+++ b/src/DevHive.Services/Models/Technology/CreateTechnologyServiceModel.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace DevHive.Services.Models.Technology
+{
+ public class CreateTechnologyServiceModel : TechnologyServiceModel
+ {
+ public string Name { get; set; }
+ }
+} \ No newline at end of file
diff --git a/src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs b/src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs
index 6fcc83e..afea6cf 100644
--- a/src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs
+++ b/src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs
@@ -1,7 +1,9 @@
+using System;
+
namespace DevHive.Services.Models.Technology
{
public class TechnologyServiceModel
{
- public string Name { get; set; }
+ public Guid Id { get; set; }
}
} \ No newline at end of file
diff --git a/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs b/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs
index e7ee85b..bfeae51 100644
--- a/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs
+++ b/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs
@@ -2,8 +2,5 @@ using System;
namespace DevHive.Services.Models.Technology
{
- public class UpdateTechnologyServiceModel : TechnologyServiceModel
- {
- public Guid Id { get; set; }
- }
+ public class UpdateTechnologyServiceModel : CreateTechnologyServiceModel {}
} \ No newline at end of file
diff --git a/src/DevHive.Services/Services/TechnologyService.cs b/src/DevHive.Services/Services/TechnologyService.cs
index 2913a55..883b8c5 100644
--- a/src/DevHive.Services/Services/TechnologyService.cs
+++ b/src/DevHive.Services/Services/TechnologyService.cs
@@ -17,8 +17,10 @@ namespace DevHive.Services.Services
this._technologyRepository = technologyRepository;
this._technologyMapper = technologyMapper;
}
-
- public async Task<bool> Create(TechnologyServiceModel technologyServiceModel)
+
+ #region Create
+
+ public async Task<bool> Create(CreateTechnologyServiceModel technologyServiceModel)
{
if (await this._technologyRepository.DoesTechnologyNameExist(technologyServiceModel.Name))
throw new ArgumentException("Technology already exists!");
@@ -28,7 +30,10 @@ namespace DevHive.Services.Services
return result;
}
-
+ #endregion
+
+ #region Read
+
public async Task<TechnologyServiceModel> GetTechnologyById(Guid id)
{
Technology technology = await this._technologyRepository.GetByIdAsync(id);
@@ -38,10 +43,13 @@ namespace DevHive.Services.Services
return this._technologyMapper.Map<TechnologyServiceModel>(technology);
}
+ #endregion
+
+ #region Update
public async Task<bool> UpdateTechnology(UpdateTechnologyServiceModel updateTechnologyServiceModel)
{
- if (!await this._technologyRepository.DoesTechnologyExist(updateTechnologyServiceModel.Id))
+ if (!await this._technologyRepository.DoesTechnologyExistAsync(updateTechnologyServiceModel.Id))
throw new ArgumentException("Technology does not exist!");
if (await this._technologyRepository.DoesTechnologyNameExist(updateTechnologyServiceModel.Name))
@@ -52,10 +60,13 @@ namespace DevHive.Services.Services
return result;
}
-
+ #endregion
+
+ #region Delete
+
public async Task<bool> DeleteTechnology(Guid id)
{
- if (!await this._technologyRepository.DoesTechnologyExist(id))
+ if (!await this._technologyRepository.DoesTechnologyExistAsync(id))
throw new ArgumentException("Technology does not exist!");
Technology technology = await this._technologyRepository.GetByIdAsync(id);
@@ -63,5 +74,6 @@ namespace DevHive.Services.Services
return result;
}
+ #endregion
}
} \ No newline at end of file
diff --git a/src/DevHive.Services/Services/UserService.cs b/src/DevHive.Services/Services/UserService.cs
index e1f925d..4fb18a0 100644
--- a/src/DevHive.Services/Services/UserService.cs
+++ b/src/DevHive.Services/Services/UserService.cs
@@ -13,6 +13,7 @@ using System.Collections.Generic;
using DevHive.Common.Models.Identity;
using DevHive.Services.Models.Language;
using DevHive.Data.Repositories;
+using DevHive.Services.Models.Technology;
namespace DevHive.Services.Services
{
@@ -108,23 +109,16 @@ namespace DevHive.Services.Services
public async Task<bool> AddLanguageToUser(Guid userId, LanguageServiceModel languageServiceModel)
{
- Task<bool> userExists = this._userRepository.DoesUserExistAsync(userId);
- Task<bool> languageExists = this._languageRepository.DoesLanguageExistAsync(languageServiceModel.Id);
-
- await Task.WhenAll(userExists, languageExists);
-
- if (!userExists.Result)
- throw new ArgumentException("User does not exist!");
+ Tuple<User, Language> tuple = await ValidateUserAndLanguage(userId, languageServiceModel);
- if (!languageExists.Result)
- throw new ArgumentException("Language does not exist!");
-
- Task<User> user = this._userRepository.GetByIdAsync(userId);
- Task<Language> language = this._languageRepository.GetByIdAsync(languageServiceModel.Id);
+ return await this._userRepository.AddLanguageToUserAsync(tuple.Item1, tuple.Item2);
+ }
- await Task.WhenAll(user, language);
+ public async Task<bool> AddTechnologyToUser(Guid userId, TechnologyServiceModel technologyServiceModel)
+ {
+ Tuple<User, Technology> tuple = await ValidateUserAndTechnology(userId, technologyServiceModel);
- return await this._userRepository.AddLanguageToUserAsync(user.Result, language.Result);
+ return await this._userRepository.AddTechnologyToUserAsync(tuple.Item1, tuple.Item2);
}
#endregion
@@ -202,6 +196,20 @@ namespace DevHive.Services.Services
return await this.RemoveFriend(userId, friendId);
}
+
+ public async Task<bool> RemoveLanguageFromUser(Guid userId, LanguageServiceModel languageServiceModel)
+ {
+ Tuple<User, Language> tuple = await ValidateUserAndLanguage(userId, languageServiceModel);
+
+ return await this._userRepository.RemoveLanguageFromUserAsync(tuple.Item1, tuple.Item2);
+ }
+
+ public async Task<bool> RemoveTechnologyFromUser(Guid userId, TechnologyServiceModel technologyServiceModel)
+ {
+ Tuple<User, Technology> tuple = await ValidateUserAndTechnology(userId, technologyServiceModel);
+
+ return await this._userRepository.RemoveTechnologyFromUserAsync(tuple.Item1, tuple.Item2);
+ }
#endregion
#region Validations
@@ -283,6 +291,47 @@ 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)
+ {
+ Task<bool> userExists = this._userRepository.DoesUserExistAsync(userId);
+ Task<bool> languageExists = this._languageRepository.DoesLanguageExistAsync(languageServiceModel.Id);
+
+ await Task.WhenAll(userExists, languageExists);
+
+ if (!userExists.Result)
+ throw new ArgumentException("User does not exist!");
+
+ if (!languageExists.Result)
+ 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);
+
+ return new Tuple<User, Language>(user.Result, language.Result);
+ }
+
+ 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);
+
+ if (!userExists.Result)
+ throw new ArgumentException("User does not exist!");
+
+ if (!technologyExists.Result)
+ 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);
+
+ return new Tuple<User, Technology>(user.Result, technology.Result);
+ }
#endregion
}
}
diff --git a/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs b/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs
index beac798..54cf7c0 100644
--- a/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs
@@ -76,7 +76,7 @@ namespace DevHive.Data.Tests
}
#endregion
- #region DoesTechnologyExist
+ #region DoesTechnologyExistAsync
[Test]
public void DoesTechnologyExist_ReturnsTrue_IfIdExists()
{
@@ -86,9 +86,9 @@ namespace DevHive.Data.Tests
Technology technology = this.Context.Technologies.Where(x => x.Name == TECHNOLOGY_NAME).ToList().FirstOrDefault();
Guid id = technology.Id;
- bool result = await this.TechnologyRepository.DoesTechnologyExist(id);
+ bool result = await this.TechnologyRepository.DoesTechnologyExistAsync(id);
- Assert.IsTrue(result, "DoesTechnologyExist returns flase hwen technology exists");
+ Assert.IsTrue(result, "DoesTechnologyExistAsync returns flase hwen technology exists");
}).GetAwaiter().GetResult();
}
@@ -99,9 +99,9 @@ namespace DevHive.Data.Tests
{
Guid id = new Guid();
- bool result = await this.TechnologyRepository.DoesTechnologyExist(id);
+ bool result = await this.TechnologyRepository.DoesTechnologyExistAsync(id);
- Assert.IsFalse(result, "DoesTechnologyExist returns true when technology does not exist");
+ Assert.IsFalse(result, "DoesTechnologyExistAsync returns true when technology does not exist");
}).GetAwaiter().GetResult();
}
#endregion
diff --git a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs
index 3e26201..acb5e64 100644
--- a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs
@@ -157,7 +157,7 @@ namespace DevHive.Services.Tests
Id = id
};
- this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(true));
this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExist(It.IsAny<string>())).Returns(Task.FromResult(false));
this.TechnologyRepositoryMock.Setup(p => p.EditAsync(It.IsAny<Technology>())).Returns(Task.FromResult(shouldPass));
this.MapperMock.Setup(p => p.Map<Technology>(It.IsAny<UpdateTechnologyServiceModel>())).Returns(technology);
@@ -180,7 +180,7 @@ namespace DevHive.Services.Tests
Id = id
};
- this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+ this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(false));
try
{
@@ -206,7 +206,7 @@ namespace DevHive.Services.Tests
Id = id
};
- this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(true));
this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExist(It.IsAny<string>())).Returns(Task.FromResult(true));
try
@@ -233,7 +233,7 @@ namespace DevHive.Services.Tests
Guid id = new Guid();
Technology technology = new Technology();
- this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(true));
this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(technology));
this.TechnologyRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny<Technology>())).Returns(Task.FromResult(shouldPass));
@@ -251,7 +251,7 @@ namespace DevHive.Services.Tests
string exceptionMessage = "Technology does not exist!";
Guid id = new Guid();
- this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+ this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(false));
try
{
diff --git a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
index 2707d91..cce5174 100644
--- a/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
+++ b/src/DevHive.Web/Configurations/Extensions/ConfigureDependencyInjection.cs
@@ -1,3 +1,4 @@
+using DevHive.Data.Models;
using DevHive.Data.Repositories;
using DevHive.Services.Services;
using Microsoft.Extensions.DependencyInjection;
@@ -8,17 +9,19 @@ namespace DevHive.Web.Configurations.Extensions
{
public static void DependencyInjectionConfiguration(this IServiceCollection services)
{
+ services.AddTransient<LanguageRepository>();
+ services.AddTransient<RoleRepository>();
+ services.AddTransient<TechnologyRepository>();
+ services.AddTransient<UserRepository>();
+ services.AddTransient<PostRepository>();
+
services.AddTransient<LanguageService>();
services.AddTransient<RoleService>();
services.AddTransient<TechnologyService>();
services.AddTransient<UserService>();
services.AddTransient<PostService>();
- services.AddTransient<LanguageRepository>();
- services.AddTransient<RoleRepository>();
- services.AddTransient<TechnologyRepository>();
- services.AddTransient<UserRepository>();
- services.AddTransient<PostRepository>();
+ System.Console.WriteLine(services.Count);
}
}
} \ No newline at end of file
diff --git a/src/DevHive.Web/Controllers/TechnologyController.cs b/src/DevHive.Web/Controllers/TechnologyController.cs
index 08d4ca8..e02ca3d 100644
--- a/src/DevHive.Web/Controllers/TechnologyController.cs
+++ b/src/DevHive.Web/Controllers/TechnologyController.cs
@@ -23,9 +23,9 @@ namespace DevHive.Web.Controllers
}
[HttpPost]
- public async Task<IActionResult> Create([FromBody] TechnologyWebModel technologyWebModel)
+ public async Task<IActionResult> Create([FromBody] CreateTechnologyWebModel technologyWebModel)
{
- TechnologyServiceModel technologyServiceModel = this._technologyMapper.Map<TechnologyServiceModel>(technologyWebModel);
+ CreateTechnologyServiceModel technologyServiceModel = this._technologyMapper.Map<CreateTechnologyServiceModel>(technologyWebModel);
bool result = await this._technologyService.Create(technologyServiceModel);
@@ -48,7 +48,6 @@ namespace DevHive.Web.Controllers
public async Task<IActionResult> Update(Guid id, [FromBody] UpdateTechnologyWebModel updateModel)
{
UpdateTechnologyServiceModel updateTechnologyWebModel = this._technologyMapper.Map<UpdateTechnologyServiceModel>(updateModel);
- updateTechnologyWebModel.Id = id;
bool result = await this._technologyService.UpdateTechnology(updateTechnologyWebModel);
diff --git a/src/DevHive.Web/Controllers/UserController.cs b/src/DevHive.Web/Controllers/UserController.cs
index ce972a5..8fa07cf 100644
--- a/src/DevHive.Web/Controllers/UserController.cs
+++ b/src/DevHive.Web/Controllers/UserController.cs
@@ -10,6 +10,10 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using DevHive.Common.Models.Identity;
using DevHive.Common.Models.Misc;
+using DevHive.Web.Models.Language;
+using DevHive.Services.Models.Language;
+using DevHive.Web.Models.Technology;
+using DevHive.Services.Models.Technology;
namespace DevHive.Web.Controllers
{
@@ -27,6 +31,7 @@ namespace DevHive.Web.Controllers
this._userMapper = mapper;
}
+ #region Authentication
[HttpPost]
[Route("Login")]
[AllowAnonymous]
@@ -40,7 +45,6 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(tokenWebModel);
}
- //Create
[HttpPost]
[Route("Register")]
[AllowAnonymous]
@@ -53,6 +57,9 @@ namespace DevHive.Web.Controllers
return new CreatedResult("Register", tokenWebModel);
}
+ #endregion
+
+ #region Create
[HttpPost]
[Route("AddAFriend")]
@@ -63,7 +70,30 @@ namespace DevHive.Web.Controllers
new BadRequestResult();
}
- //Read
+ [HttpPost]
+ [Route("AddLanguageToUser")]
+ public async Task<IActionResult> AddLanguageToUser(Guid userId, [FromBody] LanguageWebModel languageWebModel)
+ {
+ LanguageServiceModel languageServiceModel = this._userMapper.Map<LanguageServiceModel>(languageWebModel);
+
+ return await this._userService.AddLanguageToUser(userId, languageServiceModel) ?
+ new OkResult() :
+ new BadRequestResult();
+ }
+
+ [HttpPost]
+ [Route("AddTechnologyToUser")]
+ public async Task<IActionResult> AddTechnologyToUser(Guid userId, [FromBody] TechnologyWebModel technologyWebModel)
+ {
+ TechnologyServiceModel technologyServiceModel = this._userMapper.Map<TechnologyServiceModel>(technologyWebModel);
+
+ return await this._userService.AddTechnologyToUser(userId, technologyServiceModel) ?
+ new OkResult() :
+ new BadRequestResult();
+ }
+ #endregion
+
+ #region Read
[HttpGet]
public async Task<IActionResult> GetById(Guid id, [FromHeader] string authorization)
{
@@ -85,8 +115,9 @@ namespace DevHive.Web.Controllers
return new OkObjectResult(friend);
}
+ #endregion
- //Update
+ #region Update
[HttpPut]
public async Task<IActionResult> Update(Guid id, [FromBody] UpdateUserWebModel updateModel, [FromHeader] string authorization)
{
@@ -100,10 +131,10 @@ namespace DevHive.Web.Controllers
UserWebModel userWebModel = this._userMapper.Map<UserWebModel>(userServiceModel);
return new AcceptedResult("UpdateUser", userWebModel);
-
}
+ #endregion
- //Delete
+ #region Delete
[HttpDelete]
public async Task<IActionResult> Delete(Guid id, [FromHeader] string authorization)
{
@@ -121,5 +152,29 @@ namespace DevHive.Web.Controllers
await this._userService.RemoveFriend(userId, friendId);
return new OkResult();
}
+
+ [HttpPost]
+ [Route("RemoveLanguageFromUser")]
+ public async Task<IActionResult> RemoveLanguageFromUser(Guid userId, [FromBody] LanguageWebModel languageWebModel)
+ {
+ LanguageServiceModel languageServiceModel = this._userMapper.Map<LanguageServiceModel>(languageWebModel);
+
+ return await this._userService.RemoveLanguageFromUser(userId, languageServiceModel) ?
+ new OkResult() :
+ new BadRequestResult();
+ }
+
+ [HttpPost]
+ [Route("RemoveTechnologyFromUser")]
+ public async Task<IActionResult> RemoveTechnologyFromUser(Guid userId, [FromBody] TechnologyWebModel technologyWebModel)
+ {
+ TechnologyServiceModel technologyServiceModel = this._userMapper.Map<TechnologyServiceModel>(technologyWebModel);
+
+ return await this._userService.RemoveTechnologyFromUser(userId, technologyServiceModel) ?
+ new OkResult() :
+ new BadRequestResult();
+ }
+
+ #endregion
}
}
diff --git a/src/DevHive.Web/Models/Technology/CreateTechnologyWebModel.cs b/src/DevHive.Web/Models/Technology/CreateTechnologyWebModel.cs
new file mode 100644
index 0000000..27da4a0
--- /dev/null
+++ b/src/DevHive.Web/Models/Technology/CreateTechnologyWebModel.cs
@@ -0,0 +1,7 @@
+namespace DevHive.Web.Models.Technology
+{
+ public class CreateTechnologyWebModel : TechnologyWebModel
+ {
+ public string Name { get; set; }
+ }
+} \ No newline at end of file
diff --git a/src/DevHive.Web/Models/Technology/TechnologyWebModel.cs b/src/DevHive.Web/Models/Technology/TechnologyWebModel.cs
index cb6b998..05f7af8 100644
--- a/src/DevHive.Web/Models/Technology/TechnologyWebModel.cs
+++ b/src/DevHive.Web/Models/Technology/TechnologyWebModel.cs
@@ -1,7 +1,9 @@
+using System;
+
namespace DevHive.Web.Models.Technology
{
public class TechnologyWebModel
{
- public string Name { get; set; }
+ public Guid Id { get; set; }
}
} \ No newline at end of file
diff --git a/src/DevHive.Web/Models/Technology/UpdateTechnologyWebModel.cs b/src/DevHive.Web/Models/Technology/UpdateTechnologyWebModel.cs
index b94496e..d395c9f 100644
--- a/src/DevHive.Web/Models/Technology/UpdateTechnologyWebModel.cs
+++ b/src/DevHive.Web/Models/Technology/UpdateTechnologyWebModel.cs
@@ -2,8 +2,8 @@ using System;
namespace DevHive.Web.Models.Technology
{
- public class UpdateTechnologyWebModel : TechnologyWebModel
+ public class UpdateTechnologyWebModel
{
- public Guid Id { get; set; }
+ public string Name { get; set; }
}
} \ No newline at end of file
diff --git a/src/DevHive.Web/Program.cs b/src/DevHive.Web/Program.cs
index 9cbe12a..6982da9 100644
--- a/src/DevHive.Web/Program.cs
+++ b/src/DevHive.Web/Program.cs
@@ -5,7 +5,7 @@ namespace DevHive.Web
{
public class Program
{
- private const int HTTPS_PORT = 5000;
+ private const int HTTP_PORT = 5000;
public static void Main(string[] args)
{
@@ -16,7 +16,7 @@ namespace DevHive.Web
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
- webBuilder.ConfigureKestrel(opt => opt.ListenLocalhost(HTTPS_PORT));
+ webBuilder.ConfigureKestrel(opt => opt.ListenLocalhost(HTTP_PORT));
webBuilder.UseStartup<Startup>();
});
}