diff options
author | crupest <crupest@outlook.com> | 2021-01-07 16:36:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-07 16:36:57 +0800 |
commit | 5ad1b1f0191ee1131e7808c8fcb0484ba29c0d4d (patch) | |
tree | c483a2fff48ad952e787e5af1bb541d939a09f19 /BackEnd/Timeline/Models/Mapper/UserMapper.cs | |
parent | 20e9136a9f27a0b77f076ea5997b71d89ce3cfca (diff) | |
parent | df1ef1e21d8d889a2c9abd440039533c6a43818f (diff) | |
download | timeline-5ad1b1f0191ee1131e7808c8fcb0484ba29c0d4d.tar.gz timeline-5ad1b1f0191ee1131e7808c8fcb0484ba29c0d4d.tar.bz2 timeline-5ad1b1f0191ee1131e7808c8fcb0484ba29c0d4d.zip |
Merge pull request #198 from crupest/back-dev
Refactor back end.
Diffstat (limited to 'BackEnd/Timeline/Models/Mapper/UserMapper.cs')
-rw-r--r-- | BackEnd/Timeline/Models/Mapper/UserMapper.cs | 38 |
1 files changed, 38 insertions, 0 deletions
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<HttpUser> MapToHttp(this List<UserEntity> entities, IUrlHelper urlHelper)
+ {
+ return entities.Select(e => e.MapToHttp(urlHelper)).ToList();
+ }
+
+ private static List<string> MapPermission(UserEntity entity)
+ {
+ return entity.Permissions.Select(p => p.Permission).ToList();
+ }
+ }
+}
|