Respect zero value
[civicrm-core.git] / Civi / Api4 / Service / Spec / Provider / EventCreationSpecProvider.php
1 <?php
2
3 /*
4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC. All rights reserved. |
6 | |
7 | This work is published under the GNU AGPLv3 license with some |
8 | permitted exceptions and without any warranty. For full license |
9 | and copyright information, see https://civicrm.org/licensing |
10 +--------------------------------------------------------------------+
11 */
12
13 namespace Civi\Api4\Service\Spec\Provider;
14
15 use Civi\Api4\Service\Spec\FieldSpec;
16 use Civi\Api4\Service\Spec\RequestSpec;
17
18 class EventCreationSpecProvider implements Generic\SpecProviderInterface {
19
20 /**
21 * @inheritDoc
22 */
23 public function modifySpec(RequestSpec $spec) {
24 $spec->getFieldByName('event_type_id')->setRequiredIf('empty($values.template_id)');
25 $spec->getFieldByName('title')->setRequiredIf('empty($values.is_template)');
26 $spec->getFieldByName('start_date')->setRequiredIf('empty($values.is_template)');
27 $spec->getFieldByName('template_title')->setRequiredIf('!empty($values.is_template)');
28
29 $template_id = new FieldSpec('template_id', 'Event', 'Integer');
30 $template_id
31 ->setTitle('Template Id')
32 ->setDescription('Template on which to base this new event');
33 $spec->addFieldSpec($template_id);
34
35 $spec->getFieldByName('event_tz')->setDefaultValue(\CRM_Core_Config::singleton()->userSystem->getTimeZoneString());
36 }
37
38 /**
39 * @inheritDoc
40 */
41 public function applies($entity, $action) {
42 return $entity === 'Event' && $action === 'create';
43 }
44
45 }