HOR-1014-A "El endpoint /api/1.0/{workspace}..." SOLVED

This commit is contained in:
root
2016-05-18 15:13:56 -04:00
parent dc0658e90a
commit a114571827
2 changed files with 72 additions and 4 deletions

View File

@@ -1682,18 +1682,67 @@ class Cases
return $oCriteria;
}
/**
* Get fields and values by DynaForm
*
* @param array $form
* @param array $appData
* @param array $caseVariable
*
* return array Return array
*/
private function __getFieldsAndValuesByDynaFormAndAppData(array $form, array $appData, array $caseVariable)
{
try {
$caseVariableAux = [];
foreach ($form['items'] as $value) {
foreach ($value as $value2) {
$field = $value2;
if (isset($field['type'])) {
if ($field['type'] != 'form') {
if (isset($field['name']) && isset($appData[$field['name']])) {
if (isset($field['dataType']) && $field['dataType'] != 'grid') {
$caseVariable[$field['name']] = $appData[$field['name']];
if (isset($appData[$field['name'] . '_label'])) {
$caseVariable[$field['name'] . '_label'] = $appData[$field['name'] . '_label'];
} else {
$caseVariable[$field['name'] . '_label'] = '';
}
} else {
$caseVariable[$field['name']] = $appData[$field['name']];
}
}
} else {
$caseVariableAux = $this->__getFieldsAndValuesByDynaFormAndAppData($field, $appData, $caseVariable);
$caseVariable = array_merge($caseVariable, $caseVariableAux);
}
}
}
}
//Return
return $caseVariable;
} catch (\Exception $e) {
throw $e;
}
}
/**
* Get Case Variables
*
* @access public
* @param string $app_uid, Uid for case
* @param string $usr_uid, Uid for user
* @param string $dynaFormUid, Uid for dynaform
* @return array
*
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*/
public function getCaseVariables($app_uid, $usr_uid)
public function getCaseVariables($app_uid, $usr_uid, $dynaFormUid = null)
{
Validator::isString($app_uid, '$app_uid');
Validator::appUid($app_uid, '$app_uid');
@@ -1718,7 +1767,26 @@ class Cases
$case = new \Cases();
$fields = $case->loadCase($app_uid);
return $fields['APP_DATA'];
$arrayCaseVariable = [];
if (!is_null($dynaFormUid)) {
$dynaForm = new \ProcessMaker\BusinessModel\DynaForm();
$arrayDynaFormData = $dynaForm->getDynaFormRecordByPk($dynaFormUid, ['$dynaFormUid' => '$dynaFormUid']);
$arrayDynContent = \G::json_decode($arrayDynaFormData['DYN_CONTENT'], true);
$arrayAppData = $fields['APP_DATA'];
$arrayCaseVariable = $this->__getFieldsAndValuesByDynaFormAndAppData(
$arrayDynContent['items'][0], $arrayAppData, $arrayCaseVariable
);
} else {
$arrayCaseVariable = $fields['APP_DATA'];
}
//Return
return $arrayCaseVariable;
}
/**

View File

@@ -1485,12 +1485,12 @@ class Light extends Api
*
* @url GET /:app_uid/variables
*/
public function doGetCaseVariables($app_uid)
public function doGetCaseVariables($app_uid, $dyn_uid = null)
{
try {
$usr_uid = $this->getUserId();
$cases = new \ProcessMaker\BusinessModel\Cases();
$response = $cases->getCaseVariables($app_uid, $usr_uid);
$response = $cases->getCaseVariables($app_uid, $usr_uid, $dyn_uid);
return DateTime::convertUtcToTimeZone($response);
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));