From 97e6ac51ac4df58cd1229e7974d2b846b192558a Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 7 Jan 2021 20:12:00 +0800 Subject: refactor: Make mapper a service. Fix #202. --- BackEnd/Timeline/Models/Mapper/UserMapper.cs | 31 ++++++++++++++++++---------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'BackEnd/Timeline/Models/Mapper/UserMapper.cs') diff --git a/BackEnd/Timeline/Models/Mapper/UserMapper.cs b/BackEnd/Timeline/Models/Mapper/UserMapper.cs index 3255dca9..e6db4225 100644 --- a/BackEnd/Timeline/Models/Mapper/UserMapper.cs +++ b/BackEnd/Timeline/Models/Mapper/UserMapper.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; -using System.Linq; +using System.Threading.Tasks; using Timeline.Controllers; using Timeline.Entities; using Timeline.Models.Http; @@ -8,15 +8,24 @@ using Timeline.Services; namespace Timeline.Models.Mapper { - public static class UserMapper + public class UserMapper { - public static HttpUser MapToHttp(this UserEntity entity, IUrlHelper urlHelper) + private readonly DatabaseContext _database; + private readonly IUserPermissionService _userPermissionService; + + public UserMapper(DatabaseContext database, IUserPermissionService userPermissionService) + { + _database = database; + _userPermissionService = userPermissionService; + } + + public async Task MapToHttp(UserEntity entity, IUrlHelper urlHelper) { return new HttpUser( uniqueId: entity.UniqueId, username: entity.Username, nickname: string.IsNullOrEmpty(entity.Nickname) ? entity.Username : entity.Nickname, - permissions: MapPermission(entity), + permissions: (await _userPermissionService.GetPermissionsOfUserAsync(entity.Id, false)).ToStringList(), links: new HttpUserLinks( self: urlHelper.ActionLink(nameof(UserController.Get), nameof(UserController)[0..^nameof(Controller).Length], new { entity.Username }), avatar: urlHelper.ActionLink(nameof(UserAvatarController.Get), nameof(UserAvatarController)[0..^nameof(Controller).Length], new { entity.Username }), @@ -25,14 +34,14 @@ namespace Timeline.Models.Mapper ); } - public static List MapToHttp(this List entities, IUrlHelper urlHelper) - { - return entities.Select(e => e.MapToHttp(urlHelper)).ToList(); - } - - private static List MapPermission(UserEntity entity) + public async Task> MapToHttp(List entities, IUrlHelper urlHelper) { - return entity.Permissions.Select(p => p.Permission).ToList(); + var result = new List(); + foreach (var entity in entities) + { + result.Add(await MapToHttp(entity, urlHelper)); + } + return result; } } } -- cgit v1.2.3