Editable Submissions (#49)

* Editable Submissions

* refactor some code

* Update composer.lock

Co-authored-by: JhumanJ <julien@nahum.net>
This commit is contained in:
Chirag
2023-01-10 19:22:14 +05:30
committed by GitHub
parent 997a86f734
commit 0a33581c0a
390 changed files with 2616 additions and 1153 deletions

View File

@@ -7,11 +7,13 @@ use App\Http\Requests\AnswerFormRequest;
use App\Http\Resources\FormResource;
use App\Jobs\Form\StoreFormSubmissionJob;
use App\Models\Forms\Form;
use App\Models\Forms\FormSubmission;
use App\Service\Forms\FormCleaner;
use App\Service\WorkspaceHelper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Auth;
use Vinkla\Hashids\Facades\Hashids;
class PublicFormController extends Controller
{
@@ -77,10 +79,19 @@ class PublicFormController extends Controller
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());
}
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
@@ -88,4 +99,26 @@ class PublicFormController extends Controller
'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 : []]);
}
}