Selaa lähdekoodia

removing deleting after submit of form

Medowar 1 kuukausi sitten
vanhempi
sitoutus
b3808ca7c6
2 muutettua tiedostoa jossa 38 lisäystä ja 4 poistoa
  1. 18 2
      api/reset.php
  2. 20 2
      assets/js/form.js

+ 18 - 2
api/reset.php

@@ -46,8 +46,13 @@ try {
         $hadSubmission = $submission !== null;
 
         if ($hadSubmission) {
-            $submissionKey = (string) ($submission['application_key'] ?? $store->emailKey($email));
-            $store->deleteSubmissionByKey($submissionKey);
+            return [
+                'ok' => false,
+                'status' => 409,
+                'message' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor. Ein Zurücksetzen ist nicht möglich.',
+                'had_draft' => $hadDraft,
+                'had_submission' => true,
+            ];
         }
 
         $store->deleteDraft($email);
@@ -56,6 +61,8 @@ try {
         FileSystem::removeTree($uploadDir);
 
         return [
+            'ok' => true,
+            'status' => 200,
             'had_draft' => $hadDraft,
             'had_submission' => $hadSubmission,
         ];
@@ -65,6 +72,15 @@ try {
     Bootstrap::jsonResponse(['ok' => false, 'message' => 'Daten konnten nicht gelöscht werden.'], 500);
 }
 
+if (($result['ok'] ?? false) !== true) {
+    Bootstrap::jsonResponse([
+        'ok' => false,
+        'message' => (string) ($result['message'] ?? 'Daten konnten nicht gelöscht werden.'),
+        'had_draft' => (bool) ($result['had_draft'] ?? false),
+        'had_submission' => (bool) ($result['had_submission'] ?? false),
+    ], (int) ($result['status'] ?? 422));
+}
+
 Bootstrap::jsonResponse([
     'ok' => true,
     'message' => 'Gespeicherte Daten wurden gelöscht.',

+ 20 - 2
assets/js/form.js

@@ -209,6 +209,15 @@
     }
   }
 
+  function setResetActionVisible(isVisible) {
+    if (!resetDataBtn) {
+      return;
+    }
+
+    resetDataBtn.classList.toggle('hidden', !isVisible);
+    resetDataBtn.disabled = !isVisible;
+  }
+
   function enterCompactStatus(email) {
     statusEmailValue.textContent = email;
     startSection.classList.add('compact-mode');
@@ -226,6 +235,7 @@
     startActions.classList.remove('hidden');
     statusEmailValue.textContent = '-';
     setDraftStatus('Noch nicht gespeichert', false);
+    setResetActionVisible(true);
   }
 
   function lockEmail(email) {
@@ -1363,12 +1373,13 @@
       const response = await postForm(appUrl('api/submit.php'), payload);
       clearErrors();
       setDraftStatus('Abgeschlossen', false);
-      setFeedback(response.message || 'Antrag erfolgreich abgeschlossen. Vielen Dank.', false);
+      setFeedback('Antrag erfolgreich abgeschlossen. Vielen Dank.', false);
       setSubmitting(false);
 
       submitBtn.disabled = true;
       nextBtn.disabled = true;
       prevBtn.disabled = true;
+      setResetActionVisible(false);
       if (submitLabel) {
         submitLabel.textContent = 'Abgesendet';
       }
@@ -1423,11 +1434,17 @@
     try {
       const result = await loadDraft(email);
       lockEmail(email);
+      setResetActionVisible(true);
 
       if (result.already_submitted) {
         wizardSection.classList.add('hidden');
         setDraftStatus('Antrag bereits abgeschlossen', false);
-        setFeedback(boot.contactEmail ? 'Kontakt: ' + boot.contactEmail : '', false);
+        setFeedback(
+          result.message || 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.',
+          false,
+          'start'
+        );
+        setResetActionVisible(false);
         stopAutosave();
         return;
       }
@@ -1573,6 +1590,7 @@
       if (payload.already_submitted) {
         wizardSection.classList.add('hidden');
         setDraftStatus('Antrag bereits abgeschlossen', false);
+        setResetActionVisible(false);
       }
     }
   });