Example #1
0
 public function toCalculateTime($aData, $iDate = null)
 {
     G::LoadClass('calendar');
     $oCalendar = new calendar();
     $iDate = isset($iDate) ? $iDate : date('Y-m-d H:i:s');
     $estimatedDuration = $aData['EVN_TAS_ESTIMATED_DURATION'];
     //task duration
     $when = $aData['EVN_WHEN'];
     //how many days
     $whenOccurs = $aData['EVN_WHEN_OCCURS'];
     //time on action (AFTER_TIME/TASK_STARTED)
     if ($oCalendar->pmCalendarUid == '') {
         $oCalendar->getCalendar(null, $aData['PRO_UID'], $aData['TAS_UID']);
         $oCalendar->getCalendarData();
     }
     if ($whenOccurs == 'TASK_STARTED') {
         $calculatedDueDateA = $oCalendar->calculateDate($iDate, $when, 'days');
         $sActionDate = date('Y-m-d H:i:s', $calculatedDueDateA['DUE_DATE_SECONDS']);
     } else {
         $calculatedDueDateA = $oCalendar->calculateDate($iDate, $estimatedDuration + $when, 'days');
         $sActionDate = date('Y-m-d H:i:s', $calculatedDueDateA['DUE_DATE_SECONDS']);
     }
     return $sActionDate;
 }
 public function calculateDueDate($sNextTasParam)
 {
     //Get Task properties
     $task = TaskPeer::retrieveByPK($this->getTasUid());
     $aData['TAS_UID'] = $this->getTasUid();
     //Added to allow User defined Timing Control at Run time from Derivation screen
     if (isset($sNextTasParam['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY']) && $sNextTasParam['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY'] == 'true') {
         $aData['TAS_DURATION'] = $sNextTasParam['NEXT_TASK']['TAS_DURATION'];
         $aData['TAS_TIMEUNIT'] = $sNextTasParam['NEXT_TASK']['TAS_TIMEUNIT'];
         $aData['TAS_TYPE_DAY'] = $sNextTasParam['NEXT_TASK']['TAS_TYPE_DAY'];
         if (isset($sNextTasParam['NEXT_TASK']['TAS_CALENDAR']) && $sNextTasParam['NEXT_TASK']['TAS_CALENDAR'] != '') {
             $aCalendarUID = $sNextTasParam['NEXT_TASK']['TAS_CALENDAR'];
         } else {
             $aCalendarUID = '';
         }
         //Updating the task Table , so that user will see updated values in the assign screen in consequent cases
         $oTask = new Task();
         $oTask->update($aData);
     } else {
         if (is_null($task)) {
             return 0;
         }
         $aData['TAS_DURATION'] = $task->getTasDuration();
         $aData['TAS_TIMEUNIT'] = $task->getTasTimeUnit();
         $aData['TAS_TYPE_DAY'] = $task->getTasTypeDay();
         $aCalendarUID = '';
     }
     //use the dates class to calculate dates
     $calendar = new calendar();
     if ($calendar->pmCalendarUid == '') {
         $calendar->getCalendar(null, $task->getProUid(), $aData['TAS_UID']);
         $calendar->getCalendarData();
     }
     $iDueDate = $calendar->calculateDate($this->getDelDelegateDate(), $aData['TAS_DURATION'], $aData['TAS_TIMEUNIT']);
     return $iDueDate;
 }
Example #3
0
function executeCaseSelfService()

