From 1d38c1d51dea4ecaa3c0061f23bc89539d925453 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Fri, 18 Jul 2014 11:51:40 -0400 Subject: [PATCH 1/3] Se adiciona el end point /project/{prj_uid}/dynaform/{dyn_uid}/fields --- .../ProcessMaker/BusinessModel/DynaForm.php | 69 +++++++++++++++++++ .../Services/Api/Project/DynaForm.php | 20 ++++++ 2 files changed, 89 insertions(+) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php index 83244e39d..1cca4c7ae 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php @@ -1001,5 +1001,74 @@ class DynaForm throw $e; } } + + /** + * Get data of a DynaForm + * + * @param string $projectUid Unique id of Project + * @param string $dynaFormUid Unique id of DynaForm + * + * return array Return an array with data of a DynaForm + */ + public function getDynaFormFields($projectUid, $dynaFormUid) + { + try { + + //Verify data + Validator::proUid($projectUid, '$prj_uid'); + $this->throwExceptionIfNotExistsDynaForm($dynaFormUid, "", $this->arrayFieldNameForException["dynaFormUid"]); + + //Get data + $criteria = new \Criteria("workflow"); + + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID); + $criteria->addSelectColumn(\ProcessVariablesPeer::PRJ_UID); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NAME); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_TYPE); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_SIZE); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_LABEL); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DBCONNECTION); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_SQL); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NULL); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DEFAULT); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_ACCEPTED_VALUES); + + $criteria->add(\ProcessVariablesPeer::PRJ_UID, $projectUid, \Criteria::EQUAL); + + $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria); + + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $rsCriteria->next(); + $arrayVariables = array(); + + while ($aRow = $rsCriteria->getRow()) { + if ($aRow['VAR_NULL'] == 1) { + $required = true; + } else { + $required = false; + } + $arrayVariables[] = array('var_uid' => $aRow['VAR_UID'], + 'name' => $aRow['VAR_NAME'], + 'valueType' => $aRow['VAR_FIELD_TYPE'], + 'maxLength' => (int)$aRow['VAR_FIELD_SIZE'], + 'label' => $aRow['VAR_LABEL'], + 'dbConnection' => $aRow['VAR_DBCONNECTION'], + 'sql' => $aRow['VAR_SQL'], + 'required' => $required, + 'default' => $aRow['VAR_DEFAULT'], + 'options' => $aRow['VAR_ACCEPTED_VALUES']); + $rsCriteria->next(); + } + //Return + return $arrayVariables; + + + + } catch (\Exception $e) { + throw $e; + } + } + } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php index a8c78edd2..612a60a86 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php @@ -92,5 +92,25 @@ class DynaForm extends Api throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } } + + /** + * @url GET /:prj_uid/dynaform/:dyn_uid/fields + * + * @param string $dyn_uid {@min 32}{@max 32} + * @param string $prj_uid {@min 32}{@max 32} + */ + public function doGetDynaFormFields($dyn_uid, $prj_uid) + { + try { + $dynaForm = new \ProcessMaker\BusinessModel\DynaForm(); + $dynaForm->setFormatFieldNameInUppercase(false); + + $response = $dynaForm->getDynaFormFields($prj_uid, $dyn_uid); + + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } } From f137ccb76605ac1efc7e7364acf5f1807d0643c8 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Fri, 18 Jul 2014 16:58:27 -0400 Subject: [PATCH 2/3] Se adiciona el end point /project/{prj_uid}/dynaform/{dyn_uid}/fields --- .../ProcessMaker/BusinessModel/DynaForm.php | 171 ++++++++++++++---- 1 file changed, 134 insertions(+), 37 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php index 1cca4c7ae..16caf4cc7 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php @@ -1013,58 +1013,155 @@ class DynaForm public function getDynaFormFields($projectUid, $dynaFormUid) { try { - + $arrayVariables = array(); //Verify data Validator::proUid($projectUid, '$prj_uid'); $this->throwExceptionIfNotExistsDynaForm($dynaFormUid, "", $this->arrayFieldNameForException["dynaFormUid"]); //Get data $criteria = new \Criteria("workflow"); - - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID); - $criteria->addSelectColumn(\ProcessVariablesPeer::PRJ_UID); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NAME); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_TYPE); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_SIZE); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_LABEL); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DBCONNECTION); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_SQL); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NULL); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DEFAULT); - $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_ACCEPTED_VALUES); - - $criteria->add(\ProcessVariablesPeer::PRJ_UID, $projectUid, \Criteria::EQUAL); - - $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria); - + $criteria->addSelectColumn(\DynaformPeer::DYN_CONTENT); + $criteria->add(\DynaformPeer::DYN_UID, $dynaFormUid, \Criteria::EQUAL); + $rsCriteria = \DynaformPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $rsCriteria->next(); - $arrayVariables = array(); while ($aRow = $rsCriteria->getRow()) { - if ($aRow['VAR_NULL'] == 1) { - $required = true; - } else { - $required = false; - } - $arrayVariables[] = array('var_uid' => $aRow['VAR_UID'], - 'name' => $aRow['VAR_NAME'], - 'valueType' => $aRow['VAR_FIELD_TYPE'], - 'maxLength' => (int)$aRow['VAR_FIELD_SIZE'], - 'label' => $aRow['VAR_LABEL'], - 'dbConnection' => $aRow['VAR_DBCONNECTION'], - 'sql' => $aRow['VAR_SQL'], - 'required' => $required, - 'default' => $aRow['VAR_DEFAULT'], - 'options' => $aRow['VAR_ACCEPTED_VALUES']); + $contentDecode = json_decode($aRow['DYN_CONTENT'],true); $rsCriteria->next(); } + $content = $contentDecode['items'][0]['items']; + + foreach ($content as $key => $value) { + + $valueType = (isset($value[0]["valueType"])) ? $value[0]["valueType"]:null; + $maxLength = (isset($value[0]["maxLength"])) ? $value[0]["maxLength"]:null; + $label = (isset($value[0]["label"])) ? $value[0]["label"]:null; + $defaultValue = (isset($value[0]["defaultValue"])) ? $value[0]["defaultValue"]:null; + $required = (isset($value[0]["required"])) ? $value[0]["required"]:null; + $dbConnection = (isset($value[0]["dbConnection"])) ? $value[0]["dbConnection"]:null; + $sql = (isset($value[0]["sql"])) ? $value[0]["sql"]:null; + $options = (isset($value[0]["options"])) ? $value[0]["options"]:null; + //fields properties + $type = (isset($value[0]["type"])) ? $value[0]["type"]:null; + $colSpan = (isset($value[0]["colSpan"])) ? $value[0]["colSpan"]:null; + $name = (isset($value[0]["name"])) ? $value[0]["name"]:null; + $readonly = (isset($value[0]["readonly"])) ? $value[0]["readonly"]:null; + $hint = (isset($value[0]["hint"])) ? $value[0]["hint"]:null; + $dependentsField = (isset($value[0]["dependentsField"])) ? $value[0]["dependentsField"]:null; + $placeHolder = (isset($value[0]["placeHolder"])) ? $value[0]["placeHolder"]:null; + $pickType = (isset($value[0]["pickType"])) ? $value[0]["pickType"]:null; + + if (isset($value[0]["variable"])) { + $variable = $value[0]["variable"]; + + $criteria = new \Criteria("workflow"); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID); + $criteria->addSelectColumn(\ProcessVariablesPeer::PRJ_UID); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NAME); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_TYPE); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_SIZE); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_LABEL); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DBCONNECTION); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_SQL); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NULL); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DEFAULT); + $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_ACCEPTED_VALUES); + $criteria->add(\ProcessVariablesPeer::PRJ_UID, $projectUid, \Criteria::EQUAL); + $criteria->add(\ProcessVariablesPeer::VAR_NAME, $variable, \Criteria::EQUAL); + $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteria->next(); + + while ($aRow = $rsCriteria->getRow()) { + + if ($valueType == null && $valueType == '') { + $valueTypeMerged = $aRow['VAR_FIELD_TYPE']; + } else { + $valueTypeMerged = $valueType; + } + if ($maxLength == null && $maxLength == '') { + $maxLengthMerged = (int)$aRow['VAR_FIELD_SIZE']; + } else { + $maxLengthMerged = $maxLength; + } + if ($label == null && $label == '') { + $labelMerged = $aRow['VAR_LABEL']; + } else { + $labelMerged = $label; + } + if ($defaultValue == null && $defaultValue == '') { + $defaultValueMerged = $aRow['VAR_DEFAULT']; + } else { + $defaultValueMerged = $defaultValue; + } + if ($required == null && $required == '') { + $requiredMerged = ($aRow['VAR_NULL']==1) ? true:false; + } else { + $requiredMerged = $required; + } + if ($dbConnection == null && $dbConnection == '') { + $dbConnectionMerged = $aRow['VAR_DBCONNECTION']; + } else { + $dbConnectionMerged = $dbConnection; + } + if ($sql == null && $sql == '') { + $sqlMerged = $aRow['VAR_SQL']; + } else { + $sqlMerged = $sql; + } + if ($options == null && $options == '') { + $optionsMerged = $aRow['VAR_ACCEPTED_VALUES']; + } else { + $optionsMerged = $options; + } + + + $arrayVariables[] = array( 'variable' => $aRow['VAR_NAME'], + 'valueType' => $valueTypeMerged, + 'maxLength' => $maxLengthMerged, + 'label' => $labelMerged, + 'defaultValue' => $defaultValueMerged, + 'required' => $requiredMerged, + 'dbConnection' => $dbConnectionMerged, + 'sql' => $sqlMerged, + 'options' => $optionsMerged, + //values from fields properties + 'type' => $type, + 'colSpan' => $colSpan, + 'name' => $name, + 'readonly' => $readonly, + 'hint' => $hint, + 'dependentsField' => $dependentsField, + 'placeHolder' => $placeHolder, + 'pickType' => $pickType); + $rsCriteria->next(); + } + + } else { + $arrayVariables[] = array( 'variable' => $aRow['VAR_NAME'], + 'valueType' => $valueTypeMerged, + 'maxLength' => $maxLengthMerged, + 'label' => $labelMerged, + 'defaultValue' => $defaultValueMerged, + 'required' => $requiredMerged, + 'dbConnection' => $dbConnectionMerged, + 'sql' => $sqlMerged, + 'options' => $optionsMerged, + //values from fields properties + 'type' => $type, + 'colSpan' => $colSpan, + 'name' => $name, + 'readonly' => $readonly, + 'hint' => $hint, + 'dependentsField' => $dependentsField, + 'placeHolder' => $placeHolder, + 'pickType' => $pickType); + } + } //Return return $arrayVariables; - - } catch (\Exception $e) { throw $e; } From 1ca96d4ea9e37364bc9e905d71fbbc549c96b6c6 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Fri, 18 Jul 2014 17:26:10 -0400 Subject: [PATCH 3/3] Se adiciona el end point /project/{prj_uid}/dynaform/{dyn_uid}/fields --- .../ProcessMaker/BusinessModel/DynaForm.php | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php index 16caf4cc7..6243de63f 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php @@ -1026,10 +1026,9 @@ class DynaForm $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->next(); - while ($aRow = $rsCriteria->getRow()) { - $contentDecode = json_decode($aRow['DYN_CONTENT'],true); - $rsCriteria->next(); - } + $aRow = $rsCriteria->getRow(); + $contentDecode = json_decode($aRow['DYN_CONTENT'],true); + $content = $contentDecode['items'][0]['items']; foreach ($content as $key => $value) { @@ -1116,8 +1115,7 @@ class DynaForm $optionsMerged = $options; } - - $arrayVariables[] = array( 'variable' => $aRow['VAR_NAME'], + $arrayVariables[] = array( 'variable' => $variable, 'valueType' => $valueTypeMerged, 'maxLength' => $maxLengthMerged, 'label' => $labelMerged, @@ -1136,19 +1134,18 @@ class DynaForm 'placeHolder' => $placeHolder, 'pickType' => $pickType); $rsCriteria->next(); + } } else { - $arrayVariables[] = array( 'variable' => $aRow['VAR_NAME'], - 'valueType' => $valueTypeMerged, - 'maxLength' => $maxLengthMerged, - 'label' => $labelMerged, - 'defaultValue' => $defaultValueMerged, - 'required' => $requiredMerged, - 'dbConnection' => $dbConnectionMerged, - 'sql' => $sqlMerged, - 'options' => $optionsMerged, - //values from fields properties + $arrayVariables[] = array( 'valueType' => $valueType, + 'maxLength' => $maxLength, + 'label' => $label, + 'defaultValue' => $defaultValue, + 'required' => $required, + 'dbConnection' => $dbConnection, + 'sql' => $sql, + 'options' => $options, 'type' => $type, 'colSpan' => $colSpan, 'name' => $name,