label('ID'), ExportColumn::make('no') ->label('NO') ->state(function ($record) use (&$rowNumber) { // Increment and return the row number return ++$rowNumber; }), ExportColumn::make('block.name') ->label('BLOCK NAME'), ExportColumn::make('plant.code') ->label('PLANT CODE'), ExportColumn::make('name') ->label('SHIFT NAME'), ExportColumn::make('start_time') ->label('START TIME'), ExportColumn::make('duration') ->label('DURATION'), ExportColumn::make('end_time') ->label('END TIME'), ExportColumn::make('created_at') ->label('CREATED AT'), ExportColumn::make('updated_at') ->label('UPDATED AT'), ExportColumn::make('deleted_at') ->label('DELETED AT') ->enabledByDefault(false), ExportColumn::make('status') ->label('STATUS'), ]; } public static function getCompletedNotificationBody(Export $export): string { $body = 'Your shift export has completed and '.number_format($export->successful_rows).' '.str('row')->plural($export->successful_rows).' exported.'; if ($failedRowsCount = $export->getFailedRowsCount()) { $body .= ' '.number_format($failedRowsCount).' '.str('row')->plural($failedRowsCount).' failed to export.'; } return $body; } }