/**
  * Checks to make sure all the required fields are valid for the application.
  * @param I2CE_Form $form
  */
 public function validate_form_application($form)
 {
     if ($form->felony == 1 && !I2CE_Validate::checkString($form->felony_circumstance)) {
         $form->setInvalidMessage('felony_circumstance', 'required');
     }
     if ($form->full_time == 0 && !I2CE_Validate::checkString($form->hours)) {
         $form->setInvalidMessage('hours', 'required');
     }
 }
 /**
  * Perform any extra validation for the license.
  * @param I2CE_Form $form
  */
 public function validate_form_training($form)
 {
     /**
     **Check to ensure that Level and semester are consistency
     **/
     $semester = $form->semester;
     $level = $form->academic_level;
     if ($semester[1] != 2 * $level[1] - 1 and $semester[1] != 2 * $level[1]) {
         $form->setInvalidMessage("academic_level", "Level And Semester Are Not Consistency");
         $form->setInvalidMessage("semester", "Level And Semester Are Not Consistency");
     }
     $parent_form = $form->getParent();
     $exam_types = $form->training_course_exam_type;
     //check to ensure that,each exam type selected has its assessment field
     foreach ($exam_types as $exam_type) {
         $value = $form->{$exam_type}[1];
         if ($value == "") {
             $form->setInvalidMessage($exam_type[1], ucfirst($exam_type[1]) . " Assessment Must Be Filled");
         } elseif (!is_numeric($value) or $value == 0) {
             $form->setInvalidMessage($exam_type[1], ucfirst($exam_type[1]) . " Must Be Numeric And Greater Than 0");
         } else {
             $total_assessment = $value + $total_assessment;
         }
     }
     //ensure that assessment sum up to 100
     if ($total_assessment > 100 or $total_assessment < 100) {
         foreach ($exam_types as $exam_type) {
             $form->setInvalidMessage($exam_type[1], "Assessments Must Sum Up To Hundred");
         }
     }
     //check to ensure that,no assessment is filled without being selected from exam types
     $exam_types = I2CE_FormStorage::listFields("training_course_exam_type", array("id"));
     foreach ($exam_types as $exam_type => $exam_type_array) {
         $exit = false;
         foreach ($form->training_course_exam_type as $form_exam_type) {
             if (in_array($exam_type, $form_exam_type)) {
                 $exit = true;
             }
         }
         if ($exit) {
             continue;
         }
         $value = $form->{$exam_type};
         if ($value != "") {
             $form->setInvalidMessage($exam_type, ucfirst($exam_type) . " Should Not Be Filled As It Is Not Selected From Exam Types");
         }
     }
 }
 /**
  * Checks to make sure the end date is after the start date for the person position.
  * @param I2CE_Form $form
  */
 public function validate_form_person_position($form)
 {
     if ($form->start_date->isValid() && $form->end_date->isValid()) {
         if ($form->start_date->compare($form->end_date) < 1) {
             $form->setInvalidMessage('end_date', 'bad_date');
         }
     }
 }
 /** 
  * Checks to make sure the end of applicability is after the start of applicability.
  * @param I2CE_Form $form
  */
 public function validate_form_accident($form)
 {
     if ($form->start_date->isValid() && $form->end_date->isValid()) {
         if ($form->start_date->compare($form->end_date) < 0) {
             $form->setInvalidMessage('end_date', 'bad_date');
         }
     }
 }
 /**
  * Perform extra validation for the person form.
  * A new person record needs to verify there aren't any existing 
  * records with the same name.
  * @param I2CE_Form $form
  */
 public function validate_form_person($form)
 {
     $search = array();
     $surname_ignore = false;
     if (isset($form->surname_ignore)) {
         $surname_ignore = $form->surname_ignore;
     }
     if (I2CE_ModuleFactory::instance()->isEnabled('forms-storage') && $form->getId() == '0' && !$surname_ignore && I2CE_Validate::checkString($form->surname) && I2CE_Validate::checkString($form->firstname)) {
         $where = array('operator' => 'AND', 'operand' => array(0 => array('operator' => 'FIELD_LIMIT', 'field' => 'surname', 'style' => 'lowerequals', 'data' => array('value' => strtolower($form->surname))), 1 => array('operator' => 'FIELD_LIMIT', 'field' => 'firstname', 'style' => 'lowerequals', 'data' => array('value' => strtolower($form->firstname)))));
         $results = I2CE_FormStorage::listFields('person', array('surname', 'firstname'), false, $where, array('surname', 'firstname'));
         if (count($results) > 0) {
             foreach ($results as $id => &$data) {
                 $data = implode(', ', $data);
             }
             $form->setInvalidMessage('surname', 'unique', array("view?id=" => $results));
         }
     }
 }
 /**
  * Perform any extra validation for the private practice license.
  * @param I2CE_Form $form
  */
 public function validate_form_private_practice($form)
 {
     if (I2CE_Validate::checkDate($form->end_date) && I2CE_Validate::checkDate($form->start_date)) {
         if ($form->end_date->compare($form->start_date) > -1) {
             $form->setInvalidMessage("end_date", "bad_date");
         }
     }
 }
 /**
  * Perform extra validation for the person_id form.
  * Make sure the date of issue is before the date of expiration.
  * @param I2CE_Form $form
  */
 public function validate_form_person_id($form)
 {
     if ($form->issue_date->isValid() && $form->expiration_date->isValid()) {
         if ($form->issue_date->compare($form->expiration_date) < 1) {
             $form->setInvalidMessage('expiration_date', 'bad_date');
         }
     }
     /*Validate ID Pattern, this is optional*/
     $id_number = $form->getField('id_num')->getDBValue();
     $id_type = $form->getField('id_type')->getDBValue();
     $formObj = I2CE_FormFactory::instance()->createContainer($id_type);
     $formObj->populate();
     if (($patern_field = $formObj->getField('pattern')) instanceof I2CE_FormField) {
         $pattern = $pattern_field->getValue();
         if (trim($pattern) != '') {
             $matches = array();
             preg_match($pattern, $id_number, $matches);
             if (count($matches) == 0) {
                 $form->setInvalidMessage('id_num', 'wrong_pattern');
             }
         }
     }
 }
 /**
  * Perform extra validation for the person_id form.
  * Make sure the date of issue is before the date of expiration.
  * @param I2CE_Form $form
  */
 public function validate_form_person_id($form)
 {
     if ($form->issue_date->isValid() && $form->expiration_date->isValid()) {
         if ($form->issue_date->compare($form->expiration_date) < 1) {
             $form->setInvalidMessage('expiration_date', 'bad_date');
         }
     }
 }
 /**
  * Perform any extra validation for the license.
  * @param I2CE_Form $form
  */
 public function validate_form_scheduled_training_course($form)
 {
     if (I2CE_Validate::checkDate($form->end_date) && I2CE_Validate::checkDate($form->start_date)) {
         $compare = $form->end_date->compare($form->start_date);
         if ($compare > 0) {
             $form->setInvalidMessage("end_date", 'bad_date');
         }
     }
 }