using LibraryApp.Domain.Entities; namespace LibraryApp.Domain; public class BookCountReport { public ShelfId ShelfId { get; } public DateTime CountedAt { get; } public IReadOnlyList MissingInstances { get; } public int TotalExpected { get; } public int TotalFound { get; } public BookCountReport( ShelfId shelfId, DateTime countedAt, IReadOnlyList allInstancesOnShelf, IReadOnlyList scannedBarcodes) { ShelfId = shelfId; CountedAt = countedAt; TotalExpected = allInstancesOnShelf.Count; var scannedSet = scannedBarcodes.Select(b => b.Barcode).ToHashSet(); MissingInstances = allInstancesOnShelf .Where(i => !scannedSet.Contains(i.Barcode.Barcode)) .ToList(); TotalFound = TotalExpected - MissingInstances.Count; } }