{

    try {

        global $sFilter;



        if ($sFilter != "" && strpos($sFilter, "unassigned-case") === false) {

            return false;

        }



        $criteria = new Criteria("workflow");



        //SELECT

        $criteria->addSelectColumn(AppCacheViewPeer::APP_UID);

        $criteria->addSelectColumn(AppCacheViewPeer::DEL_INDEX);

        $criteria->addSelectColumn(AppCacheViewPeer::DEL_DELEGATE_DATE);

        $criteria->addSelectColumn(AppCacheViewPeer::APP_NUMBER);

        $criteria->addSelectColumn(AppCacheViewPeer::PRO_UID);

        $criteria->addSelectColumn(TaskPeer::TAS_UID);

        $criteria->addSelectColumn(TaskPeer::TAS_SELFSERVICE_TIME);

        $criteria->addSelectColumn(TaskPeer::TAS_SELFSERVICE_TIME_UNIT);

        $criteria->addSelectColumn(TaskPeer::TAS_SELFSERVICE_TRIGGER_UID);

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



        //FROM

        $condition = array();

        $condition[] = array(AppCacheViewPeer::TAS_UID, TaskPeer::TAS_UID);

        $condition[] = array(TaskPeer::TAS_SELFSERVICE_TIMEOUT, 1);

        $criteria->addJoinMC($condition, Criteria::LEFT_JOIN);



        //WHERE

        $criteria->add(AppCacheViewPeer::USR_UID, "");

        $criteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, "OPEN");



        //QUERY

        $rsCriteria = AppCacheViewPeer::doSelectRS($criteria);

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



        setExecutionMessage("Unassigned case");

        saveLog("unassignedCase", "action", "Unassigned case", "c");



        $calendar = new calendar();



        while ($rsCriteria->next()) {



            $row = $rsCriteria->getRow();

			$flag = false;



            $appcacheAppUid   = $row["APP_UID"];

            $appcacheDelIndex = $row["DEL_INDEX"];

            $appcacheDelDelegateDate = $row["DEL_DELEGATE_DATE"];

            $appcacheAppNumber = $row["APP_NUMBER"];

            $appcacheProUid    = $row["PRO_UID"];

            $taskUid = $row["TAS_UID"];

            $taskSelfServiceTime = intval($row["TAS_SELFSERVICE_TIME"]);

            $taskSelfServiceTimeUnit = $row["TAS_SELFSERVICE_TIME_UNIT"];

            $taskSelfServiceTriggerUid = $row["TAS_SELFSERVICE_TRIGGER_UID"];

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



            if ($calendar->pmCalendarUid == '') {

            	$calendar->getCalendar(null, $appcacheProUid, $taskUid);

            	$calendar->getCalendarData();

            }



            $dueDate = $calendar->calculateDate(

                $appcacheDelDelegateDate,

                $taskSelfServiceTime,

                $taskSelfServiceTimeUnit //HOURS|DAYS|MINUTES

                //1

            );



            if (time() > $dueDate["DUE_DATE_SECONDS"] && $flag == false) {

                $sessProcess = null;

                $sessProcessSw = 0;



                //Load data

                $case = new Cases();

                $appFields = $case->loadCase($appcacheAppUid);



                $appFields["APP_DATA"]["APPLICATION"] = $appcacheAppUid;



                if (isset($_SESSION["PROCESS"])) {

                    $sessProcess = $_SESSION["PROCESS"];

                    $sessProcessSw = 1;

                }



                $_SESSION["PROCESS"] = $appFields["PRO_UID"];



                //Execute trigger

                $criteriaTgr = new Criteria();

                $criteriaTgr->add(TriggersPeer::TRI_UID, $taskSelfServiceTriggerUid);



                $rsCriteriaTgr = TriggersPeer::doSelectRS($criteriaTgr);

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



                if ($rsCriteriaTgr->next()) {

                    $row = $rsCriteriaTgr->getRow();



                    if (is_array($row) && $row["TRI_TYPE"] == "SCRIPT") {



                        $arrayCron = unserialize(trim(@file_get_contents(PATH_DATA . "cron")));

                        $arrayCron["processcTimeProcess"] = 60; //Minutes

                        $arrayCron["processcTimeStart"]   = time();

                        @file_put_contents(PATH_DATA . "cron", serialize($arrayCron));



                        //Trigger

                        global $oPMScript;



                        $oPMScript = new PMScript();

                        $oPMScript->setFields($appFields["APP_DATA"]);

                        $oPMScript->setScript($row["TRI_WEBBOT"]);

                        $oPMScript->execute();



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

                        $appFields["APP_DATA"] = array_merge($appFields["APP_DATA"], $oPMScript->aFields);



                        unset($appFields['APP_STATUS']);

                        unset($appFields['APP_PROC_STATUS']);

                        unset($appFields['APP_PROC_CODE']);

                        unset($appFields['APP_PIN']);

                        $case->updateCase($appFields["APP_UID"], $appFields);



                        saveLog("unassignedCase", "action", "OK Executed tigger to the case $appcacheAppNumber");

                    }

                }



                unset($_SESSION["PROCESS"]);



                if ($sessProcessSw == 1) {

                    $_SESSION["PROCESS"] = $sessProcess;

                }

            }

        }



        setExecutionResultMessage("DONE");

    } catch (Exception $e) {

        setExecutionResultMessage("WITH ERRORS", "error");

        eprintln("  '-" . $e->getMessage(), "red");

        saveLog("unassignedCase", "error", "Error in unassigned case: " . $e->getMessage());

    }

}