2 namespace Workspace\Service;
7 * Basic data node to provide global functionality to workflow services.
15 const CONTRACT_TYPE_RECCURING = 'Recurring';
16 const CONTRACT_TYPE_USE_ONCE = 'UseOnce';
21 const FIELD_TYPE_DEFAULT = 'Default';
22 const FIELD_TYPE_ARRAY = 'Array';
23 const FIELD_TYPE_DATE = 'Date';
24 const FIELD_TYPE_EMAIL = 'Email';
25 const FIELD_TYPE_MOBILE = 'Mobile';
26 const FIELD_TYPE_ID = 'Id';
27 const FIELD_TYPE_BOOLEAN = 'Boolean';
28 const FIELD_TYPE_DEPARTMENT = 'Department';
29 const FIELD_TYPE_DEALER_TYPE = 'DealerType';
30 const FIELD_TYPE_DEALER_CLIENT_TYPE = 'DealerClientType';
31 const FIELD_TYPE_COMPANY_TYPE = 'CompanyType';
32 const FIELD_TYPE_POSITION = 'Position';
33 const FIELD_TYPE_USERTYPE = 'UserType';
34 const FIELD_TYPE_ID_NUMBER_ZA = 'ZaId';
35 const FIELD_TYPE_USERNAME = 'Username';
36 const FIELD_TYPE_PASSWORD = 'Password';
37 const FIELD_TYPE_ID_NUMBER = 'IdNumber';
38 const FIELD_TYPE_NAME = 'Name';
39 const FIELD_TYPE_PERSON_NAME = 'PersonName';
40 const FIELD_TYPE_MONTH_DIGIT = 'MonthDigit';
41 const FIELD_TYPE_COLLECTION = 'Collection';
43 const FIELD_TYPE_DECIMAL = 'Decimal';
44 const FIELD_TYPE_INTEGER = 'Integer';
45 const FIELD_TYPE_DIGIT_3 = 'Digit3';
46 const FIELD_TYPE_DIGIT_4 = 'Digit4';
47 const FIELD_TYPE_DIGIT_10 = 'Digit10';
49 const FIELD_TYPE_STRING_2 = 'String2';
50 const FIELD_TYPE_STRING_10 = 'String10';
51 const FIELD_TYPE_STRING_12 = 'String12';
52 const FIELD_TYPE_STRING_15 = 'String15';
53 const FIELD_TYPE_STRING_20 = 'String20';
54 const FIELD_TYPE_STRING_25 = 'String25';
55 const FIELD_TYPE_STRING_40 = 'String40';
56 const FIELD_TYPE_STRING_50 = 'String50';
57 const FIELD_TYPE_STRING_75 = 'String75';
58 const FIELD_TYPE_STRING_100 = 'String100';
59 const FIELD_TYPE_STRING_250 = 'String250';
60 const FIELD_TYPE_STRING_500 = 'String500';
63 * @var \Workspace\Workflow
65 protected $workflowNode;
67 * @var \Doctrine\ORM\EntityManager
78 * @param \Workspace\Workflow $workflowNode
80 public function setWorkflow(\Workspace\Workflow $workflowNode)
82 $this->workflowNode = $workflowNode;
83 $this->em = $this->workflowNode->getEntityManager();
88 * Utility to construct options object from meta data.
90 * @return \Workspace\UseCase\Options
92 protected function buildOptions(array $meta){
93 $options = new \Workspace\UseCase\Options();
94 if (isset($meta['Options']) && !empty($meta['Options']))
96 if (isset($meta['Options']['Boolean']) && !empty($meta['Options']['Boolean']))
98 foreach ($meta['Options']['Boolean'] as $option => $default)
100 $options->optBoolean($option, $default);
103 isset($meta['Options']['OneFromList'])
104 && !empty($meta['Options']['OneFromList'])
105 && $options->optOneFromList(
106 $meta['Options']['OneFromList']['Name'],
107 $meta['Options']['OneFromList']['List'],
108 $meta['Options']['OneFromList']['Default']
110 isset($meta['Options']['ManyFromList'])
111 && !empty($meta['Options']['ManyFromList'])
112 && $options->optManyFromList(
113 $meta['Options']['ManyFromList']['Name'],
114 $meta['Options']['ManyFromList']['List'],
115 $meta['Options']['ManyFromList']['Default']
122 * Utility to construct requirements object from meta data.
124 * @return \Workspace\UseCase\Requirement
126 protected function buildRequirements(array $meta){
127 $requirement = new \Workspace\UseCase\Requirement();
128 isset($meta['RequiredInput'])
129 && !empty($meta['RequiredInput'])
130 && $requirement->addRequiredInput($meta['RequiredInput']);
131 isset($meta['OptionalInput'])
132 && !empty($meta['OptionalInput'])
133 && $requirement->addOptionalInput($meta['OptionalInput']);
138 * Utility to construct conditional case object(s) from meta data and attach to contract.
139 * @param \Workspace\Contract\AbstractBase $contract
141 * @return \Workspace\Contract\AbstractBase
143 protected function buildConditions(\Workspace\Contract\AbstractBase $contract, array $meta)
145 if (isset($meta['Conditions']) && !empty ($meta['Conditions']))
147 foreach ($meta['Conditions'] as $name => $conditionMeta)
149 $condition = (isset($conditionMeta['Base']) && 'Or' == $conditionMeta['Base'])
150 ? new \Workspace\UseCase\ConditionOrBase()
151 : new \Workspace\UseCase\ConditionAndBase();
152 foreach ($conditionMeta['Condition'] as $newCondition)
154 isset($newCondition['Type'])
155 || $newCondition['Type'] = 'equal';
156 switch ($newCondition['Type'])
159 $condition->notEqual($newCondition['Field'], $newCondition['Value']);
162 $condition->smallerThan($newCondition['Field'], $newCondition['Value']);
165 $condition->greaterThan($newCondition['Field'], $newCondition['Value']);
168 $condition->oneOf($newCondition['Field'], $newCondition['Value']);
171 $condition->notOneOf($newCondition['Field'], $newCondition['Value']);
175 $condition->equal($newCondition['Field'], $newCondition['Value']);
179 $requirement = new \Workspace\UseCase\Requirement();
180 $requirement->addRequiredInput($conditionMeta['RequiredInput']);
181 isset($conditionMeta['OptionalInput'])
182 && !empty($conditionMeta['OptionalInput'])
183 && $requirement->addOptionalInput($conditionMeta['OptionalInput']);
184 $contract->addConditionalCase($name, $condition, $requirement);