Example #1
0
    public function cancelCase($sApplicationUID, $iIndex, $user_logged)

    {

        $this->getExecuteTriggerProcess($sApplicationUID, 'CANCELED');



        $oApplication = new Application();

        $aFields = $oApplication->load($sApplicationUID);

        $appStatusCurrent = $aFields['APP_STATUS'];

        $oCriteria = new Criteria('workflow');

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

        $oCriteria->add(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL);

        if (AppDelegationPeer::doCount($oCriteria) == 1) {

            $aFields['APP_STATUS'] = 'CANCELLED';

            $oApplication->update($aFields);



            G::LoadClass('reportTables');

            require_once 'classes/model/AdditionalTables.php';

            $oReportTables = new ReportTables();

            $addtionalTables = new additionalTables();

            $oReportTables->updateTables($aFields['PRO_UID'], $aFields['APP_UID'], $aFields['APP_NUMBER'], $aFields['APP_DATA']);

            $addtionalTables->updateReportTables($aFields['PRO_UID'], $aFields['APP_UID'], $aFields['APP_NUMBER'], $aFields['APP_DATA'], $aFields['APP_STATUS']);

        }

        $this->CloseCurrentDelegation($sApplicationUID, $iIndex);

        $oAppDel = new AppDelegation();

        $oAppDel->Load($sApplicationUID, $iIndex);

        $aAppDel = $oAppDel->toArray(BasePeer::TYPE_FIELDNAME);

        $this->closeAppThread($sApplicationUID, $aAppDel['DEL_THREAD']);



        $delay = new AppDelay();

        $array['PRO_UID'] = $aFields['PRO_UID'];

        $array['APP_UID'] = $sApplicationUID;



        $c = new Criteria('workflow');

        $c->clearSelectColumns();

        $c->addSelectColumn(AppThreadPeer::APP_THREAD_INDEX);

        $c->add(AppThreadPeer::APP_UID, $sApplicationUID);

        $c->add(AppThreadPeer::DEL_INDEX, $iIndex);

        $oDataset = AppThreadPeer::doSelectRS($c);

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

        $oDataset->next();

        $aRow = $oDataset->getRow();

        $array['APP_THREAD_INDEX'] = $aRow['APP_THREAD_INDEX'];

        $array['APP_DEL_INDEX'] = $iIndex;

        $array['APP_TYPE'] = 'CANCEL';



        $c = new Criteria('workflow');

        $c->clearSelectColumns();

        $c->addSelectColumn(ApplicationPeer::APP_STATUS);

        $c->add(ApplicationPeer::APP_UID, $sApplicationUID);

        $oDataset = ApplicationPeer::doSelectRS($c);

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

        $oDataset->next();

        $aRow1 = $oDataset->getRow();

        $array['APP_STATUS'] = $aRow1['APP_STATUS'];



        $array['APP_DELEGATION_USER'] = $user_logged;

        $array['APP_ENABLE_ACTION_USER'] = $user_logged;

        $array['APP_ENABLE_ACTION_DATE'] = date('Y-m-d H:i:s');

        $delay->create($array);



        //Before cancel a case verify if is a child case

        $oCriteria2 = new Criteria('workflow');

        $oCriteria2->add(SubApplicationPeer::APP_UID, $sApplicationUID);

        $oCriteria2->add(SubApplicationPeer::SA_STATUS, 'ACTIVE');

        if (SubApplicationPeer::doCount($oCriteria2) > 0) {

            G::LoadClass('derivation');

            $oDerivation = new Derivation();

            $oDerivation->verifyIsCaseChild($sApplicationUID, $iIndex);

        }



        //update searchindex

        if ($this->appSolr != null) {

            $this->appSolr->updateApplicationSearchIndex($sApplicationUID);

        }

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

    }
