Edit submissions file issue (#373)
* Edit submissions file issue fixed * handleCompValChange with loader --------- Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Forms;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\AnswerFormRequest;
|
||||
use App\Http\Resources\FormResource;
|
||||
use App\Http\Resources\FormSubmissionResource;
|
||||
use App\Jobs\Form\StoreFormSubmissionJob;
|
||||
use App\Models\Forms\Form;
|
||||
use App\Models\Forms\FormSubmission;
|
||||
@@ -36,13 +37,13 @@ class PublicFormController extends Controller
|
||||
// Disable pro features if needed
|
||||
$form->fill(
|
||||
$formCleaner
|
||||
->processForm($request, $form)
|
||||
->performCleaning($form->workspace)
|
||||
->getData()
|
||||
->processForm($request, $form)
|
||||
->performCleaning($form->workspace)
|
||||
->getData()
|
||||
);
|
||||
|
||||
// Increase form view counter if not login
|
||||
if (! Auth::check()) {
|
||||
if (!Auth::check()) {
|
||||
$form->views()->create();
|
||||
}
|
||||
|
||||
@@ -54,7 +55,7 @@ class PublicFormController extends Controller
|
||||
{
|
||||
// Check that form has user field
|
||||
$form = $request->form;
|
||||
if (! $form->has_user_field) {
|
||||
if (!$form->has_user_field) {
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -66,8 +67,8 @@ class PublicFormController extends Controller
|
||||
|
||||
public function showAsset($assetFileName)
|
||||
{
|
||||
$path = FormController::ASSETS_UPLOAD_PATH.'/'.$assetFileName;
|
||||
if (! Storage::exists($path)) {
|
||||
$path = FormController::ASSETS_UPLOAD_PATH . '/' . $assetFileName;
|
||||
if (!Storage::exists($path)) {
|
||||
return $this->error([
|
||||
'message' => 'File not found.',
|
||||
'file_name' => $assetFileName,
|
||||
@@ -106,13 +107,14 @@ class PublicFormController extends Controller
|
||||
$submissionId = ($submissionId) ? Hashids::decode($submissionId) : false;
|
||||
$submissionId = isset($submissionId[0]) ? $submissionId[0] : false;
|
||||
$form = Form::whereSlug($slug)->whereVisibility('public')->firstOrFail();
|
||||
if ($form->workspace == null || ! $form->editable_submissions || ! $submissionId) {
|
||||
if ($form->workspace == null || !$form->editable_submissions || !$submissionId) {
|
||||
return $this->error([
|
||||
'message' => 'Not allowed.',
|
||||
]);
|
||||
}
|
||||
|
||||
$submission = FormSubmission::findOrFail($submissionId);
|
||||
$submission = new FormSubmissionResource(FormSubmission::findOrFail($submissionId));
|
||||
$submission->publiclyAccessed();
|
||||
|
||||
if ($submission->form_id != $form->id) {
|
||||
return $this->error([
|
||||
@@ -120,6 +122,6 @@ class PublicFormController extends Controller
|
||||
], 403);
|
||||
}
|
||||
|
||||
return $this->success(['data' => ($submission) ? $submission->data : []]);
|
||||
return $this->success($submission->toArray($request));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class FormSubmissionResource extends JsonResource
|
||||
{
|
||||
public bool $publiclyAccessed = false;
|
||||
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
@@ -15,13 +17,23 @@ class FormSubmissionResource extends JsonResource
|
||||
public function toArray($request)
|
||||
{
|
||||
$this->generateFileLinks();
|
||||
$this->addExtraData();
|
||||
|
||||
return [
|
||||
'data' => $this->data,
|
||||
if (!$this->publiclyAccessed) {
|
||||
$this->addExtraData();
|
||||
}
|
||||
|
||||
return array_merge([
|
||||
'data' => $this->data
|
||||
], ($this->publiclyAccessed) ? [] : [
|
||||
'form_id' => $this->form_id,
|
||||
'id' => $this->id,
|
||||
];
|
||||
'id' => $this->id
|
||||
]);
|
||||
}
|
||||
|
||||
public function publiclyAccessed($publiclyAccessed = true)
|
||||
{
|
||||
$this->publiclyAccessed = $publiclyAccessed;
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function addExtraData()
|
||||
@@ -45,7 +57,7 @@ class FormSubmissionResource extends JsonResource
|
||||
return in_array($field['type'], ['files', 'signature']);
|
||||
});
|
||||
foreach ($fileFields as $field) {
|
||||
if (isset($data[$field['id']]) && ! empty($data[$field['id']])) {
|
||||
if (isset($data[$field['id']]) && !empty($data[$field['id']])) {
|
||||
$data[$field['id']] = collect($data[$field['id']])->filter(function ($file) {
|
||||
return $file !== null && $file;
|
||||
})->map(function ($file) {
|
||||
|
||||
Reference in New Issue
Block a user