whereVisibility('public')->firstOrFail(); if ($form->workspace == null) { // Workspace deleted return $this->error([ 'message' => 'Form not found.' ], 404); } $formCleaner = new FormCleaner(); // Disable pro features if needed $form->fill($formCleaner ->processForm($request, $form) ->performCleaning($form->workspace) ->getData() ); // Increase form view counter if not login if(!Auth::check()){ $form->views()->create(); } $formResource = new FormResource($form); $formResource->setCleanings($formCleaner->getPerformedCleanings()); return $formResource; } public function listUsers(Request $request) { // Check that form has user field $form = $request->form; if (!$form->has_user_field) { return []; } // Use serializer $workspace = $form->workspace; return (new WorkspaceHelper($workspace))->getAllUsers(); } public function showAsset($assetFileName) { $path = FormController::ASSETS_UPLOAD_PATH.'/'.$assetFileName; if (!Storage::disk('s3')->exists($path)) { return $this->error([ 'message' => 'File not found.', 'file_name' => $assetFileName ]); } return redirect()->to(Storage::disk('s3')->temporaryUrl($path, now()->addMinutes(5))); } public function answer(AnswerFormRequest $request) { $form = $request->form; $submissionId = false; if ($form->editable_submissions) { $job = new StoreFormSubmissionJob($form, $request->validated()); $job->handle(); $submissionId = Hashids::encode($job->getSubmissionId()); }else{ StoreFormSubmissionJob::dispatch($form, $request->validated()); } return $this->success(array_merge([ 'message' => 'Form submission saved.', 'submission_id' => $submissionId ], $request->form->is_pro && $request->form->redirect_url ? [ 'redirect' => true, 'redirect_url' => $request->form->redirect_url ] : [ 'redirect' => false ])); } public function fetchSubmission(Request $request, string $slug, string $submissionId) { $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) { return $this->error([ 'message' => 'Not allowed.', ]); } $submission = FormSubmission::findOrFail($submissionId); if ($submission->form_id != $form->id) { return $this->error([ 'message' => 'Not allowed.', ], 403); } return $this->success(['data' => ($submission) ? $submission->data : []]); } }