aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Services
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-01-19 23:01:33 +0200
committertranstrike <transtrike@gmail.com>2021-01-19 23:01:33 +0200
commitaa4f7bdd9a2df09fc47e82c2b85fb7647203ba8d (patch)
tree72b1ed4e49b3fc7d6e92a952c9cb1c13ac82251e /src/DevHive.Services
parentcb38f51c346722fda36215eb5e631ec36103c2bf (diff)
downloadDevHive-aa4f7bdd9a2df09fc47e82c2b85fb7647203ba8d.tar
DevHive-aa4f7bdd9a2df09fc47e82c2b85fb7647203ba8d.tar.gz
DevHive-aa4f7bdd9a2df09fc47e82c2b85fb7647203ba8d.zip
Config ExceptionMiddleware; Config Mapper; Fixed User editing; Implmeneted Friend add trough HttpPatch
Diffstat (limited to 'src/DevHive.Services')
-rw-r--r--src/DevHive.Services/Configurations/Mapping/UserMappings.cs2
-rw-r--r--src/DevHive.Services/Models/Identity/User/FriendServiceModel.cs7
-rw-r--r--src/DevHive.Services/Models/Identity/User/UserServiceModel.cs2
-rw-r--r--src/DevHive.Services/Services/UserService.cs26
4 files changed, 33 insertions, 4 deletions
diff --git a/src/DevHive.Services/Configurations/Mapping/UserMappings.cs b/src/DevHive.Services/Configurations/Mapping/UserMappings.cs
index d57c6ba..541e16e 100644
--- a/src/DevHive.Services/Configurations/Mapping/UserMappings.cs
+++ b/src/DevHive.Services/Configurations/Mapping/UserMappings.cs
@@ -11,8 +11,10 @@ namespace DevHive.Services.Configurations.Mapping
CreateMap<UserServiceModel, User>();
CreateMap<RegisterServiceModel, User>();
CreateMap<UpdateUserServiceModel, User>();
+ CreateMap<FriendServiceModel, User>();
CreateMap<User, UserServiceModel>();
+ CreateMap<User, FriendServiceModel>();
}
}
}
diff --git a/src/DevHive.Services/Models/Identity/User/FriendServiceModel.cs b/src/DevHive.Services/Models/Identity/User/FriendServiceModel.cs
new file mode 100644
index 0000000..63d57f7
--- /dev/null
+++ b/src/DevHive.Services/Models/Identity/User/FriendServiceModel.cs
@@ -0,0 +1,7 @@
+namespace DevHive.Services.Models.Identity.User
+{
+ public class FriendServiceModel
+ {
+ public string UserName { get; set; }
+ }
+}
diff --git a/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs b/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs
index aa77a0c..913b5c0 100644
--- a/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs
+++ b/src/DevHive.Services/Models/Identity/User/UserServiceModel.cs
@@ -9,7 +9,7 @@ namespace DevHive.Services.Models.Identity.User
{
public IList<RoleServiceModel> Roles { get; set; } = new List<RoleServiceModel>();
- public IList<UserServiceModel> Friends { get; set; } = new List<UserServiceModel>();
+ public IList<FriendServiceModel> Friends { get; set; } = new List<FriendServiceModel>();
public IList<LanguageServiceModel> Languages { get; set; } = new List<LanguageServiceModel>();
diff --git a/src/DevHive.Services/Services/UserService.cs b/src/DevHive.Services/Services/UserService.cs
index a8b9ef9..ee4b24d 100644
--- a/src/DevHive.Services/Services/UserService.cs
+++ b/src/DevHive.Services/Services/UserService.cs
@@ -15,6 +15,7 @@ using DevHive.Services.Interfaces;
using DevHive.Data.Interfaces.Repositories;
using Microsoft.AspNetCore.JsonPatch;
using System.Linq;
+using Newtonsoft.Json;
namespace DevHive.Services.Services
{
@@ -171,18 +172,37 @@ namespace DevHive.Services.Services
User user = await this._userRepository.GetByIdAsync(id) ??
throw new ArgumentException("User does not exist!");
- var password = jsonPatch.Operations
+ object password = jsonPatch.Operations
.Where(x => x.path == "/password")
.Select(x => x.value)
.FirstOrDefault();
+ IEnumerable<object> friends = jsonPatch.Operations
+ .Where(x => x.path == "/friends")
+ .Select(x => x.value);
+
if(password != null)
{
string passwordHash = this.GeneratePasswordHash(password.ToString());
user.PasswordHash = passwordHash;
}
- else
- jsonPatch.ApplyTo(user);
+
+ if (friends != null)
+ {
+ foreach (object friendObj in friends)
+ {
+ FriendServiceModel friendServiceModel =
+ JsonConvert.DeserializeObject<FriendServiceModel>(friendObj.ToString());
+
+ User amigo = await this._userRepository.GetByUsernameAsync(friendServiceModel.UserName)
+ ?? throw new ArgumentException($"User {friendServiceModel.UserName} does not exist!");
+
+ user.Friends.Add(amigo);
+ }
+ }
+
+ //Remove password and friends peace from the request patch before applying the rest
+ // jsonPatch.ApplyTo(user);
bool success = await this._userRepository.EditAsync(user);
if (success)