OEModule\OphCiExamination\models\Element_OphCiExamination_Diagnoses::afterValidate PHP Method

afterValidate() public method

Ensure a principal diagnosis is set for the episode.
public afterValidate ( )
    public function afterValidate()
    {
        if (count($this->diagnoses)) {
            $principal = false;
            foreach ($this->diagnoses as $diagnosis) {
                if ($diagnosis->principal) {
                    $principal = true;
                }
            }
            if (!$principal) {
                $this->addError('diagnoses', 'Principal diagnosis required.');
            }
        }
        // This isn't very nice but there isn't a clean alternative at the moment
        $controller = \Yii::app()->getController();
        if ($controller instanceof \BaseEventTypeController) {
            $et_diagnoses = \ElementType::model()->find('class_name=?', array('OEModule\\OphCiExamination\\models\\Element_OphCiExamination_Diagnoses'));
            $children = $controller->getChildElements($et_diagnoses);
            $have_further_findings = false;
            foreach ($controller->getChildElements($et_diagnoses) as $element) {
                if (\CHtml::modelName($element) == 'OEModule_OphCiExamination_models_Element_OphCiExamination_FurtherFindings') {
                    $have_further_findings = true;
                }
            }
            if (!$have_further_findings && !$this->diagnoses) {
                $this->addError('diagnoses', 'Please select at least one diagnosis.');
            }
        }
        parent::afterValidate();
    }