Beispiel #1
0
 /**
  * Create the application delay registry
  * @param array $aData
  * @return string
  **/
 public function create($aData)
 {
     $oConnection = Propel::getConnection(AppDelayPeer::DATABASE_NAME);
     try {
         if (isset($aData['APP_DELAY_UID']) && $aData['APP_DELAY_UID'] == '') {
             unset($aData['APP_DELAY_UID']);
         }
         if (!isset($aData['APP_DELAY_UID'])) {
             $aData['APP_DELAY_UID'] = G::generateUniqueID();
         }
         $oAppDelay = new AppDelay();
         $oAppDelay->fromArray($aData, BasePeer::TYPE_FIELDNAME);
         if ($oAppDelay->validate()) {
             $oConnection->begin();
             $iResult = $oAppDelay->save();
             $oConnection->commit();
             return $aData['APP_DELAY_UID'];
         } else {
             $sMessage = '';
             $aValidationFailures = $oAppDelay->getValidationFailures();
             foreach ($aValidationFailures as $oValidationFailure) {
                 $sMessage .= $oValidationFailure->getMessage() . '<br />';
             }
             throw new Exception('The registry cannot be created!<br />' . $sMessage);
         }
     } catch (Exception $oError) {
         $oConnection->rollback();
         throw $oError;
     }
 }
