diff --git a/workflow/engine/src/BusinessModel/ProcessPermissions.php b/workflow/engine/src/BusinessModel/ProcessPermissions.php index c650e0774..cdd819333 100644 --- a/workflow/engine/src/BusinessModel/ProcessPermissions.php +++ b/workflow/engine/src/BusinessModel/ProcessPermissions.php @@ -166,6 +166,70 @@ class ProcessPermissions return $aObjectsPermissions; } + /** + * Save Process Permission + * + * @var array $data. Data for Process Permission + * @var string $sPermissionUid. Uid for Process Permission + * + * @access public + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + * + * @return void + */ + public function saveProcessPermission($data, $sPermissionUid = '') + { + try { + $data = array_change_key_case($data, CASE_UPPER); + + list ($iRelation, $sUserGroup) = explode( '|', $data['GROUP_USER'] ); + $sObjectUID = ''; + switch ($data['OP_OBJ_TYPE']) { + case 'ANY': + //case 'ANY_DYNAFORM':CASES_NOTES + //case 'ANY_INPUT': + //case 'ANY_OUTPUT': + $sObjectUID = ''; + break; + case 'DYNAFORM': + $sObjectUID = $data['DYNAFORMS']; + break; + case 'INPUT': + $sObjectUID = $data['INPUTS']; + break; + case 'OUTPUT': + $sObjectUID = $data['OUTPUTS']; + break; + } + $oOP = new \ObjectPermission(); + $permissionUid = ($sPermissionUid != '') ? $sPermissionUid : G::generateUniqueID(); + $aData = array ( + 'OP_UID' => $permissionUid, + 'PRO_UID' => $data['PRO_UID'], + 'TAS_UID' => $data['TAS_UID'], + 'USR_UID' => (string) $sUserGroup, + 'OP_USER_RELATION' => $iRelation, + 'OP_TASK_SOURCE' => $data['OP_TASK_SOURCE'], + 'OP_PARTICIPATE' => $data['OP_PARTICIPATE'], + 'OP_OBJ_TYPE' => $data['OP_OBJ_TYPE'], + 'OP_OBJ_UID' => $sObjectUID, + 'OP_ACTION' => $data['OP_ACTION'], + 'OP_CASE_STATUS' => $data['OP_CASE_STATUS'] + ); + $oOP->fromArray( $aData, \BasePeer::TYPE_FIELDNAME ); + if ($sPermissionUid == '') { + $oOP->save(); + $daraRes = $oOP->load($newUid); + return $daraRes; + } else { + $oOP->update($aData); + } + } catch (Exception $e) { + throw $e; + } + } + /** * Delete Process Permission * diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php index bb6c4c45f..7879911b2 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php @@ -59,6 +59,77 @@ class ProcessPermissions extends Api } } + /** + * @param string $projectUid {@min 1} {@max 32} + * @param array $request_data + * @param string $op_obj_type {@from body} {@choice ANY,DYNAFORM,INPUT,OUTPUT,CASES_NOTES,MSGS_HISTORY} + * @param string $op_participate {@from body} {@choice 0,1} + * @param string $op_action {@from body} {@choice VIEW,BLOCK,DELETE} + * @param string $op_case_status {@from body} {@choice ALL,DRAFT,TO_DO,PAUSED,COMPLETED} + * @param string $tas_uid {@from body} + * @param string $group_user {@from body} + * @param string $dynaforms {@from body} + * @param string $inputs {@from body} + * @param string $outputs {@from body} + * @param string $op_task_source {@from body} + * + * @access public + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + * + * @return array + * + * @url POST /:projectUid/process-permission/ + */ + public function doPostProcessPermission($projectUid, $request_data, $op_obj_type, $op_participate, $op_action, + $op_case_status, $tas_uid = '', $group_user = '', $dynaforms = '', $inputs = '', $outputs = '', $op_task_source = '') + { + try { + $request_data['pro_uid'] = $projectUid; + $processPermissions = new \BusinessModel\ProcessPermissions(); + $response = $processPermissions->saveProcessPermission($request_data); + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } + + /** + * @param string $projectUid {@min 1} {@max 32} + * @param string $objectPermissionUid {@min 1} {@max 32} + * @param array $request_data + * @param string $op_obj_type {@from body} {@choice ANY,DYNAFORM,INPUT,OUTPUT,CASES_NOTES,MSGS_HISTORY} + * @param string $op_participate {@from body} {@choice 0,1} + * @param string $op_action {@from body} {@choice VIEW,BLOCK,DELETE} + * @param string $op_case_status {@from body} {@choice ALL,DRAFT,TO_DO,PAUSED,COMPLETED} + * @param string $tas_uid {@from body} + * @param string $group_user {@from body} + * @param string $dynaforms {@from body} + * @param string $inputs {@from body} + * @param string $outputs {@from body} + * @param string $op_task_source {@from body} + * + * @access public + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + * + * @return array + * + * @url PUT /:projectUid/process-permission/:objectPermissionUid + */ + public function doPutProcessPermission($projectUid, $objectPermissionUid, $request_data, $op_obj_type, + $op_participate, $op_action, $op_case_status, $tas_uid = '', $group_user = '', $dynaforms = '', $inputs = '', + $outputs = '', $op_task_source = '') + { + try { + $request_data['pro_uid'] = $projectUid; + $processPermissions = new \BusinessModel\ProcessPermissions(); + $response = $processPermissions->saveProcessPermission($request_data, $objectPermissionUid); + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } /** * @param string $projectUid {@min 1} {@max 32}