diff options
| author | transtrike <transtrike@gmail.com> | 2021-01-19 23:01:33 +0200 |
|---|---|---|
| committer | transtrike <transtrike@gmail.com> | 2021-01-19 23:01:33 +0200 |
| commit | aa4f7bdd9a2df09fc47e82c2b85fb7647203ba8d (patch) | |
| tree | 72b1ed4e49b3fc7d6e92a952c9cb1c13ac82251e /src/DevHive.Services | |
| parent | cb38f51c346722fda36215eb5e631ec36103c2bf (diff) | |
| download | DevHive-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')
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) |
