aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Services/TimelineService.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-06-14 01:03:20 +0800
committercrupest <crupest@outlook.com>2020-06-14 01:03:20 +0800
commit7ed5306c62262921264bf9c83e00a4c9f3ae33b1 (patch)
tree96f2c2c2ae927bf68e2e8306f6e4c90aa7508c05 /Timeline/Services/TimelineService.cs
parent4cfb50d40384e5dea1805f8d6fc5ab38cd32d93b (diff)
downloadtimeline-7ed5306c62262921264bf9c83e00a4c9f3ae33b1.tar.gz
timeline-7ed5306c62262921264bf9c83e00a4c9f3ae33b1.tar.bz2
timeline-7ed5306c62262921264bf9c83e00a4c9f3ae33b1.zip
feat(back): Fix #103 .
Diffstat (limited to 'Timeline/Services/TimelineService.cs')
-rw-r--r--Timeline/Services/TimelineService.cs76
1 files changed, 31 insertions, 45 deletions
diff --git a/Timeline/Services/TimelineService.cs b/Timeline/Services/TimelineService.cs
index a473ae66..0b845a57 100644
--- a/Timeline/Services/TimelineService.cs
+++ b/Timeline/Services/TimelineService.cs
@@ -304,6 +304,30 @@ namespace Timeline.Services
}
+ internal static class TimelineServiceHelper
+ {
+ public static async Task<Models.Timeline> MapTimelineFromEntity(IUserService userService, TimelineEntity entity)
+ {
+ var owner = await userService.GetUserById(entity.OwnerId);
+
+ var members = new List<User>();
+ foreach (var memberEntity in entity.Members)
+ {
+ members.Add(await userService.GetUserById(memberEntity.UserId));
+ }
+
+ return new Models.Timeline
+ {
+ UniqueID = entity.UniqueId,
+ Name = entity.Name ?? ("@" + owner.Username),
+ Description = entity.Description ?? "",
+ Owner = owner,
+ Visibility = entity.Visibility,
+ Members = members
+ };
+ }
+ }
+
public abstract class BaseTimelineService : IBaseTimelineService
{
protected BaseTimelineService(ILoggerFactory loggerFactory, DatabaseContext database, IImageValidator imageValidator, IDataManager dataManager, IUserService userService, IClock clock)
@@ -316,7 +340,7 @@ namespace Timeline.Services
UserService = userService;
}
- private ILogger<BaseTimelineService> _logger;
+ private readonly ILogger<BaseTimelineService> _logger;
protected IClock Clock { get; }
@@ -361,26 +385,9 @@ namespace Timeline.Services
var timelineId = await FindTimelineId(name);
- var timelineEntity = await Database.Timelines.Where(t => t.Id == timelineId).SingleAsync();
-
- var timelineMemberEntities = await Database.TimelineMembers.Where(m => m.TimelineId == timelineId).Select(m => new { m.UserId }).ToListAsync();
+ var timelineEntity = await Database.Timelines.Where(t => t.Id == timelineId).Include(t => t.Members).SingleAsync();
- var owner = await UserService.GetUserById(timelineEntity.OwnerId);
-
- var members = new List<User>();
- foreach (var memberEntity in timelineMemberEntities)
- {
- members.Add(await UserService.GetUserById(memberEntity.UserId));
- }
-
- return new Models.Timeline
- {
- Name = GenerateName(name),
- Description = timelineEntity.Description ?? "",
- Owner = owner,
- Visibility = timelineEntity.Visibility,
- Members = members
- };
+ return await TimelineServiceHelper.MapTimelineFromEntity(UserService, timelineEntity);
}
public async Task<List<TimelinePost>> GetPosts(string name)
@@ -945,22 +952,7 @@ namespace Timeline.Services
foreach (var entity in entities)
{
- var owner = await _userService.GetUserById(entity.OwnerId);
- var timeline = new Models.Timeline
- {
- Name = entity.Name ?? ("@" + owner.Username),
- Description = entity.Description ?? "",
- Owner = owner,
- Visibility = entity.Visibility,
- Members = new List<User>()
- };
-
- foreach (var m in entity.Members)
- {
- timeline.Members.Add(await _userService.GetUserById(m.UserId));
- }
-
- result.Add(timeline);
+ result.Add(await TimelineServiceHelper.MapTimelineFromEntity(_userService, entity));
}
return result;
@@ -986,20 +978,14 @@ namespace Timeline.Services
Name = name,
OwnerId = owner,
Visibility = TimelineVisibility.Register,
- CreateTime = _clock.GetCurrentTime()
+ CreateTime = _clock.GetCurrentTime(),
+ Members = new List<TimelineMemberEntity>()
};
_database.Timelines.Add(newEntity);
await _database.SaveChangesAsync();
- return new Models.Timeline
- {
- Name = name,
- Description = "",
- Owner = user,
- Visibility = newEntity.Visibility,
- Members = new List<User>()
- };
+ return await TimelineServiceHelper.MapTimelineFromEntity(_userService, newEntity);
}
public async Task DeleteTimeline(string name)