Fix dcr retrieval

main
ilitirit 1 year ago
parent 42edd4a35a
commit 22bb30af18

@ -62,35 +62,15 @@ public class ExpedienceRepository : IExpedienceRepository
if (topXResults.Count == 0) return new List<TopXCompletionResultDto>(); if (topXResults.Count == 0) return new List<TopXCompletionResultDto>();
var uploadId = topXResults.First().Id; var topXIds = topXResults.Select(r => r.Id).ToList();
var userIds = topXResults.Select(r => r.UserId).Distinct().ToList(); var userIds = topXResults.Select(r => r.UserId).Distinct().ToList();
var dutyCompletionResult = await _dbContext.DutyCompletionResults var dutyCompletionResults = await _dbContext.DutyCompletionResults
.FirstAsync(dcr => dcr.Id == uploadId); .Where(dcr => topXIds.Contains(dcr.Id))
.ToListAsync();
var dcrDto = new DutyCompletionResultDto
{
Id = uploadId,
UserId = dutyCompletionResult.UserId,
TerritoryId = dutyCompletionResult.TerritoryId,
HasEcho = dutyCompletionResult.HasEcho,
IsUnrestricted = dutyCompletionResult.IsUnrestricted,
IsMinILevel = dutyCompletionResult.IsMinILevel,
HasNpcMembers = dutyCompletionResult.HasNpcMembers,
StartTime = dutyCompletionResult.StartTime,
EndTime = dutyCompletionResult.EndTime,
Hours = dutyCompletionResult.Hours,
Minutes = dutyCompletionResult.Minutes,
Seconds = dutyCompletionResult.Seconds,
Milliseconds = dutyCompletionResult.Milliseconds,
GameVersion = dutyCompletionResult.GameVersion,
PluginVersion = dutyCompletionResult.PluginVersion,
Lang = dutyCompletionResult.Lang,
DataCenter = dutyCompletionResult.DataCenter,
UploadedAt = dutyCompletionResult.UploadedAt
};
var dutyMembers = await _dbContext.DutyMembers var dutyMembers = await _dbContext.DutyMembers
.Where(dm => dm.UploadId == uploadId) .Where(dm => topXIds.Contains(dm.UploadId))
.ToListAsync(); .ToListAsync();
var users = await _dbContext.Users var users = await _dbContext.Users
@ -109,13 +89,34 @@ public class ExpedienceRepository : IExpedienceRepository
ContentType = territory.ContentType, ContentType = territory.ContentType,
Expac = territory.Expac Expac = territory.Expac
}; };
var resultDtos = topXResults.Select(result => new TopXCompletionResultDto var resultDtos = topXResults.Select(result => new TopXCompletionResultDto
{ {
Rank = result.Rank, Rank = result.Rank,
Duration = result.Duration, Duration = result.Duration,
DutyCompletionResult = dcrDto, DutyCompletionResult = dutyCompletionResults
.Where(dcr => dcr.Id == result.Id)
.Select(dcr => new DutyCompletionResultDto
{
Id = dcr.Id,
UserId = dcr.UserId,
TerritoryId = dcr.TerritoryId,
HasEcho = dcr.HasEcho,
IsUnrestricted = dcr.IsUnrestricted,
IsMinILevel = dcr.IsMinILevel,
HasNpcMembers = dcr.HasNpcMembers,
StartTime = dcr.StartTime,
EndTime = dcr.EndTime,
Hours = dcr.Hours,
Minutes = dcr.Minutes,
Seconds = dcr.Seconds,
Milliseconds = dcr.Milliseconds,
GameVersion = dcr.GameVersion,
PluginVersion = dcr.PluginVersion,
Lang = dcr.Lang,
DataCenter = dcr.DataCenter,
UploadedAt = dcr.UploadedAt
}).First(),
DutyMembers = dutyMembers DutyMembers = dutyMembers
.Where(dm => dm.UploadId == result.Id) .Where(dm => dm.UploadId == result.Id)
.Select(dm => new DutyMemberDto .Select(dm => new DutyMemberDto
@ -127,8 +128,6 @@ public class ExpedienceRepository : IExpedienceRepository
ClassJob = dm.ClassJob, ClassJob = dm.ClassJob,
IsNpc = dm.IsNpc IsNpc = dm.IsNpc
}).ToList(), }).ToList(),
Territory = territoryDto
,
User = users User = users
.Where(u => u.UserId == result.UserId) .Where(u => u.UserId == result.UserId)
.Select(u => new UserDto .Select(u => new UserDto
@ -136,7 +135,8 @@ public class ExpedienceRepository : IExpedienceRepository
UserId = u.UserId, UserId = u.UserId,
UserName = u.UserName, UserName = u.UserName,
WorldId = u.WorldId WorldId = u.WorldId
}).FirstOrDefault() }).FirstOrDefault(),
Territory = territoryDto
}).ToList(); }).ToList();

Loading…
Cancel
Save