Merged in darojas/processmaker (pull request #66)

Validaciones para el metodo POST para PROCESS SUPERVISOR, BEHAT para OUTPUTDOCUMENTS
This commit is contained in:
erik ao
2014-01-10 16:29:22 -04:00
3 changed files with 217 additions and 46 deletions

View File

@@ -18,11 +18,81 @@ Feature: Output Documents Resources
And the type is "object" And the type is "object"
Scenario: Create a new output document for a project Scenario: Create a new output document for a project
Given this scenario is not implemented yet Given POST this data:
"""
Scenario: Update a output document for a project {
Given this scenario is not implemented yet "out_doc_title": "Output doc #1",
"out_doc_description": "Output doc #1 - Desc",
Scenario: Delete a output document of a project "out_doc_filename": "od_generated_1",
Given this scenario is not implemented yet "out_doc_template": "",
"out_doc_report_generator": "HTML2PDF",
"out_doc_landscape": 0,
"out_doc_media": "Letter",
"out_doc_left_margin": 0,
"out_doc_right_margin": 0,
"out_doc_top_margin": 0,
"out_doc_bottom_margin": 0,
"out_doc_generate": "BOTH",
"out_doc_type": "HTML",
"out_doc_current_revision": 0,
"out_doc_field_mapping": "",
"out_doc_versioning": 0,
"out_doc_destination_path": "",
"out_doc_tags": "",
"out_doc_pdf_security_enabled": 0,
"out_doc_pdf_security_open_password": "",
"out_doc_pdf_security_owner_password": "",
"out_doc_pdf_security_permissions": ""
}
"""
And I request "project/4224292655297723eb98691001100052/output-document"
Then the response status code should be 201
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "object"
And store "out_doc_uid" in session array as variable "out_doc_uid"
Scenario: Update a output document for a project
Given PUT this data:
"""
{
"out_doc_title": "Output doc #1",
"out_doc_description": "Output doc #1 - Desc DESCRIPTION Modified",
"out_doc_filename": "od_generated_1",
"out_doc_template": "",
"out_doc_report_generator": "HTML2PDF",
"out_doc_landscape": 0,
"out_doc_media": "Letter",
"out_doc_left_margin": 0,
"out_doc_right_margin": 0,
"out_doc_top_margin": 0,
"out_doc_bottom_margin": 0,
"out_doc_generate": "BOTH",
"out_doc_type": "HTML",
"out_doc_current_revision": 0,
"out_doc_field_mapping": "",
"out_doc_versioning": 0,
"out_doc_destination_path": "",
"out_doc_tags": "",
"out_doc_pdf_security_enabled": 0,
"out_doc_pdf_security_open_password": "",
"out_doc_pdf_security_owner_password": "",
"out_doc_pdf_security_permissions": ""
}
"""
And that I want to update a resource with the key "out_doc_uid" stored in session array
And I request "project/4224292655297723eb98691001100052/output-document"
And the content type is "application/json"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that "out_doc_description": "Output doc #1 - Desc DESCRIPTION Modified"
Scenario: Delete a output document of a project
Given that I want to delete a resource with the key "out_doc_uid" stored in session array
And I request "project/4224292655297723eb98691001100052/output-document"
And the content type is "application/json"
Then the response status code should be 200
And the response charset is "UTF-8"

View File

@@ -550,13 +550,53 @@ class ProcessSupervisor
throw (new \Exception( 'This id: '. $sUsrUID .' do not correspond to a registered ' .$sTypeUID )); throw (new \Exception( 'This id: '. $sUsrUID .' do not correspond to a registered ' .$sTypeUID ));
} }
} }
$sPuUID = \G::generateUniqueID(); // validate Groups
$oProcessUser->create(array('PU_UID' => $sPuUID, $oCriteria = new \Criteria('workflow');
'PRO_UID' => $sProcessUID, $oCriteria->addSelectColumn(\ProcessUserPeer::PU_UID);
'USR_UID' => $sUsrUID, $oCriteria->addSelectColumn(\ProcessUserPeer::USR_UID);
'PU_TYPE' => $sTypeUID)); $oCriteria->addAsColumn('GRP_TITLE', \ContentPeer::CON_VALUE);
$oCriteria = $this->getProcessSupervisor($sProcessUID, $sPuUID); $aConditions [] = array(\ProcessUserPeer::USR_UID, \ContentPeer::CON_ID);
return $oCriteria; $aConditions [] = array(\ContentPeer::CON_CATEGORY, \DBAdapter::getStringDelimiter().'GRP_TITLE'.\DBAdapter::getStringDelimiter());
$aConditions [] = array(\ContentPeer::CON_LANG, \DBAdapter::getStringDelimiter().SYS_LANG.\DBAdapter::getStringDelimiter());
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
$oCriteria->add(\ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR');
$oCriteria->add(\ProcessUserPeer::PRO_UID, $sProcessUID);
$oCriteria->add(\ProcessUserPeer::USR_UID, $sUsrUID);
$oCriteria->addAscendingOrderByColumn(\ContentPeer::CON_VALUE);
$oDataset = \ProcessUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$sPuUIDT = $aRow['PU_UID'];
$oDataset->next();
}
// validate Users
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\ProcessUserPeer::USR_UID);
$oCriteria->addSelectColumn(\ProcessUserPeer::PU_UID);
$oCriteria->addJoin(\ProcessUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
$oCriteria->add(\ProcessUserPeer::PU_TYPE, 'SUPERVISOR');
$oCriteria->add(\ProcessUserPeer::PRO_UID, $sProcessUID);
$oCriteria->add(\ProcessUserPeer::USR_UID, $sUsrUID);
$oCriteria->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME);
$oDataset = \ProcessUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$sPuUIDT = $aRow['PU_UID'];
$oDataset->next();
}
if (is_null($sPuUIDT)) {
$sPuUID = \G::generateUniqueID();
$oProcessUser->create(array('PU_UID' => $sPuUID,
'PRO_UID' => $sProcessUID,
'USR_UID' => $sUsrUID,
'PU_TYPE' => $sTypeUID));
$oCriteria = $this->getProcessSupervisor($sProcessUID, $sPuUID);
return $oCriteria;
} else {
throw (new \Exception('This relation already exist!'));
}
} }
/** /**
@@ -568,18 +608,13 @@ class ProcessSupervisor
*/ */
public function addProcessSupervisorDynaform($sProcessUID, $sDynUID) public function addProcessSupervisorDynaform($sProcessUID, $sDynUID)
{ {
$oStepSupervisor = new \StepSupervisor(); $oTypeDynaform = \DynaformPeer::retrieveByPK($sDynUID);
$oStepSupervisor->create(array('PRO_UID' => $sProcessUID, if (is_null( $oTypeDynaform )) {
'STEP_TYPE_OBJ' => "DYNAFORM", throw (new \Exception( 'This id: '. $sDynUID .' do not correspond to a registered Dynaform'));
'STEP_UID_OBJ' => $sDynUID, }
'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "DYNAFORM")));
$sDelimiter = \DBAdapter::getStringDelimiter(); $sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow'); $oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID); $oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::PRO_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_TYPE_OBJ);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID_OBJ);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_POSITION);
$oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE'); $oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE');
$oCriteria->addAlias('C', 'CONTENT'); $oCriteria->addAlias('C', 'CONTENT');
$aConditions = array(); $aConditions = array();
@@ -599,13 +634,50 @@ class ProcessSupervisor
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next(); $oDataset->next();
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$aResp = array('pud_uid' => $aRow['STEP_UID'], $sPuUIDT = $aRow['STEP_UID'];
'pud_position' => $aRow['STEP_POSITION'],
'dyn_uid' => $aRow['STEP_UID_OBJ'],
'dyn_title' => $aRow['DYN_TITLE']);
$oDataset->next(); $oDataset->next();
} }
return $aResp; if (is_null($sPuUIDT)) {
$oStepSupervisor = new \StepSupervisor();
$oStepSupervisor->create(array('PRO_UID' => $sProcessUID,
'STEP_TYPE_OBJ' => "DYNAFORM",
'STEP_UID_OBJ' => $sDynUID,
'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "DYNAFORM")));
$sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::PRO_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID_OBJ);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_POSITION);
$oCriteria->addAsColumn('DYN_TITLE', 'C.CON_VALUE');
$oCriteria->addAlias('C', 'CONTENT');
$aConditions = array();
$aConditions[] = array(\StepSupervisorPeer::STEP_UID_OBJ, \DynaformPeer::DYN_UID );
$aConditions[] = array(\StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'DYNAFORM' . $sDelimiter );
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
$aConditions = array();
$aConditions[] = array(\DynaformPeer::DYN_UID, 'C.CON_ID' );
$aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'DYN_TITLE' . $sDelimiter );
$aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter );
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
$oCriteria->add(\StepSupervisorPeer::PRO_UID, $sProcessUID);
$oCriteria->add(\StepSupervisorPeer::STEP_UID_OBJ, $sDynUID);
$oCriteria->add(\StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM');
$oCriteria->addAscendingOrderByColumn(\StepSupervisorPeer::STEP_POSITION);
$oDataset = \StepSupervisorPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aResp = array('pud_uid' => $aRow['STEP_UID'],
'pud_position' => $aRow['STEP_POSITION'],
'dyn_uid' => $aRow['STEP_UID_OBJ'],
'dyn_title' => $aRow['DYN_TITLE']);
$oDataset->next();
}
return $aResp;
} else {
throw (new \Exception('This relation already exist!'));
}
} }
/** /**
@@ -617,18 +689,13 @@ class ProcessSupervisor
*/ */
public function addProcessSupervisorInputDocument($sProcessUID, $sInputDocumentUID) public function addProcessSupervisorInputDocument($sProcessUID, $sInputDocumentUID)
{ {
$oStepSupervisor = new \StepSupervisor(); $oTypeInputDocument= \InputDocumentPeer::retrieveByPK($sInputDocumentUID);
$oStepSupervisor->create(array('PRO_UID' => $sProcessUID, if (is_null( $oTypeInputDocument )) {
'STEP_TYPE_OBJ' => "INPUT_DOCUMENT", throw (new \Exception( 'This id: '. $sInputDocumentUID .' do not correspond to a registered InputDocument'));
'STEP_UID_OBJ' => $sInputDocumentUID, }
'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "DYNAFORM")));
$sDelimiter = \DBAdapter::getStringDelimiter(); $sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow'); $oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID); $oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::PRO_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_TYPE_OBJ);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID_OBJ);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_POSITION);
$oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE'); $oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE');
$oCriteria->addAlias('C', 'CONTENT'); $oCriteria->addAlias('C', 'CONTENT');
$aConditions = array(); $aConditions = array();
@@ -648,13 +715,51 @@ class ProcessSupervisor
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next(); $oDataset->next();
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$aResp = array('pui_uid' => $aRow['STEP_UID'], $sPuUIDT = $aRow['STEP_UID'];
'pui_position' => $aRow['STEP_POSITION'],
'input_doc_uid' => $aRow['STEP_UID_OBJ'],
'input_doc_title' => $aRow['INP_DOC_TITLE']);
$oDataset->next(); $oDataset->next();
} }
return $aResp; if (is_null($sPuUIDT)) {
$oStepSupervisor = new \StepSupervisor();
$oStepSupervisor->create(array('PRO_UID' => $sProcessUID,
'STEP_TYPE_OBJ' => "INPUT_DOCUMENT",
'STEP_UID_OBJ' => $sInputDocumentUID,
'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "DYNAFORM")));
$sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::PRO_UID);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_TYPE_OBJ);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID_OBJ);
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_POSITION);
$oCriteria->addAsColumn('INP_DOC_TITLE', 'C.CON_VALUE');
$oCriteria->addAlias('C', 'CONTENT');
$aConditions = array();
$aConditions[] = array(\StepSupervisorPeer::STEP_UID_OBJ, \InputDocumentPeer::INP_DOC_UID);
$aConditions[] = array(\StepSupervisorPeer::STEP_TYPE_OBJ, $sDelimiter . 'INPUT_DOCUMENT' . $sDelimiter);
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
$aConditions = array();
$aConditions[] = array(\InputDocumentPeer::INP_DOC_UID, 'C.CON_ID');
$aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'INP_DOC_TITLE' . $sDelimiter);
$aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter);
$oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
$oCriteria->add(\StepSupervisorPeer::PRO_UID, $sProcessUID);
$oCriteria->add(\StepSupervisorPeer::STEP_UID_OBJ, $sInputDocumentUID);
$oCriteria->add(\StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT');
$oCriteria->addAscendingOrderByColumn(\StepSupervisorPeer::STEP_POSITION);
$oDataset = \StepSupervisorPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aResp = array('pui_uid' => $aRow['STEP_UID'],
'pui_position' => $aRow['STEP_POSITION'],
'input_doc_uid' => $aRow['STEP_UID_OBJ'],
'input_doc_title' => $aRow['INP_DOC_TITLE']);
$oDataset->next();
}
return $aResp;
} else {
throw (new \Exception('This relation already exist!'));
}
} }
/** /**

View File

@@ -311,8 +311,4 @@ class ProcessSupervisors extends Api
} }
return $response; return $response;
} }
} }