setAndValidateElementsFromData() 보호된 메소드

Returns any validation errors that arise.
protected setAndValidateElementsFromData ( array $data ) : array
$data array
리턴 array $errors
예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 /**
  * 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;
 }