Fix search date range for Cases.
authorSaurabh Batra <saurabh.batra96@gmail.com>
Fri, 4 Mar 2016 07:58:36 +0000 (13:28 +0530)
committerSaurabh Batra <saurabh.batra96@gmail.com>
Fri, 4 Mar 2016 07:58:36 +0000 (13:28 +0530)
CRM/Case/BAO/Query.php

index 503d6f01215bcfe22d3e4842724825b6fa47a37f..76bad1fc969f7780095fba4c2812d2a2839a14b7 100644 (file)
@@ -688,6 +688,10 @@ case_relation_type.id = case_relationship.relationship_type_id )";
 
     CRM_Core_Form_Date::buildDateRange($form, 'case_from', 1, '_start_date_low', '_start_date_high', ts('From'), FALSE);
     CRM_Core_Form_Date::buildDateRange($form, 'case_to', 1, '_end_date_low', '_end_date_high', ts('From'), FALSE);
+    $form->addElement('hidden', 'case_from_date_range_error');
+    $form->addElement('hidden', 'case_to_date_range_error');
+    $form->addFormRule(array('CRM_Case_BAO_Query', 'formRule'), $form);
+
 
     $form->assign('validCiviCase', TRUE);
 
@@ -738,4 +742,35 @@ case_relation_type.id = case_relationship.relationship_type_id )";
   public static function searchAction(&$row, $id) {
   }
 
+  /**
+   * Check if the values in the date range are in correct chronological order.
+   *
+   * @param array $fields
+   * @param array $files
+   * @param CRM_Core_Form $form
+   *
+   * @return bool|array
+   */
+  public static function formRule($fields, $files, $form) {
+    $errors = array();
+
+    if ((empty($fields['case_from_start_date_low']) || empty($fields['case_from_start_date_high'])) && (empty($fields['case_to_end_date_low']) || empty($fields['case_to_end_date_high']))) {
+      return TRUE;
+    }
+    $lowDate = strtotime($fields['case_from_start_date_low']);
+    $highDate = strtotime($fields['case_from_start_date_high']);
+
+    if ($lowDate > $highDate) {
+      $errors['case_from_date_range_error'] = ts('Please check that your Case Start Date Range is in correct chronological order.');
+    }
+
+    $lowDate = strtotime($fields['case_to_end_date_low']);
+    $highDate = strtotime($fields['case_to_end_date_high']);
+
+    if ($lowDate > $highDate) {
+      $errors['case_to_date_range_error'] = ts('Please check that your Case End Date Range is in correct chronological order.');
+    }
+    return empty($errors) ? TRUE : $errors;
+  }
+
 }