diff options
author | crupest <crupest@outlook.com> | 2022-04-10 21:51:48 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-04-10 21:51:48 +0800 |
commit | 9c874edbb35c87448ce91c142b127b450879e6b4 (patch) | |
tree | d712704a72fa2647b86e96321c890037603d645b /BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs | |
parent | 9d2056786a38558c2ecba4406e2ba172eb0c5597 (diff) | |
download | timeline-9c874edbb35c87448ce91c142b127b450879e6b4.tar.gz timeline-9c874edbb35c87448ce91c142b127b450879e6b4.tar.bz2 timeline-9c874edbb35c87448ce91c142b127b450879e6b4.zip |
...
Diffstat (limited to 'BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs')
-rw-r--r-- | BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs b/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs index 9dd3c0d7..f047a12d 100644 --- a/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs +++ b/BackEnd/Timeline/Services/Api/TimelineBookmarkService1.cs @@ -69,6 +69,14 @@ namespace Timeline.Services.Api return new TimelineBookmark(user.Username, timeline.Name is null ? "self" : timeline.Name, position.Value); } + public async Task<bool> CanReadBookmarksAsync(long userId, long? visitorId) + { + var visibility = await GetBookmarkVisibilityAsync(userId); + if (visibility == TimelineVisibility.Public) return true; + else if (visibility == TimelineVisibility.Register) return visitorId is not null; + else return userId == visitorId; + } + public async Task DeleteBookmarkAsync(long userId, long timelineId) { var entity = await _databaseContext.BookmarkTimelines.Where(b => b.UserId == userId && b.TimelineId == timelineId).SingleOrDefaultAsync(); @@ -118,6 +126,14 @@ namespace Timeline.Services.Api return new Page<TimelineBookmark>(page, pageSize, totalCount, items); } + public async Task<TimelineVisibility> GetBookmarkVisibilityAsync(long userId) + { + await _userService.CheckUserExistenceAsync(userId); + var configEntity = await _databaseContext.UserConfigurations.Where(c => c.UserId == userId).SingleOrDefaultAsync(); + if (configEntity is null) return TimelineVisibility.Private; + return configEntity.BookmarkVisibility; + } + public async Task<TimelineBookmark> MoveBookmarkAsync(long userId, long timelineId, int position) { var user = await _userService.GetUserAsync(userId); @@ -162,5 +178,26 @@ namespace Timeline.Services.Api return new TimelineBookmark(user.Username, timeline.Name is null ? "self" : timeline.Name, (int)entity.Rank); } + + public async Task SetBookmarkVisibilityAsync(long userId, TimelineVisibility visibility) + { + await _userService.CheckUserExistenceAsync(userId); + var configEntity = await _databaseContext.UserConfigurations.Where(c => c.UserId == userId).SingleOrDefaultAsync(); + if (configEntity is null) + { + configEntity = new UserConfigurationEntity + { + UserId = userId, + BookmarkVisibility = visibility + }; + _databaseContext.UserConfigurations.Add(configEntity); + } + else + { + configEntity.BookmarkVisibility = visibility; + } + + await _databaseContext.SaveChangesAsync(); + } } } |