using LibraryApp.Domain; using LibraryApp.Domain.Entities; namespace LibraryApp.Domain.Services; public class BookCountService { private readonly IBookCountReportPrinter _printer; public BookCountService(IBookCountReportPrinter printer) { _printer = printer; } public async Task> PerformCountAsync( Shelf shelf, IReadOnlyList scannedBarcodes, IReadOnlyList allInstancesOnShelf) { shelf.RecordCount(); var report = new BookCountReport(shelf.Id, DateTime.UtcNow, allInstancesOnShelf, scannedBarcodes); foreach (var instance in report.MissingInstances) instance.MarkAsLost(); await _printer.PrintAsync(report); return Result.Success(report); } }