aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BartService.cs36
1 files changed, 8 insertions, 28 deletions
diff --git a/BartService.cs b/BartService.cs
index c872053..9966a7e 100644
--- a/BartService.cs
+++ b/BartService.cs
@@ -32,7 +32,6 @@ namespace PagerParser.Bart {
public string MemberName { get; set; }
}
- [Index(nameof(Hashcode))]
public record BartAvailabilityRecord {
[JsonIgnore]
[Key]
@@ -47,33 +46,6 @@ namespace PagerParser.Bart {
public BartMember? ModifiedBy { get; set; }
public DateTime? CreatedOn { get; set; }
public BartMember? CreatedBy { get; set; }
-
- public Guid Hashcode {
- get {
- int?[] hashes = [
- Timestamp.GetHashCode(),
- Member.BartMemberId.GetHashCode(),
- Status.GetHashCode(),
- IsDefault.GetHashCode(),
- ModifiedOn.GetHashCode(),
- ModifiedBy?.BartMemberId.GetHashCode(),
- CreatedOn.GetHashCode(),
- CreatedBy?.BartMemberId.GetHashCode()
- ];
-
- var bytes = hashes
- .Where(x => x is not null)
- .Cast<int>()
- .SelectMany(BitConverter.GetBytes)
- .ToArray();
-
- using var md5 = MD5.Create();
-
- return new Guid(md5.ComputeHash(bytes));
- }
-
- set => _ = value;
- }
}
public class BartService : IHostedService {
@@ -174,6 +146,14 @@ namespace PagerParser.Bart {
return;
}
+ var existingRecords = db.BartAvailabilityRecords
+ .Include(r => r.Member)
+ .IntersectBy(users.Select(u => u.BartMemberId), r => r.Member.BartMemberId)
+ .OrderByDescending(r => r.Timestamp)
+ .GroupBy(r => r.Timestamp)
+ .Select(g => g.First())
+ .ToArray();
+
LinkedList<BartAvailabilityRecord> availabilityRecords = new();
foreach(var entry in responseData.GetUserAvailabilityListResult.List) {