Enhance Form Submission Export Functionality (#657)

* Enhance Form Submission Export Functionality

* Validate new param 'columns'

* Form submission export request as seprate class with validation

* Test case for export

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
Chirag Chhatrala
2025-01-07 19:34:02 +05:30
committed by GitHub
parent b0311257ac
commit cc62f614e4
5 changed files with 164 additions and 14 deletions

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Http\Requests;
use App\Models\Forms\Form;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;
class FormSubmissionExportRequest extends FormRequest
{
public Form $form;
public function __construct(Request $request)
{
$this->form = Form::findOrFail($request->route('id'));
}
public function rules()
{
$validColumns = collect(array_merge(
$this->form->properties,
$this->form->removed_properties ?? []
))->pluck('id')->toArray();
$validColumns[] = 'created_at';
return [
'columns' => 'required|array',
'columns.*' => ['boolean', 'required'],
'columns' => [function ($attribute, $value, $fail) use ($validColumns) {
$submittedColumns = array_keys($value);
$invalidColumns = array_diff($submittedColumns, $validColumns);
if (!empty($invalidColumns)) {
$fail('The columns contain invalid values: ' . implode(', ', $invalidColumns));
}
}],
];
}
}