Beispiel #2
0
    $_action = isset( $_GET['action'] ) ? $_GET['action'] : '';

    //loading application data
    $aFields = $oCase->loadCase( $sAppUid, $iDelIndex );
    //  g::pr($aFields);
    //  die;
    if (!isset($_SESSION['CURRENT_TASK'])) {
      $_SESSION['CURRENT_TASK'] = $aFields['TAS_UID'];
    } else if ($_SESSION['CURRENT_TASK'] == '') {
      $_SESSION['CURRENT_TASK'] = $aFields['TAS_UID'];
    }
    switch ($aFields['APP_STATUS']) {
        case 'DRAFT':
        case 'TO_DO':
            //check if the case is in pause, check a valid record in table APP_DELAY
            if (AppDelay::isPaused( $sAppUid, $iDelIndex )) {
                //the case is paused show only the resume
                $_SESSION['APPLICATION'] = $sAppUid;
                $_SESSION['INDEX'] = $iDelIndex;
                $_SESSION['PROCESS'] = $aFields['PRO_UID'];
                $_SESSION['TASK'] = - 1;
                $_SESSION['STEP_POSITION'] = 0;
                $_SESSION['CURRENT_TASK'] = $aFields['TAS_UID'];

                require_once (PATH_METHODS . 'cases' . PATH_SEP . 'cases_Resume.php');
                exit();
            }

            /**
             * these routine is to verify if the case was acceded from advanced search list
             */
Beispiel #3
0
    /**

     * Obtain all user permits for Dynaforms, Input and output documents from some action [VIEW, BLOCK, etc...]

     *

     * function getAllObjectsFrom ($PRO_UID, $APP_UID, $TAS_UID, $USR_UID, $ACTION)

     * @author Erik Amaru Ortiz <*****@*****.**>

     * @access public

     * @param  Process ID, Application ID, Task ID, User ID, Action, Delegation index

     * @return Array within all user permitions all objects' types

     */

    public function getAllObjectsFrom($PRO_UID, $APP_UID, $TAS_UID = "", $USR_UID = "", $ACTION = "", $delIndex = 0)

    {

        $aCase = $this->loadCase($APP_UID);



        if ($delIndex != 0) {

            $appDelay = new AppDelay();



            if ($appDelay->isPaused($APP_UID, $delIndex)) {

                $aCase["APP_STATUS"] = "PAUSED";

            }

        }



        $USER_PERMISSIONS = Array();

        $GROUP_PERMISSIONS = Array();

        $RESULT = Array(

            "DYNAFORM" => Array(),

            "INPUT" => Array(),

            "OUTPUT" => Array(),

            "CASES_NOTES" => 0,

            "MSGS_HISTORY" => Array()

        	/*----------------------------------********---------------------------------*/

        );



        //permissions per user

        $oCriteria = new Criteria('workflow');

        $oCriteria->add(

                $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, $USR_UID)->addOr(

                        $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '')->addOr(

                                $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '0')

                        )

                )

        );

        $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);

        $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);

        $oCriteria->add(

                $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(

                        $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(

                                $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')

                        )

                )

        );



        $rs = ObjectPermissionPeer::doSelectRS($oCriteria);

        $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);



        while ($rs->next()) {

            $row = $rs->getRow();



            if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||

                $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]

            ) {

                array_push($USER_PERMISSIONS, $row);

            }

        }



        //permissions per group

        G::loadClass('groups');



        $gr = new Groups();

        $records = $gr->getActiveGroupsForAnUser($USR_UID);



        foreach ($records as $group) {

            $oCriteria = new Criteria('workflow');

            $oCriteria->add(ObjectPermissionPeer::USR_UID, $group);

            $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);

            $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);

            $oCriteria->add(

                    $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(

                            $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(

                                    $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')

                            )

                    )

            );



            $rs = ObjectPermissionPeer::doSelectRS($oCriteria);

            $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);

            while ($rs->next()) {

                $row = $rs->getRow();



                if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||

                    $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]

                ) {

                    array_push($GROUP_PERMISSIONS, $row);

                }

            }

        }



        $PERMISSIONS = array_merge($USER_PERMISSIONS, $GROUP_PERMISSIONS);



        foreach ($PERMISSIONS as $row) {

            $USER = $row['USR_UID'];

            $USER_RELATION = $row['OP_USER_RELATION'];

            $TASK_SOURCE = $row['OP_TASK_SOURCE'];

            $PARTICIPATE = $row['OP_PARTICIPATE'];

            $O_TYPE = $row['OP_OBJ_TYPE'];

            $O_UID = $row['OP_OBJ_UID'];

            $ACTION = $row['OP_ACTION'];

            $CASE_STATUS = $row['OP_CASE_STATUS'];



            // here!,. we should verify $PARTICIPATE

            $sw_participate = false; // must be false for default

            if (($row['OP_CASE_STATUS'] != 'COMPLETED') && ($row['OP_CASE_STATUS'] != '') && ($row['OP_CASE_STATUS'] != '0')) {

                if ($PARTICIPATE == 1) {

                    $oCriteriax = new Criteria('workflow');

                    $oCriteriax->add(AppDelegationPeer::USR_UID, $USR_UID);

                    $oCriteriax->add(AppDelegationPeer::APP_UID, $APP_UID);



                    if (AppDelegationPeer::doCount($oCriteriax) == 0) {

                        $sw_participate = true;

                    }

                }

            }

            if (!$sw_participate) {

                switch ($O_TYPE) {

                    case 'ANY':

                        //for dynaforms

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                        $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);

                        $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');

                        $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);

                        $oCriteria->setDistinct();



                        $oDataset = DynaformPeer::doSelectRS($oCriteria);

                        $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                        $oDataset->next();



                        while ($aRow = $oDataset->getRow()) {

                            if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {

                                array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);

                            }

                            $oDataset->next();

                        }



                        //InputDocuments and OutputDocuments

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);



                        $arrayCondition = array();

                        $arrayCondition[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::EQUAL);

                        $arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);

                        $oCriteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);



                        $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                        $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        $oCriteria->add(

                                $oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'INPUT')->

                                        addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'))->

                                        addOr($oCriteria->

                                                getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))

                        );



                        $oDataset = AppDelegationPeer::doSelectRS($oCriteria);

                        $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);



                        while ($oDataset->next()) {

                            $aRow = $oDataset->getRow();



                            if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {

                                $aRow['APP_DOC_TYPE'] = "INPUT";

                            }

                            if (!in_array($aRow['APP_DOC_UID'], $RESULT[$aRow['APP_DOC_TYPE']])) {

                                array_push($RESULT[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);

                            }

                        }



                        $RESULT['CASES_NOTES'] = 1;

                        /*----------------------------------********---------------------------------*/



                        // Message History

                        $RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);



                        $arrayDelIndex = array();



                        $oCriteria = new Criteria('workflow');

                        if ($USER_RELATION == 1) {

                            //Users

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

                            $oCriteria->add(AppDelegationPeer::USR_UID, $USER);



                            $oDataset = AppDelegationPeer::doSelectRS($oCriteria);

                            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                            $oDataset->next();

                            while ($aRow = $oDataset->getRow()) {

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        } else {

                            //Groups

                            $oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);

                            $oCriteria->add(GroupUserPeer::GRP_UID, $USER);

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }



                            $oDataset = AppDelegationPeer::doSelectRS($oCriteria);

                            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                            $oDataset->next();

                            while ($aRow = $oDataset->getRow()) {

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        }

                        $RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);

                        break;

                    case 'DYNAFORM':

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0") {

                                $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        if ($O_UID != '' && $O_UID != '0') {

                            $oCriteria->add(DynaformPeer::DYN_UID, $O_UID);

                        }

                        $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);

                        $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);

                        $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');

                        $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);

                        $oCriteria->setDistinct();



                        $oDataset = DynaformPeer::doSelectRS($oCriteria);

                        $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                        $oDataset->next();



                        while ($aRow = $oDataset->getRow()) {

                            if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {

                                array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);

                            }

                            $oDataset->next();

                        }

                        break;

                    case 'INPUT':

                    case 'OUTPUT':

                        if ($row['OP_OBJ_TYPE'] == 'INPUT') {

                            $obj_type = 'INPUT';

                        } else {

                            $obj_type = 'OUTPUT';

                        }

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);

                        $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                        $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        if ($O_UID != '' && $O_UID != '0') {

                            $oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);

                        }

                        if ($obj_type == 'INPUT') {

                            $oCriteria->add(

                                    $oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, $obj_type)->

                                            addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))

                            );

                        } else {

                            $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, $obj_type);

                        }



                        $aConditions = Array();

                        $aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);

                        $aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);

                        $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);



                        $oDataset = AppDocumentPeer::doSelectRS($oCriteria);

                        $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                        $oDataset->next();

                        while ($aRow = $oDataset->getRow()) {

                            if (!in_array($aRow['APP_DOC_UID'], $RESULT[$obj_type])) {

                                array_push($RESULT[$obj_type], $aRow['APP_DOC_UID']);

                            }

                            $oDataset->next();

                        }

                        if ($obj_type == 'INPUT') {

                            // For supervisor documents

                            $oCriteria = new Criteria('workflow');

                            $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                            $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);

                            $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(ApplicationPeer::PRO_UID, $PRO_UID);

                            if ($O_UID != '' && $O_UID != '0') {

                                $oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);

                            }

                            $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'INPUT');

                            $oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000);



                            $oCriteria->addJoin(ApplicationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::LEFT_JOIN);



                            $oDataset = AppDocumentPeer::doSelectRS($oCriteria);

                            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                            $oDataset->next();

                            while ($aRow = $oDataset->getRow()) {

                                if (!in_array($aRow['APP_DOC_UID'], $RESULT['INPUT'])) {

                                    array_push($RESULT['INPUT'], $aRow['APP_DOC_UID']);

                                }

                                $oDataset->next();

                            }

                        }

                        break;

                    case 'CASES_NOTES':

                        $RESULT['CASES_NOTES'] = 1;

                        break;

                    /*----------------------------------********---------------------------------*/

                    case 'MSGS_HISTORY':

                        // Permission

                        $RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);

                        $arrayDelIndex = array();

                        $oCriteria = new Criteria('workflow');

                        if ($USER_RELATION == 1) {

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

                            $oCriteria->add(AppDelegationPeer::USR_UID, $USER);

                            $oDataset = AppDelegationPeer::doSelectRS($oCriteria);

                            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                            $oDataset->next();

                            while ($aRow = $oDataset->getRow()) {

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        } else {

                            //Groups

                            $oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);

                            $oCriteria->add(GroupUserPeer::GRP_UID, $USER);

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

                            $oDataset = AppDelegationPeer::doSelectRS($oCriteria);

                            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

                            $oDataset->next();

                            while ($aRow = $oDataset->getRow()) {

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        }

                        $RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);

                        break;



                }

            }

        }

        return Array(

            "DYNAFORMS" => $RESULT['DYNAFORM'],

            "INPUT_DOCUMENTS" => $RESULT['INPUT'],

            "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'],

            "CASES_NOTES" => $RESULT['CASES_NOTES'],

            "MSGS_HISTORY" => $RESULT['MSGS_HISTORY']

        	/*----------------------------------********---------------------------------*/

        );

    }
 public function getActionOptions()
 {
     $APP_UID = $_SESSION['APPLICATION'];
     $c = new Criteria('workflow');
     $c->clearSelectColumns();
     $c->addSelectColumn(AppThreadPeer::APP_THREAD_PARENT);
     $c->add(AppThreadPeer::APP_UID, $APP_UID);
     $c->add(AppThreadPeer::APP_THREAD_STATUS, 'OPEN');
     $cant = AppThreadPeer::doCount($c);
     $oCase = new Cases();
     $aFields = $oCase->loadCase($_SESSION['APPLICATION'], $_SESSION['INDEX']);
     global $RBAC;
     $options = array();
     switch ($aFields['APP_STATUS']) {
         case 'DRAFT':
             if (!AppDelay::isPaused($_SESSION['APPLICATION'], $_SESSION['INDEX'])) {
                 $options[] = array('text' => G::LoadTranslation('ID_PAUSED_CASE'), 'fn' => 'setUnpauseCaseDate');
             } else {
                 $options[] = array('text' => G::LoadTranslation('ID_UNPAUSE'), 'fn' => 'unpauseCase');
             }
             $options[] = array('text' => G::LoadTranslation('ID_DELETE'), 'fn' => 'deleteCase');
             if ($RBAC->userCanAccess('PM_REASSIGNCASE') == 1) {
                 $options[] = array('text' => G::LoadTranslation('ID_REASSIGN'), 'fn' => 'getUsersToReassign');
             }
             break;
         case 'TO_DO':
             if (!AppDelay::isPaused($_SESSION['APPLICATION'], $_SESSION['INDEX'])) {
                 $options[] = array('text' => G::LoadTranslation('ID_PAUSED_CASE'), 'fn' => 'setUnpauseCaseDate');
                 if ($cant == 1) {
                     if ($RBAC->userCanAccess('PM_CANCELCASE') == 1) {
                         $options[] = array('text' => G::LoadTranslation('ID_CANCEL'), 'fn' => 'cancelCase');
                     } else {
                         $options[] = array('text' => G::LoadTranslation('ID_CANCEL'), 'fn' => 'cancelCase', 'hide' => 'hiden');
                     }
                 }
             } else {
                 $options[] = array('text' => G::LoadTranslation('ID_UNPAUSE'), 'fn' => 'unpauseCase');
             }
             if ($RBAC->userCanAccess('PM_REASSIGNCASE') == 1) {
                 $options[] = array('text' => G::LoadTranslation('ID_REASSIGN'), 'fn' => 'getUsersToReassign');
             }
             break;
         case 'CANCELLED':
             $options[] = array('text' => G::LoadTranslation('ID_REACTIVATE'), 'fn' => 'reactivateCase');
             break;
     }
     if ($_SESSION['TASK'] != '-1') {
         $oTask = new Task();
         $aTask = $oTask->load($_SESSION['TASK']);
         if ($aTask['TAS_TYPE'] == 'ADHOC') {
             $options[] = array('text' => G::LoadTranslation('ID_ADHOC_ASSIGNMENT'), 'fn' => 'adhocAssignmentUsers');
         }
     }
     return $options;
 }
 public function reassignCase($sApplicationUID, $iDelegation, $sUserUID, $newUserUID, $sType = 'REASSIGN')
 {
     $this->CloseCurrentDelegation($sApplicationUID, $iDelegation);
     $oAppDelegation = new AppDelegation();
     $aFieldsDel = $oAppDelegation->Load($sApplicationUID, $iDelegation);
     $iIndex = $oAppDelegation->createAppDelegation($aFieldsDel['PRO_UID'], $aFieldsDel['APP_UID'], $aFieldsDel['TAS_UID'], $aFieldsDel['USR_UID'], $aFieldsDel['DEL_THREAD']);
     $aData = array();
     $aData['APP_UID'] = $aFieldsDel['APP_UID'];
     $aData['DEL_INDEX'] = $iIndex;
     $aData['DEL_PREVIOUS'] = $aFieldsDel['DEL_PREVIOUS'];
     $aData['DEL_TYPE'] = $aFieldsDel['DEL_TYPE'];
     $aData['DEL_PRIORITY'] = $aFieldsDel['DEL_PRIORITY'];
     $aData['DEL_DELEGATE_DATE'] = $aFieldsDel['DEL_DELEGATE_DATE'];
     $aData['USR_UID'] = $newUserUID;
     $aData['DEL_INIT_DATE'] = null;
     $aData['DEL_FINISH_DATE'] = null;
     $oAppDelegation->update($aData);
     $oAppThread = new AppThread();
     $oAppThread->update(array('APP_UID' => $sApplicationUID, 'APP_THREAD_INDEX' => $aFieldsDel['DEL_THREAD'], 'DEL_INDEX' => $iIndex));
     //Save in APP_DELAY
     $oApplication = new Application();
     $aFields = $oApplication->Load($sApplicationUID);
     $aData['PRO_UID'] = $aFieldsDel['PRO_UID'];
     $aData['APP_UID'] = $sApplicationUID;
     $aData['APP_THREAD_INDEX'] = $aFieldsDel['DEL_THREAD'];
     $aData['APP_DEL_INDEX'] = $iDelegation;
     $aData['APP_TYPE'] = $sType != '' ? $sType : 'REASSIGN';
     $aData['APP_STATUS'] = $aFields['APP_STATUS'];
     $aData['APP_DELEGATION_USER'] = $sUserUID;
     $aData['APP_ENABLE_ACTION_USER'] = $sUserUID;
     $aData['APP_ENABLE_ACTION_DATE'] = date('Y-m-d H:i:s');
     $oAppDelay = new AppDelay();
     $oAppDelay->create($aData);
     //update searchindex
     if ($this->appSolr != null) {
         $this->appSolr->updateApplicationSearchIndex($sApplicationUID);
     }
     $this->getExecuteTriggerProcess($sApplicationUID, 'REASSIGNED');
     return true;
 }
