From 2f4a6f26ad2581b974cddccc3f33d768bef441a9 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Mon, 28 Oct 2024 17:35:34 +1100 Subject: Began fixing fetch update-merge logic --- BartService.cs | 36 ++++++++---------------------------- 1 file 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() - .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 availabilityRecords = new(); foreach(var entry in responseData.GetUserAvailabilityListResult.List) { -- cgit v1.3