Example #2
0
 public function updateCase($sAppUid, $Fields = array())
 {
     try {
         $aApplicationFields = $Fields['APP_DATA'];
         $Fields['APP_UID'] = $sAppUid;
         $Fields['APP_UPDATE_DATE'] = 'now';
         $Fields['APP_DATA'] = serialize($Fields['APP_DATA']);
         /*
         $oApp = new Application;
         $appFields = $oApp->load($sAppUid);
         */
         $oApp = ApplicationPeer::retrieveByPk($sAppUid);
         $appFields = $oApp->toArray(BasePeer::TYPE_FIELDNAME);
         if (isset($Fields['APP_TITLE'])) {
             $appFields['APP_TITLE'] = $Fields['APP_TITLE'];
         }
         if (isset($Fields['APP_DESCRIPTION'])) {
             $appFields['APP_DESCRIPTION'] = $Fields['APP_DESCRIPTION'];
         }
         $newValues = $this->newRefreshCaseTitleAndDescription($sAppUid, $appFields, $aApplicationFields);
         //Start: Save History --By JHL
         if (isset($Fields['CURRENT_DYNAFORM'])) {
             //only when that variable is set.. from Save
             $FieldsBefore = $this->loadCase($sAppUid);
             $FieldsDifference = $this->arrayRecursiveDiff($FieldsBefore['APP_DATA'], $aApplicationFields);
             $fieldsOnBoth = array_intersect_assoc($FieldsBefore['APP_DATA'], $aApplicationFields);
             //Add fields that weren't in previous version
             foreach ($aApplicationFields as $key => $value) {
                 if (!isset($fieldsOnBoth[$key])) {
                     $FieldsDifference[$key] = $value;
                 }
             }
             if (is_array($FieldsDifference) && count($FieldsDifference) > 0) {
                 //There are changes
                 $appHistory = new AppHistory();
                 $aFieldsHistory = $Fields;
                 $aFieldsHistory['APP_DATA'] = serialize($FieldsDifference);
                 $appHistory->insertHistory($aFieldsHistory);
             }
         }
         //End Save History
         //we are removing the app_title and app_description from this array,
         //because they already be updated in  newRefreshCaseTitleAndDescription function
         if (isset($Fields['APP_TITLE'])) {
             unset($Fields['APP_TITLE']);
         }
         if (isset($Fields['APP_DESCRIPTION'])) {
             unset($Fields['APP_DESCRIPTION']);
         }
         $oApp->update($Fields);
         $DEL_INDEX = isset($Fields['DEL_INDEX']) ? $Fields['DEL_INDEX'] : '';
         $TAS_UID = isset($Fields['TAS_UID']) ? $Fields['TAS_UID'] : '';
         G::LoadClass('reportTables');
         require_once 'classes/model/AdditionalTables.php';
         $oReportTables = new ReportTables();
         $addtionalTables = new additionalTables();
         $oReportTables->updateTables($appFields['PRO_UID'], $sAppUid, $Fields['APP_NUMBER'], $aApplicationFields);
         $addtionalTables->updateReportTables($appFields['PRO_UID'], $sAppUid, $Fields['APP_NUMBER'], $aApplicationFields);
         //now update the priority in appdelegation table, using the defined variable in task
         if (trim($DEL_INDEX) != '' && trim($TAS_UID) != '') {
             //optimized code to avoid load task content row.
             $c = new Criteria();
             $c->clearSelectColumns();
             $c->addSelectColumn(TaskPeer::TAS_PRIORITY_VARIABLE);
             $c->add(TaskPeer::TAS_UID, $TAS_UID);
             $rs = TaskPeer::doSelectRS($c);
             $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
             $rs->next();
             $row = $rs->getRow();
             $VAR_PRI = substr($row['TAS_PRIORITY_VARIABLE'], 2);
             //end optimized code.
             $x = unserialize($Fields['APP_DATA']);
             if (isset($x[$VAR_PRI])) {
                 if (trim($x[$VAR_PRI]) != '') {
                     $oDel = new AppDelegation();
                     $array = array();
                     $array['APP_UID'] = $sAppUid;
                     $array['DEL_INDEX'] = $DEL_INDEX;
                     $array['TAS_UID'] = $TAS_UID;
                     $array['DEL_PRIORITY'] = isset($x[$VAR_PRI]) ? $x[$VAR_PRI] >= 1 && $x[$VAR_PRI] <= 5 ? $x[$VAR_PRI] : '3' : '3';
                     $oDel->update($array);
                 }
             }
         }
         //Update Solr Index
         if ($this->appSolr != null) {
             $this->appSolr->updateApplicationSearchIndex($sAppUid);
         }
         return $Fields;
     } catch (exception $e) {
         throw $e;
     }
 }