From 4538aa0be40316a967d6fbcbc08bc9670b9bbcf0 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 13 Feb 2021 15:46:02 +0800 Subject: feat: Add timeline manageable. --- BackEnd/Timeline/Models/Http/HttpTimeline.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'BackEnd/Timeline/Models/Http/HttpTimeline.cs') diff --git a/BackEnd/Timeline/Models/Http/HttpTimeline.cs b/BackEnd/Timeline/Models/Http/HttpTimeline.cs index 87ebf0bb..8a865f96 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, 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, HttpTimelineLinks links) { UniqueId = uniqueId; Title = title; @@ -25,6 +25,7 @@ namespace Timeline.Models.Http LastModified = lastModified; IsHighlight = isHighlight; IsBookmark = isBookmark; + Manageable = manageable; _links = links; } @@ -78,6 +79,7 @@ namespace Timeline.Models.Http public bool IsHighlight { get; set; } public bool IsBookmark { get; set; } + public bool Manageable { get; set; } #pragma warning disable CA1707 // Identifiers should not contain underscores /// -- cgit v1.2.3 From fd5f842e807ecf0d3a4c385fd0e5e3a52b0a79b2 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/Timeline/Models/Http/HttpTimeline.cs') 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