Fix: Export all pages when exporting a csv
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
b3354e1474
commit
b1581bf9c8
|
@ -43,7 +43,7 @@ class ExportAction
|
|||
|
||||
public function asController(ActionRequest $request): StreamedResponse
|
||||
{
|
||||
$members = FilterScope::fromRequest($request->input('filter'))->getQuery()->get();
|
||||
$members = FilterScope::fromRequest($request->input('filter'))->withOptions(['hitsPerPage' => 20000])->getQuery()->get();
|
||||
$contents = $this->handle($members);
|
||||
|
||||
Storage::disk('temp')->put('mitglieder.csv', $contents);
|
||||
|
|
|
@ -20,6 +20,12 @@ use Spatie\LaravelData\Mappers\SnakeCaseMapper;
|
|||
#[MapOutputName(SnakeCaseMapper::class)]
|
||||
class FilterScope extends ScoutFilter
|
||||
{
|
||||
|
||||
/**
|
||||
* @var array<string, mixed>
|
||||
*/
|
||||
public array $options = [];
|
||||
|
||||
/**
|
||||
* @param array<int, int> $activityIds
|
||||
* @param array<int, int> $subactivityIds
|
||||
|
@ -43,6 +49,16 @@ class FilterScope extends ScoutFilter
|
|||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $options
|
||||
*/
|
||||
public function withOptions(array $options): self
|
||||
{
|
||||
$this->options = $options;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getQuery(): Builder
|
||||
{
|
||||
$this->search = $this->search ?: '';
|
||||
|
@ -97,7 +113,7 @@ class FilterScope extends ScoutFilter
|
|||
$options['filter'] = $this->implode(collect([$andFilter])->push($this->inExpression('id', $this->include)), 'OR');
|
||||
$options['sort'] = ['lastname:asc', 'firstname:asc'];
|
||||
|
||||
return $engine->search($query, $options);
|
||||
return $engine->search($query, [...$this->options, ...$options]);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,19 @@ class ExportCsvActionTest extends EndToEndTestCase
|
|||
$this->assertFalse(str_contains($contents, 'Max'));
|
||||
}
|
||||
|
||||
public function testItExportsAllMembers(): void
|
||||
{
|
||||
Storage::fake('temp');
|
||||
|
||||
$this->withoutExceptionHandling()->login()->loginNami();
|
||||
Member::factory()->defaults()->count(40)->create();
|
||||
|
||||
sleep(1);
|
||||
$this->callFilter('member-export', [])->assertDownload('mitglieder.csv');
|
||||
$contents = Storage::disk('temp')->get('mitglieder.csv');
|
||||
$this->assertCount(42, explode("\n", $contents));
|
||||
}
|
||||
|
||||
public function testItOrdersByLastname(): void
|
||||
{
|
||||
Storage::fake('temp');
|
||||
|
|
Loading…
Reference in New Issue