From df1ef1e21d8d889a2c9abd440039533c6a43818f Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 7 Jan 2021 16:23:20 +0800 Subject: 史诗级重构! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BackEnd/Timeline/Models/Mapper/UserMapper.cs | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 BackEnd/Timeline/Models/Mapper/UserMapper.cs (limited to 'BackEnd/Timeline/Models/Mapper/UserMapper.cs') diff --git a/BackEnd/Timeline/Models/Mapper/UserMapper.cs b/BackEnd/Timeline/Models/Mapper/UserMapper.cs new file mode 100644 index 00000000..3255dca9 --- /dev/null +++ b/BackEnd/Timeline/Models/Mapper/UserMapper.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; +using System.Linq; +using Timeline.Controllers; +using Timeline.Entities; +using Timeline.Models.Http; +using Timeline.Services; + +namespace Timeline.Models.Mapper +{ + public static class UserMapper + { + public static HttpUser MapToHttp(this 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), + 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 }), + timeline: urlHelper.ActionLink(nameof(TimelineController.TimelineGet), nameof(TimelineController)[0..^nameof(Controller).Length], new { timeline = "@" + entity.Username }) + ) + ); + } + + public static List MapToHttp(this List entities, IUrlHelper urlHelper) + { + return entities.Select(e => e.MapToHttp(urlHelper)).ToList(); + } + + private static List MapPermission(UserEntity entity) + { + return entity.Permissions.Select(p => p.Permission).ToList(); + } + } +} -- cgit v1.2.3