OEModule\OphCiExamination\models\OphCiExamination_Workflow_Rule::findWorkflow PHP Méthode

findWorkflow() public méthode

Finds the best matching workflow.
public findWorkflow ( integer $firm_id, integer $status_id ) : OphCiExamination_Workflow
$firm_id integer
$status_id integer
Résultat OphCiExamination_Workflow
    public function findWorkflow($firm_id, $status_id)
    {
        $subspecialty_id = null;
        if ($firm = \Firm::model()->findByPk($firm_id)) {
            $subspecialty_id = $firm->serviceSubspecialtyAssignment ? $firm->serviceSubspecialtyAssignment->subspecialty_id : null;
        }
        if ($rule = self::model()->find('subspecialty_id=? and firm_id=? and episode_status_id=?', array($subspecialty_id, $firm_id, $status_id))) {
            return $rule->workflow;
        }
        if ($rule = self::model()->find('subspecialty_id=? and episode_status_id=?', array($subspecialty_id, $status_id))) {
            return $rule->workflow;
        }
        if ($rule = self::model()->find('subspecialty_id=?', array($subspecialty_id))) {
            return $rule->workflow;
        }
        if ($rule = self::model()->find('subspecialty_id is null and episode_status_id is null')) {
            return $rule->workflow;
        }
        throw new \CException('Cannot find default workflow rule');
    }

Usage Example

 /**
  * @throws models\CException
  */
 protected function setCurrentSet()
 {
     if (!$this->set) {
         $firm_id = $this->firm->id;
         $status_id = $this->episode ? $this->episode->episode_status_id : 1;
         $set = models\OphCiExamination_Workflow_Rule::findWorkflow($firm_id, $status_id)->getFirstStep();
         $this->set = $set;
         $this->mandatoryElements = $set->MandatoryElementTypes;
     }
 }