Returns any validation errors that arise.
protected setAndValidateElementsFromData ( array $data ) : array | ||
$data | array | |
리턴 | array | $errors |
/** * custom validation for virtual clinic referral. * * @TODO: this should hand off validation to a faked PatientTicket request via the API. * * @param array $data * * @return array */ protected function setAndValidateElementsFromData($data) { $errors = parent::setAndValidateElementsFromData($data); if (isset($data['patientticket_queue']) && ($api = Yii::app()->moduleAPI->get('PatientTicketing'))) { $co_sid = @$data[\CHtml::modelName(models\Element_OphCiExamination_ClinicOutcome::model())]['status_id']; $status = models\OphCiExamination_ClinicOutcome_Status::model()->findByPk($co_sid); if ($status && $status->patientticket) { $err = array(); $queue = null; if (!$data['patientticket_queue']) { $err['patientticket_queue'] = 'You must select a valid Virtual Clinic for referral'; } elseif (!($queue = $api->getQueueForUserAndFirm(Yii::app()->user, $this->firm, $data['patientticket_queue']))) { $err['patientticket_queue'] = 'Virtual Clinic not found'; } if ($queue) { if (!$api->canAddPatientToQueue($this->patient, $queue)) { $err['patientticket_queue'] = 'Cannot add Patient to Queue'; } else { list($ignore, $fld_errs) = $api->extractQueueData($queue, $data, true); $err = array_merge($err, $fld_errs); } } if (count($err)) { $et_name = models\Element_OphCiExamination_ClinicOutcome::model()->getElementTypeName(); if (@$errors[$et_name]) { $errors[$et_name] = array_merge($errors[$et_name], $err); } else { $errors[$et_name] = $err; } } } } return $errors; }
/** * Custom validation for Treatment child elements. * * @param array $data * * @return array $errors */ protected function setAndValidateElementsFromData($data) { $errors = parent::setAndValidateElementsFromData($data); foreach ($this->open_elements as $element) { if ($element->elementTypeName == 'Treatment') { break; } } foreach ($this->getChildElements($element->elementType) as $child) { if ($child->hasRight() && !$element->hasRight()) { $errors[$child->elementTypeName][] = "Can't have right side without procedures on right eye"; } if ($child->hasLeft() && !$element->hasLeft()) { $errors[$child->elementTypeName][] = "Can't have left side without procedures on left eye"; } } return $errors; }
/** * If a partially completed form is submitted, some of the required elements might not be present in the submission * this extension resolves this. * * @param array $data * * @return array */ protected function setAndValidateElementsFromData($data) { $errors = parent::setAndValidateElementsFromData($data); if (!empty($errors)) { $all = $this->event_type->getDefaultElements(); $curr = $this->open_elements; $update = array(); foreach ($all as $del) { if (count($curr) && get_class($curr[0]) == get_class($del)) { $update[] = array_shift($curr); } else { $update[] = $del; } } $this->open_elements = $update; } return $errors; }