From d6930d0dc2fadc77b3a9bd86773077f9f3edca75 Mon Sep 17 00:00:00 2001 From: Chirag Chhatrala <60499540+chiragchhatrala@users.noreply.github.com> Date: Sun, 19 Feb 2023 17:41:50 +0530 Subject: [PATCH] Form visibility closed (#91) --- app/Http/Controllers/Forms/PublicFormController.php | 2 +- app/Models/Forms/Form.php | 2 +- .../js/components/open/forms/OpenCompleteForm.vue | 4 ++-- .../form-components/FormAboutSubmission.vue | 2 +- .../components/form-components/FormInformation.vue | 4 ++++ resources/js/pages/forms/show/index.vue | 1 + tests/Feature/Forms/AnswerFormTest.php | 12 ++++++++++++ 7 files changed, 22 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Forms/PublicFormController.php b/app/Http/Controllers/Forms/PublicFormController.php index 0b86468..69f7e67 100644 --- a/app/Http/Controllers/Forms/PublicFormController.php +++ b/app/Http/Controllers/Forms/PublicFormController.php @@ -23,7 +23,7 @@ class PublicFormController extends Controller public function show(Request $request, string $slug) { - $form = Form::whereSlug($slug)->whereVisibility('public')->firstOrFail(); + $form = Form::whereSlug($slug)->whereIn('visibility', ['public', 'closed'])->firstOrFail(); if ($form->workspace == null) { // Workspace deleted return $this->error([ diff --git a/app/Models/Forms/Form.php b/app/Models/Forms/Form.php index 22d546b..f2f915e 100644 --- a/app/Models/Forms/Form.php +++ b/app/Models/Forms/Form.php @@ -20,7 +20,7 @@ class Form extends Model const DARK_MODE_VALUES = ['auto', 'light', 'dark']; const THEMES = ['default', 'simple', 'notion']; const WIDTHS = ['centered', 'full']; - const VISIBILITY = ['public', 'draft']; + const VISIBILITY = ['public', 'draft', 'closed']; use HasFactory, HasSlug, SoftDeletes; diff --git a/resources/js/components/open/forms/OpenCompleteForm.vue b/resources/js/components/open/forms/OpenCompleteForm.vue index c07de3e..e308242 100644 --- a/resources/js/components/open/forms/OpenCompleteForm.vue +++ b/resources/js/components/open/forms/OpenCompleteForm.vue @@ -33,7 +33,7 @@ -
@@ -68,7 +68,7 @@
- 0 ? 's' : '' }}
  • Draft (not public)
  • +
  • Closed
  • Edited {{ form.last_edited_human }}
  • diff --git a/tests/Feature/Forms/AnswerFormTest.php b/tests/Feature/Forms/AnswerFormTest.php index 8d6d98b..c8a2cf6 100644 --- a/tests/Feature/Forms/AnswerFormTest.php +++ b/tests/Feature/Forms/AnswerFormTest.php @@ -85,6 +85,18 @@ it('can not submit draft form', function () { ->assertStatus(403); }); +it('can not submit visibility closed form', function () { + $user = $this->actingAsUser(); + $workspace = $this->createUserWorkspace($user); + $form = $this->createForm($user, $workspace, [ + 'visibility' => 'closed' + ]); + $formData = FormSubmissionDataFactory::generateSubmissionData($form); + + $this->postJson(route('forms.answer', $form->slug), $formData) + ->assertStatus(403); +}); + it('can not submit form with past dates', function () { $user = $this->actingAsUser(); $workspace = $this->createUserWorkspace($user);