From dbd96802e057ecda85e6a1acb6f71ddf03d8e70c Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Thu, 11 Aug 2022 22:14:59 -0400 Subject: [PATCH] Afform - Add Case entity --- .../Spec/Provider/CaseCreationSpecProvider.php | 8 ++++---- ext/afform/admin/afformEntities/Case.php | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 ext/afform/admin/afformEntities/Case.php diff --git a/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php index 74d4665beb..dbfc8c28ee 100644 --- a/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php +++ b/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php @@ -30,10 +30,10 @@ class CaseCreationSpecProvider implements Generic\SpecProviderInterface { $creator->setDefaultValue('user_contact_id'); $spec->addFieldSpec($creator); - $contact = new FieldSpec('contact_id', $spec->getEntity(), 'Array'); - $contact->setTitle(ts('Case Contact(s)')); - $contact->setLabel(ts('Case Client(s)')); - $contact->setDescription('Contact(s) who are case clients.'); + $multiClient = \Civi::settings()->get('civicaseAllowMultipleClients'); + $contact = new FieldSpec('contact_id', $spec->getEntity(), $multiClient ? 'Array' : 'Integer'); + $contact->setTitle($multiClient ? ts('Case Clients') : ts('Case Client')); + $contact->setDescription($multiClient ? 'Contact(s) who are case clients.' : 'The case client'); $contact->setFkEntity('Contact'); $contact->setInputType('EntityRef'); $contact->setRequired(TRUE); diff --git a/ext/afform/admin/afformEntities/Case.php b/ext/afform/admin/afformEntities/Case.php new file mode 100644 index 0000000000..54daddc89c --- /dev/null +++ b/ext/afform/admin/afformEntities/Case.php @@ -0,0 +1,18 @@ +get('civicaseAllowMultipleClients'); +// Format contact_id as an array if multivalued +$default = $multiClient ? "['user_contact_id']" : "'user_contact_id'"; +// phpcs:disable +return [ + 'type' => 'primary', + 'defaults' => "{ + data: { + contact_id: $default, + case_type_id: '' + }, + actions: {create: true, update: false} + }", + 'boilerplate' => [ + ['#tag' => 'af-field', 'name' => 'subject'], + ], +]; -- 2.25.1