Merged in darojas/processmaker (pull request #42)

Pruebas automaticas para assignees, se agrega la clase process supervisor
This commit is contained in:
erik ao
2013-12-23 10:10:45 -04:00
5 changed files with 346 additions and 3 deletions

View File

@@ -0,0 +1,73 @@
@ProcessMakerMichelangelo @RestAPI
Feature: Testing assignee
Scenario: List assignees of an activity
Given that I have a valid access_token
And I request "project/14414793652a5d718b65590036026581/activity/13508932952a5d718ef56f6044945775/assignee"
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "array"
And the "aas_uid" property in row 0 equals "00000000000000000000000000000001"
And the "aas_name" property in row 0 equals "Administrator"
And the "aas_lastname" property in row 0 equals "Admin"
And the "aas_username" property in row 0 equals "admin"
And the "aas_type" property in row 0 equals "user"
Scenario: Get a list of available users and groups to be assigned to an activity
Given that I have a valid access_token
And I request "project/14414793652a5d718b65590036026581/activity/13508932952a5d718ef56f6044945775/available-assignee"
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "array"
And the "aas_uid" property in row 0 equals "1283376915224e7e5ccbfa0059627023"
And the "aas_name" property in row 0 equals "Juana"
And the "aas_lastname" property in row 0 equals "De Arco"
And the "aas_username" property in row 0 equals "juana"
And the "aas_type" property in row 0 equals "user"
Scenario: Get a single user or group of an activity
Given that I have a valid access_token
And I request "project/14414793652a5d718b65590036026581/activity/13508932952a5d718ef56f6044945775/assignee/00000000000000000000000000000001"
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "object"
And the "aas_uid" property equals "00000000000000000000000000000001"
And the "aas_name" property equals "Administrator"
And the "aas_lastname" property equals "Admin"
And the "aas_username" property equals "admin"
And the "aas_type" property equals "user"
Scenario: Assign a user or group to an activity
Given that I have a valid access_token
And POST this data:
"""
{
"ass_uid": "42713393551f2a8aae1fde2096962777",
"ass_type": "group"
}
"""
And I request "project/14414793652a5d718b65590036026581/activity/13508932952a5d718ef56f6044945775/assignee"
Then the response status code should be 201
# And store "aas_uid" in session array
# Scenario: Unassign a user or group to an activity
# Given that I have a valid access_token
# And that I want to delete a resource with the key "aas_uid" stored in session array
# And I request "project/14414793652a5d718b65590036026581/activity/13508932952a5d718ef56f6044945775/assignee/42713393551f2a8aae1fde2096962777"
# Then the response status code should be 200
# And the content type is "application/json"
Scenario: List assignees of an activity with filter
Given that I have a valid access_token
And I request "project/14414793652a5d718b65590036026581/activity/13508932952a5d718ef56f6044945775/assignee?filter=adm"
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "array"
And the "aas_uid" property in row 0 equals "42713393551f2a8aae1fde2096962777"
And the "aas_name" property in row 0 equals "AdministratorOnly (0 Users)"
And the "aas_lastname" property in row 0 equals ""
And the "aas_username" property in row 0 equals ""
And the "aas_type" property in row 0 equals "group"

View File

@@ -0,0 +1,194 @@
<?php
namespace BusinessModel;
use \G;
class ProcessSupervisor
{
/**
* Return output documents of a project
* @param string $sProcessUID
* @param string $filter
* @param int $start
* @param int $limit
*
* @return array
*
* @access public
*/
public function getSupervisors($sProcessUID = '', $filter, $start, $limit)
{
try {
// Groups
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\ProcessUserPeer::USR_UID);
$oCriteria->addAsColumn('GRP_TITLE', \ContentPeer::CON_VALUE);
$aConditions [] = array(\ProcessUserPeer::USR_UID, \ContentPeer::CON_ID);
$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->addAscendingOrderByColumn(\ContentPeer::CON_VALUE);
$oDataset = \ProcessUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER');
$oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']);
$oDataset2 = \GroupUserPeer::doSelectRS($oCriteria);
$oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset2->next();
$aRow2 = $oDataset2->getRow();
while ($aRow = $oDataset->getRow()) {
$aResp[] = array('sup_uid' => $aRow['USR_UID'],
'sup_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $aRow['GRP_TITLE'] .
' (' . $aRow2['MEMBERS_NUMBER'] . ' ' .
((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')).
')' . '' : $aRow['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']),
'sup_lastname' => "",
'sup_username' => "",
'sup_type' => "group" );
$oDataset->next();
}
// Users
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\ProcessUserPeer::USR_UID);
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
$oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL);
if ($filter) {
$oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) );
}
$oCriteria->addJoin(\ProcessUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
$oCriteria->add(\ProcessUserPeer::PU_TYPE, 'SUPERVISOR');
$oCriteria->add(\ProcessUserPeer::PRO_UID, $sProcessUID);
if ($start) {
$oCriteria->setOffset( $start );
}
if ($limit) {
$oCriteria->setLimit( $limit );
}
$oCriteria->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME);
$oDataset = \ProcessUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aResp[] = array('sup_uid' => $aRow['USR_UID'],
'sup_name' => $aRow['USR_FIRSTNAME'],
'sup_lastname' => $aRow['USR_LASTNAME'],
'sup_username' => $aRow['USR_USERNAME'],
'sup_type' => "user" );
$oDataset->next();
}
return $aResp;
} catch (Exception $e) {
throw $e;
}
}
/**
* Return output documents of a project
* @param string $sProcessUID
*
* @return array
*
* @access public
*/
public function getDynaformSupervisor($sProcessUID = '')
{
try {
$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('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_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('step_uid' => $aRow['STEP_UID'],
'pro_uid' => $aRow['PRO_UID'],
'step_type_obj' => $aRow['STEP_TYPE_OBJ'],
'step_uid_obj' => $aRow['STEP_UID_OBJ'],
'step_position' => $aRow['STEP_POSITION'],
'title' => $aRow['DYN_TITLE']);
$oDataset->next();
}
return $aResp;
} catch (Exception $e) {
throw $e;
}
}
/**
* Return output documents of a project
* @param string $sProcessUID
*
* @return array
*
* @access public
*/
public function getInputDocumentSupervisor($sProcessUID = '')
{
try {
$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_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('step_uid' => $aRow['STEP_UID'],
'pro_uid' => $aRow['PRO_UID'],
'step_type_obj' => $aRow['STEP_TYPE_OBJ'],
'step_uid_obj' => $aRow['STEP_UID_OBJ'],
'step_position' => $aRow['STEP_POSITION'],
'title' => $aRow['INP_DOC_TITLE']);
$oDataset->next();
}
return $aResp;
} catch (Exception $e) {
throw $e;
}
}
}

