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/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/Services')
| -rw-r--r-- | src/DevHive.Services/Services/UserService.cs | 26 |
1 files changed, 23 insertions, 3 deletions
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) |
