diff --git a/app/Services/BulkOperationService.php b/app/Services/BulkOperationService.php index b85193a..6530c55 100644 --- a/app/Services/BulkOperationService.php +++ b/app/Services/BulkOperationService.php @@ -45,6 +45,8 @@ public function createRun( array $itemIds, int $totalItems ): BulkOperationRun { + $effectiveTotalItems = max($totalItems, count($itemIds)); + $run = BulkOperationRun::create([ 'tenant_id' => $tenant->id, 'user_id' => $user->id, @@ -52,7 +54,7 @@ public function createRun( 'action' => $action, 'status' => 'pending', 'item_ids' => $itemIds, - 'total_items' => $totalItems, + 'total_items' => $effectiveTotalItems, 'processed_items' => 0, 'succeeded' => 0, 'failed' => 0, @@ -66,7 +68,7 @@ public function createRun( context: [ 'metadata' => [ 'bulk_run_id' => $run->id, - 'total_items' => $totalItems, + 'total_items' => $effectiveTotalItems, ], ], actorId: $user->id, @@ -139,6 +141,14 @@ public function complete(BulkOperationRun $run): void { $run->refresh(); + if ($run->processed_items > $run->total_items) { + BulkOperationRun::query() + ->whereKey($run->id) + ->update(['total_items' => $run->processed_items]); + + $run->refresh(); + } + if (! in_array($run->status, ['pending', 'running'], true)) { return; } diff --git a/resources/views/livewire/bulk-operation-progress.blade.php b/resources/views/livewire/bulk-operation-progress.blade.php index faf75fb..864d872 100644 --- a/resources/views/livewire/bulk-operation-progress.blade.php +++ b/resources/views/livewire/bulk-operation-progress.blade.php @@ -3,6 +3,8 @@ @if($runs->isNotEmpty())