aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-01-07 22:10:58 +0800
committercrupest <crupest@outlook.com>2021-01-07 22:10:58 +0800
commit04186d5f1091266b85758d4b4255c6a7c1b498f6 (patch)
tree2ca5678d575eae81f71220896a9862468c93fcc3 /BackEnd/Timeline/Models/Mapper/TimelineMapper.cs
parent532c6ccd3498a0daabb3d6dbe3f0348f4b2d6a1f (diff)
downloadtimeline-04186d5f1091266b85758d4b4255c6a7c1b498f6.tar.gz
timeline-04186d5f1091266b85758d4b4255c6a7c1b498f6.tar.bz2
timeline-04186d5f1091266b85758d4b4255c6a7c1b498f6.zip
feat: Timeline info contains bookmark and highlight flag.
Diffstat (limited to 'BackEnd/Timeline/Models/Mapper/TimelineMapper.cs')
-rw-r--r--BackEnd/Timeline/Models/Mapper/TimelineMapper.cs14
1 files changed, 10 insertions, 4 deletions
diff --git a/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs b/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs
index 14ca8fe9..95418573 100644
--- a/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs
+++ b/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs
@@ -15,14 +15,18 @@ namespace Timeline.Models.Mapper
{
private readonly DatabaseContext _database;
private readonly UserMapper _userMapper;
+ private readonly IHighlightTimelineService _highlightTimelineService;
+ private readonly IBookmarkTimelineService _bookmarkTimelineService;
- public TimelineMapper(DatabaseContext database, UserMapper userMapper)
+ public TimelineMapper(DatabaseContext database, UserMapper userMapper, IHighlightTimelineService highlightTimelineService, IBookmarkTimelineService bookmarkTimelineService)
{
_database = database;
_userMapper = userMapper;
+ _highlightTimelineService = highlightTimelineService;
+ _bookmarkTimelineService = bookmarkTimelineService;
}
- public async Task<HttpTimeline> MapToHttp(TimelineEntity entity, IUrlHelper urlHelper)
+ public async Task<HttpTimeline> MapToHttp(TimelineEntity entity, IUrlHelper urlHelper, long? userId)
{
await _database.Entry(entity).Reference(e => e.Owner).LoadAsync();
await _database.Entry(entity).Collection(e => e.Members).Query().Include(m => m.User).LoadAsync();
@@ -40,6 +44,8 @@ namespace Timeline.Models.Mapper
members: await _userMapper.MapToHttp(entity.Members.Select(m => m.User).ToList(), urlHelper),
createTime: entity.CreateTime,
lastModified: entity.LastModified,
+ isHighlight: await _highlightTimelineService.IsHighlightTimeline(entity.Id),
+ isBookmark: userId is not null && await _bookmarkTimelineService.IsBookmark(userId.Value, entity.Id, false, false),
links: new HttpTimelineLinks(
self: urlHelper.ActionLink(nameof(TimelineController.TimelineGet), nameof(TimelineController)[0..^nameof(Controller).Length], new { timeline = timelineName }),
posts: urlHelper.ActionLink(nameof(TimelineController.PostListGet), nameof(TimelineController)[0..^nameof(Controller).Length], new { timeline = timelineName })
@@ -47,12 +53,12 @@ namespace Timeline.Models.Mapper
);
}
- public async Task<List<HttpTimeline>> MapToHttp(List<TimelineEntity> entities, IUrlHelper urlHelper)
+ public async Task<List<HttpTimeline>> MapToHttp(List<TimelineEntity> entities, IUrlHelper urlHelper, long? userId)
{
var result = new List<HttpTimeline>();
foreach (var entity in entities)
{
- result.Add(await MapToHttp(entity, urlHelper));
+ result.Add(await MapToHttp(entity, urlHelper, userId));
}
return result;
}