31 lines
906 B
C#
31 lines
906 B
C#
using LibraryApp.Domain.Entities;
|
|
|
|
namespace LibraryApp.Domain;
|
|
|
|
public class BookCountReport
|
|
{
|
|
public ShelfId ShelfId { get; }
|
|
public DateTime CountedAt { get; }
|
|
public IReadOnlyList<BookInstance> MissingInstances { get; }
|
|
public int TotalExpected { get; }
|
|
public int TotalFound { get; }
|
|
|
|
public BookCountReport(
|
|
ShelfId shelfId,
|
|
DateTime countedAt,
|
|
IReadOnlyList<BookInstance> allInstancesOnShelf,
|
|
IReadOnlyList<BookInstanceBarcode> 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;
|
|
}
|
|
}
|