From aaee3326e4ee785f46b857c82fa9d8b68057cfa4 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Fri, 8 Jun 2018 14:29:33 -0500 Subject: [PATCH] fix null updated date --- .../FilterList/FilterListService.cs | 47 ++++++++++--------- .../FilterList/ListDetailsDto.cs | 2 +- .../FilterList/ListSummaryDto.cs | 2 +- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/FilterLists.Services/FilterList/FilterListService.cs b/src/FilterLists.Services/FilterList/FilterListService.cs index c8cc06125..cbb11dc29 100644 --- a/src/FilterLists.Services/FilterList/FilterListService.cs +++ b/src/FilterLists.Services/FilterList/FilterListService.cs @@ -21,15 +21,19 @@ public async Task> GetAllSummariesAsync() { var summaries = await GetSummaryDtos(); var latestUpdatedSnapshots = await GetLatestUpdatedSnapshots(); - return summaries.Join(latestUpdatedSnapshots, summary => summary.Id, snap => snap.FilterListId, - (summary, snap) => new ListSummaryDto + return summaries.GroupJoin(latestUpdatedSnapshots, summary => summary.Id, snap => snap.FilterListId, + (summary, snap) => { - Id = summary.Id, - AddedDate = summary.AddedDate, - Languages = summary.Languages, - Name = summary.Name, - UpdatedDate = snap.CreatedDateUtc, - ViewUrl = summary.ViewUrl + var snaps = snap as Data.Entities.Snapshot[] ?? snap.ToArray(); + return new ListSummaryDto + { + Id = summary.Id, + AddedDate = summary.AddedDate, + Languages = summary.Languages, + Name = summary.Name, + UpdatedDate = snaps.Any() ? snaps.Single().CreatedDateUtc : (DateTime?) null, + ViewUrl = summary.ViewUrl + }; }); } @@ -65,24 +69,21 @@ public async Task GetDetailsAsync(int id) private async Task GetActiveRuleCount(ListDetailsDto details) { - return await DbContext.Snapshots.AsNoTracking() - .Where(s => s.FilterListId == details.Id && s.IsCompleted) - .SelectMany(sr => sr.AddedSnapshotRules) - .CountAsync() - - await DbContext.Snapshots.AsNoTracking() - .Where(s => s.FilterListId == details.Id && s.IsCompleted) - .SelectMany(sr => sr.RemovedSnapshotRules) - .CountAsync(); + var listSnapshots = DbContext.Snapshots.AsNoTracking() + .Where(s => s.FilterListId == details.Id && s.IsCompleted); + return await listSnapshots.SelectMany(sr => sr.AddedSnapshotRules).CountAsync() - + await listSnapshots.SelectMany(sr => sr.RemovedSnapshotRules).CountAsync(); } - private async Task GetUpdatedDate(ListDetailsDto details) + private async Task GetUpdatedDate(ListDetailsDto details) { - return await DbContext.Snapshots.AsNoTracking() - .Where(s => s.FilterListId == details.Id && s.IsCompleted && - (s.AddedSnapshotRules.Count > 0 || s.RemovedSnapshotRules.Count > 0)) - .Select(s => s.CreatedDateUtc) - .OrderByDescending(s => s.Date) - .FirstAsync(); + var snapshotDates = DbContext.Snapshots.AsNoTracking() + .Where(s => s.FilterListId == details.Id && s.IsCompleted && + (s.AddedSnapshotRules.Count > 0 || + s.RemovedSnapshotRules.Count > 0)) + .Select(s => s.CreatedDateUtc) + .OrderByDescending(s => s.Date); + return snapshotDates.Any() ? (DateTime?) await snapshotDates.FirstAsync() : null; } } } \ No newline at end of file diff --git a/src/FilterLists.Services/FilterList/ListDetailsDto.cs b/src/FilterLists.Services/FilterList/ListDetailsDto.cs index 1987bbd05..8035892a1 100644 --- a/src/FilterLists.Services/FilterList/ListDetailsDto.cs +++ b/src/FilterLists.Services/FilterList/ListDetailsDto.cs @@ -27,7 +27,7 @@ public class ListDetailsDto public int RuleCount { get; set; } public string SubmissionUrl { get; set; } public ListSyntaxDto Syntax { get; set; } - public DateTime UpdatedDate { get; set; } + public DateTime? UpdatedDate { get; set; } public string ViewUrl { get; set; } } } \ No newline at end of file diff --git a/src/FilterLists.Services/FilterList/ListSummaryDto.cs b/src/FilterLists.Services/FilterList/ListSummaryDto.cs index b8cab3dc1..c62678743 100644 --- a/src/FilterLists.Services/FilterList/ListSummaryDto.cs +++ b/src/FilterLists.Services/FilterList/ListSummaryDto.cs @@ -11,7 +11,7 @@ public class ListSummaryDto public DateTime AddedDate { get; set; } public IEnumerable Languages { get; set; } public string Name { get; set; } - public DateTime UpdatedDate { get; set; } + public DateTime? UpdatedDate { get; set; } public string ViewUrl { get; set; } } } \ No newline at end of file