From 2d9ca08366d91c22877cee143f43a062d4efda2d Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 13 Feb 2021 15:57:29 +0800 Subject: feat: Timeline add postable. --- BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs | 4 +++- BackEnd/Timeline/Models/Http/HttpTimeline.cs | 4 +++- BackEnd/Timeline/Models/Mapper/TimelineMapper.cs | 11 +++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) (limited to 'BackEnd') diff --git a/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs b/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs index be00b595..e2ce8875 100644 --- a/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs +++ b/BackEnd/Timeline.Tests/IntegratedTests/TimelineTest.cs @@ -416,18 +416,20 @@ namespace Timeline.Tests.IntegratedTests [Theory] [MemberData(nameof(TimelineNameGeneratorTestData))] - public async Task Get_Manageable(TimelineNameGenerator generator) + public async Task Get_Manageable_Postable(TimelineNameGenerator generator) { { using var client = await CreateClientAsUser(); var timeline = await client.TestGetAsync($"timelines/{generator(1)}"); timeline.Manageable.Should().Be(true); + timeline.Postable.Should().Be(true); } { using var client = await CreateClientAs(2); var timeline = await client.TestGetAsync($"timelines/{generator(1)}"); timeline.Manageable.Should().Be(false); + timeline.Postable.Should().Be(false); } } } diff --git a/BackEnd/Timeline/Models/Http/HttpTimeline.cs b/BackEnd/Timeline/Models/Http/HttpTimeline.cs index 8a865f96..e3e46bd5 100644 --- a/BackEnd/Timeline/Models/Http/HttpTimeline.cs +++ b/BackEnd/Timeline/Models/Http/HttpTimeline.cs @@ -10,7 +10,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, string? color, DateTime createTime, DateTime lastModified, bool isHighlight, bool isBookmark, bool manageable, HttpTimelineLinks links) + public HttpTimeline(string uniqueId, string title, string name, DateTime nameLastModifed, string description, HttpUser owner, TimelineVisibility visibility, List members, string? color, DateTime createTime, DateTime lastModified, bool isHighlight, bool isBookmark, bool manageable, bool postable, HttpTimelineLinks links) { UniqueId = uniqueId; Title = title; @@ -26,6 +26,7 @@ namespace Timeline.Models.Http IsHighlight = isHighlight; IsBookmark = isBookmark; Manageable = manageable; + Postable = postable; _links = links; } @@ -80,6 +81,7 @@ namespace Timeline.Models.Http public bool IsBookmark { get; set; } public bool Manageable { get; set; } + public bool Postable { get; set; } #pragma warning disable CA1707 // Identifiers should not contain underscores /// diff --git a/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs b/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs index 8dfd7b8d..e4304311 100644 --- a/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs +++ b/BackEnd/Timeline/Models/Mapper/TimelineMapper.cs @@ -51,6 +51,16 @@ namespace Timeline.Models.Mapper manageable = await _timelineService.HasManagePermission(entity.Id, userId.Value); } + bool postable; + if (userId is null) + { + postable = false; + } + else + { + postable = await _timelineService.IsMemberOf(entity.Id, userId.Value); + } + return new HttpTimeline( uniqueId: entity.UniqueId, title: string.IsNullOrEmpty(entity.Title) ? timelineName : entity.Title, @@ -66,6 +76,7 @@ namespace Timeline.Models.Mapper isHighlight: await _highlightTimelineService.IsHighlightTimeline(entity.Id), isBookmark: userId is not null && await _bookmarkTimelineService.IsBookmark(userId.Value, entity.Id, false, false), manageable: manageable, + postable: postable, links: new HttpTimelineLinks( self: urlHelper.ActionLink(nameof(TimelineController.TimelineGet), nameof(TimelineController)[0..^nameof(Controller).Length], new { timeline = timelineName }), posts: urlHelper.ActionLink(nameof(TimelinePostController.List), nameof(TimelinePostController)[0..^nameof(Controller).Length], new { timeline = timelineName }) -- cgit v1.2.3