Beispiel #6
0
    /**
     * Put unpause case
     *
     * @access public
     * @param string $app_uid , Uid for case
     * @param string $usr_uid , Uid for user
     * @param bool|string $del_index , Index for case
     *
     * @author Brayan Pereyra (Cochalo) <*****@*****.**>
     * @copyright Colosa - Bolivia
     */
    public function putUnpauseCase($app_uid, $usr_uid, $del_index = false)
    {
        Validator::isString($app_uid, '$app_uid');
        Validator::isString($usr_uid, '$usr_uid');

        Validator::appUid($app_uid, '$app_uid');
        Validator::usrUid($usr_uid, '$usr_uid');

        if ($del_index === false) {
            $del_index = \AppDelegation::getCurrentIndex($app_uid);
        }
        Validator::isInteger($del_index, '$del_index');

        $oDelay = new \AppDelay();

        if (!$oDelay->isPaused($app_uid, $del_index)) {
            throw (new \Exception(\G::LoadTranslation("ID_CASE_NOT_PAUSED", array($app_uid))));
        }

        $appCacheView = new \AppCacheView();

        $arrayProcess = $appCacheView->getProUidSupervisor($usr_uid);

        $criteria = new \Criteria("workflow");
        $criteria->addSelectColumn(\AppDelegationPeer::APP_UID);
        $criteria->add(\AppDelegationPeer::APP_UID, $app_uid, \Criteria::EQUAL);
        $criteria->add(\AppDelegationPeer::DEL_INDEX, $del_index, \Criteria::EQUAL);
        $criteria->add(
            $criteria->getNewCriterion(\AppDelegationPeer::USR_UID, $usr_uid, \Criteria::EQUAL)->addOr(
            $criteria->getNewCriterion(\AppDelegationPeer::PRO_UID, $arrayProcess, \Criteria::IN))
        );

        $rsCriteria = \AppDelegationPeer::doSelectRS($criteria);

        if (!$rsCriteria->next()) {
            throw (new \Exception(\G::LoadTranslation("ID_CASE_USER_INVALID_UNPAUSE_CASE", array($usr_uid))));
        }

        $case = new \Cases();
        $case->unpauseCase( $app_uid, $del_index, $usr_uid );
    }
Beispiel #7
0
    /**
     * Put unpause case
     *
     * @access public
     * @param string $app_uid , Uid for case
     * @param string $usr_uid , Uid for user
     * @param bool|string $del_index , Index for case
     *
     * @author Brayan Pereyra (Cochalo) <*****@*****.**>
     * @copyright Colosa - Bolivia
     */
    public function putUnpauseCase($app_uid, $usr_uid, $del_index = false)
    {
        Validator::isString($app_uid, '$app_uid');
        Validator::isString($usr_uid, '$usr_uid');

        Validator::appUid($app_uid, '$app_uid');
        Validator::usrUid($usr_uid, '$usr_uid');

        if ($del_index === false) {
            $del_index = \AppDelegation::getCurrentIndex($app_uid);
        }
        Validator::isInteger($del_index, '$del_index');

        $oDelay = new \AppDelay();

        if (!$oDelay->isPaused($app_uid, $del_index)) {
            throw (new \Exception(\G::LoadTranslation("ID_CASE_NOT_PAUSED", array($app_uid))));
        }

        $case = new \Cases();
        $case->unpauseCase( $app_uid, $del_index, $usr_uid );
    }