View File

@@ -1010,7 +1010,7 @@ class Task
$oDataset->next();
$c = 0;
$oTasks = new \Tasks();
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 1);
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 2);
$aUIDS1 = array();
foreach ($aAux as $aGroup) {
$aUIDS1[] = $aGroup['GRP_UID'];
@@ -1108,7 +1108,7 @@ class Task
$result = $groups->getAllGroup($start, $limit, $filter);
$c = 0;
$oTasks = new \Tasks();
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 1);
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 2);
$aUIDS1 = array();
foreach ($aAux as $aGroup) {
$aUIDS1[] = $aGroup['GRP_UID'];
@@ -1208,7 +1208,7 @@ class Task
$oDataset->next();
$c = 0;
$oTasks = new \Tasks();
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 1);
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 2);
$aUIDS1 = array();
foreach ($aAux as $aGroup) {
$aUIDS1[] = $aGroup['GRP_UID'];

View File

@@ -0,0 +1,75 @@
<?php
namespace Services\Api\ProcessMaker\Project;
use \ProcessMaker\Services\Api;
use \Luracast\Restler\RestException;
/**
* Project\ProcessSupervisors Api Controller
*
* @protected
*/
class ProcessSupervisors extends Api
{
/**
* @param string $prjUid {@min 32} {@max 32}
* @param string $filter
* @param int $start
* @param int $limit
*
* @url GET /:prjUid/supervisors
*/
public function doGetProjectSupervisors($prjUid, $filter = '', $start = null, $limit = null)
{
try {
$supervisor = new \BusinessModel\ProcessSupervisor();
$arrayData = $supervisor->getSupervisors($prjUid, $filter, $start, $limit);
//Response
$response = $arrayData;
} catch (\Exception $e) {
//response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
return $response;
}
/**
* @param string $prjUid {@min 32} {@max 32}
*
* @url GET /:prjUid/inputdocument-supervisor
*/
public function doGetProjectInputDocumentSupervisor($prjUid)
{
try {
$supervisor = new \BusinessModel\ProcessSupervisor();
$arrayData = $supervisor->getInputDocumentSupervisor($prjUid);
//Response
$response = $arrayData;
} catch (\Exception $e) {
//response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
return $response;
}
/**
* @param string $prjUid {@min 32} {@max 32}
*
* @url GET /:prjUid/dynaform-supervisor
*/
public function doGetProjectDynaformSupervisor($prjUid)
{
try {
$supervisor = new \BusinessModel\ProcessSupervisor();
$arrayData = $supervisor->getDynaformSupervisor($prjUid);
//Response
$response = $arrayData;
} catch (\Exception $e) {
//response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
return $response;
}
}

View File

@@ -22,6 +22,7 @@ debug = 1
event = "Services\Api\ProcessMaker\Project\Event"
input-document = "Services\Api\ProcessMaker\Project\InputDocument"
output-documents = "Services\Api\ProcessMaker\Project\OutputDocuments"
supervisors = "Services\Api\ProcessMaker\Project\ProcessSupervisors"
[alias: projects]
project = "Services\Api\ProcessMaker\Project"