diff options
Diffstat (limited to 'BartService.cs')
| -rw-r--r-- | BartService.cs | 36 |
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) { |
