From 04186d5f1091266b85758d4b4255c6a7c1b498f6 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 7 Jan 2021 22:10:58 +0800 Subject: feat: Timeline info contains bookmark and highlight flag. --- BackEnd/Timeline/Models/Http/Timeline.cs | 8 +++++++- BackEnd/Timeline/Models/Mapper/TimelineMapper.cs | 14 ++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'BackEnd/Timeline/Models') diff --git a/BackEnd/Timeline/Models/Http/Timeline.cs b/BackEnd/Timeline/Models/Http/Timeline.cs index 06fa4e5a..5e5889f6 100644 --- a/BackEnd/Timeline/Models/Http/Timeline.cs +++ b/BackEnd/Timeline/Models/Http/Timeline.cs @@ -86,7 +86,7 @@ namespace Timeline.Models.Http { public HttpTimeline() { } - public HttpTimeline(string uniqueId, string title, string name, DateTime nameLastModifed, string description, HttpUser owner, TimelineVisibility visibility, List members, DateTime createTime, DateTime lastModified, HttpTimelineLinks links) + public HttpTimeline(string uniqueId, string title, string name, DateTime nameLastModifed, string description, HttpUser owner, TimelineVisibility visibility, List members, DateTime createTime, DateTime lastModified, bool isHighlight, bool isBookmark, HttpTimelineLinks links) { UniqueId = uniqueId; Title = title; @@ -98,6 +98,8 @@ namespace Timeline.Models.Http Members = members; CreateTime = createTime; LastModified = lastModified; + IsHighlight = isHighlight; + IsBookmark = isBookmark; _links = links; } @@ -144,6 +146,10 @@ namespace Timeline.Models.Http /// public DateTime LastModified { get; set; } = default!; + public bool IsHighlight { get; set; } + + public bool IsBookmark { get; set; } + #pragma warning disable CA1707 // Identifiers should not contain underscores /// /// Related links. 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 MapToHttp(TimelineEntity entity, IUrlHelper urlHelper) + public async Task 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> MapToHttp(List entities, IUrlHelper urlHelper) + public async Task> MapToHttp(List entities, IUrlHelper urlHelper, long? userId) { var result = new List(); foreach (var entity in entities) { - result.Add(await MapToHttp(entity, urlHelper)); + result.Add(await MapToHttp(entity, urlHelper, userId)); } return result; } -- cgit v1.2.3