From 9ca817edd0c657da02083e3d9b20a19d5c7a8790 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lucas=20Garc=C3=ADa?= <lucas@codeccoop.org>
Date: Tue, 10 Oct 2023 14:20:25 +0200
Subject: [PATCH] feat: soruce_xml_id as optional form field

---
 includes/submissions.php | 14 +++++++-------
 includes/webhooks.php    |  8 +++++++-
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/includes/submissions.php b/includes/submissions.php
index 6994976..440586c 100644
--- a/includes/submissions.php
+++ b/includes/submissions.php
@@ -5,9 +5,9 @@
  */
 function wpct_crm_forms_parse_form_entry($entry, $form)
 {
-    $form_vals = array(
+    $form_vals = [
         'entry_id' => $entry['id']
-    );
+    ];
 
     foreach ($form['fields'] as $field) {
         if ($field->type === 'consent') continue;
@@ -92,10 +92,10 @@ function wpct_crm_forms_cleanup_empties($form_vals)
  */
 function wpct_crm_forms_get_submission_payload($form_vals)
 {
-    $payload = array(
+    $payload = [
         'name' => $form_vals['source_xml_id'] . ' submission: ' . $form_vals['entry_id'],
-        'metadata' => array()
-    );
+        'metadata' => []
+    ];
 
     foreach ($form_vals as $key => $val) {
         if ($key == 'company_id') {
@@ -106,10 +106,10 @@ function wpct_crm_forms_get_submission_payload($form_vals)
             $payload['source_xml_id'] = $val;
         }
 
-        $payload['metadata'][] = array(
+        $payload['metadata'][] = [
             'key' => $key,
             'value' => $val
-        );
+        ];
     }
 
     return $payload;
diff --git a/includes/webhooks.php b/includes/webhooks.php
index 6b53c24..b7dd093 100644
--- a/includes/webhooks.php
+++ b/includes/webhooks.php
@@ -3,7 +3,13 @@ add_action('gform_after_submission', 'wpct_crm_forms_api_submissions', 10, 2);
 function wpct_crm_forms_api_submissions($entry, $form)
 {
 	$form_vals = wpct_crm_forms_parse_form_entry($entry, $form);
-	if (!isset($form_vals['source_xml_id'])) throw new Exception('Error Processing Request', 400);
+
+	if (!isset($form_vals['source_xml_id'])) {
+		$form_id = rgat($form, 'id');
+		$form_title = rgar($form, 'title');
+		$form_vals['source_xml_id'] = "{$form_id}_{$form_title}";
+	}
+
 	$submission_payload = apply_filters('wpct_crm_forms_prepare_submission', $form_vals);
 
 	$response = wpct_oc_post_odoo('/api/private/crm-lead', $submission_payload);
-- 
GitLab