$definedCol) { $definedColIdx = $definedCol['col_idx']; $definedColName = $definedCol['col_name']; if (strtolower(trim($excelColumns[$definedColIdx])) !== strtolower($definedColName)) { $mismatchedColumns[] = "Column order conflict. Column order no ".($definedColIdx + 1)." expected : ".$definedColName." and received : ".$excelColumns[$definedColIdx]."
"; } } return $mismatchedColumns; } } if (!function_exists('check_row_is_empty_or_null')) { function check_row_is_empty_or_null($arr) { unset($arr[0]);// unset SNO in the array, becoz we need to check only datapoints are empty not SNo, it may added by accidentally foreach ($arr as $item) { if ($item !== null && !empty($item)) { return false; // If any item is not empty or not null, return false } } return true; // If all items are empty or null, return true } } if (!function_exists('check_excel_date_format')) { function check_excel_date_format($dateString,$format) { if($dateString == ""){ return array('status' => true); } $date = DateTime::createFromFormat('d-M-Y', $dateString); if ($date !== false && !is_array($date::getLastErrors())) { return array('status' => true); } else { return array('status' => false,'error' => "wrong date format: Expected 'd-M-Y' and received $dateString"); } } } if(!function_exists('check_relationship')) { function check_relationship($row,$relationship) { // print_r($col);print_r($relationship); // echo '
'; if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available { if($row[5] != null && $row[4] != null)//$row[5] = relationship $row[4] = Gender { $slug = \Config\Services::slug(); $col = $slug->slugify($row[5]); // echo $col;die(); if($col != 'self' && $col != 'spouse') { if($relationship[ $col ]['gender'] != $row[4]) { $error = "Gender relationship conflict: Expected ".$relationship[ $col ]['gender'].", received $row[4]"; return array('status' => false,'error' => $error); } } return array('status' => true); } else { return array('status' => false,'error' => 'Rule Conflict: Both Relationship and Gender required for check relationship conflict'); } } else { return array('status' => true); } // in else condition no need to check rule, just return true } } if(!function_exists('check_doj')) { function check_doj($row) { if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available { $slug = \Config\Services::slug(); $relationship = $slug->slugify($row[5]); // echo $relationship;echo $row[7]; if($relationship == 'self' && $row[7] == "") { return array('status' => false,'error' => "DOJ mandantory for self"); } return array('status' => true); } else { return array('status' => true); } // in else condition no need to check rule, just return true } } if(!function_exists('check_employee_band')) { function check_employee_band($row) { if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available { $slug = \Config\Services::slug(); $relationship = $slug->slugify($row[5]); // echo $relationship;echo $row[7]; if($relationship == 'self' && $row[9] == "") { return array('status' => false,'error' => "Band mandantory for self"); } return array('status' => true); }else { return array('status' => true); } // in else condition no need to check rule, just return true } } if(!function_exists('check_basic_pay')) { function check_basic_pay($row) { if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available { $slug = \Config\Services::slug(); $relationship = $slug->slugify($row[5]); // echo $relationship;echo $row[7]; if($relationship == 'self' && $row[8] == "") { return array('status' => false,'error' => "Basic pay mandantory for self"); } return array('status' => true); }else { return array('status' => true); } // in else condition no need to check rule, just return true } } if (!function_exists('check_dob_diff')) { function check_dob_diff($row,$relationships) { // echo 'called'; if($row[17] != null && in_array(strtoupper($row[17]), ['I','A','DA']))// check rule only of action column data available { if($row[3] != null && $row[5] != null) { $dob = change_date_format($row[3],'d-M-Y','Y-m-d'); // echo $row[3].' - '.$dob;echo '
'; $currentDateTime = new DateTime();//die(); $passedDateTime = new DateTime($dob); $interval = $currentDateTime->diff($passedDateTime); $slug = \Config\Services::slug(); $relationship = $slug->slugify($row[5]); $age_min = $relationships[$relationship]['age_min']; $age_max = $relationships[$relationship]['age_max']; // echo $relationship.','.$age_min.'-'.$age_max; if($age_min !== null && $age_min > $interval->y) { return array('status' => false,'error' => "Age conflict : minimum $age_min yrs allowed, received $interval->y"); } if($age_max !== null && $age_max < $interval->y) { return array('status' => false,'error' => "Age conflict : maximum $age_max yrs allowed, received $interval->y"); } return array('status' => true); } else { return array('status' => false,'error' => 'Rule Conflict: Both DOB and Relationship required for age check'); } }else { return array('status' => true); } // in else condition no need to check rule, just return true } } if (!function_exists('data_group_by_family')) { function data_group_by_family($emp_data) { $result = []; foreach ($emp_data as $rkey => $row) { if(!check_row_is_empty_or_null($row)) { $result[$row[1]][] = $row; } } return $result; } } if (!function_exists('name_dup_check_within_family')) { function name_dup_check_within_family($family_data) { $result = []; $temp = []; foreach ($family_data as $rkey => $row) { if(in_array($row[2],$temp)) { array_push($result,$row[0]); } else { array_push($temp, $row[2]); } } return $result; } } if (!function_exists('name_and_empid_check_in_db')) { function name_and_empid_check_in_db($family_data,$client_id,$policy_id) { $employeeModel = new EmployeeModel(); $result = ['del' => [],'i' => []]; foreach ($family_data as $rkey => $row) { $res = $employeeModel ->join('client_policy cp',"employees.client_id = cp.client_id") ->join('employee_polices ep',"cp.id = ep.client_policy_id AND employees.id = ep.employee_id") ->where("cp.policy_id",$policy_id) ->where("employees.client_id",$client_id) ->like('name',$row[2],'both')->like('emp_code',$row[1],'both') ->findAll(); if(count($res)) { if($row[17] == 'D') { array_push($result['del'],$row[0]); } else { array_push($result['i'],$row[0]); } } } return $result; } } if (!function_exists('check_dependent_conflict')) { function check_dependent_conflict($family_data,$policy_terms) { $result = ['status' => true]; $self_gender = null; $spouse_gender = null; $allowed_spouse_count = 0; $received_spouse_count = 0; $allowed_child_count = 0; $received_child_count = 0; $allowed_parents_count = 0; $received_parents_count = 0; $allowed_parent_in_laws_count = 0; $received_parent_in_laws_count = 0; $overall_famility_relationships = []; $temp_counts = [2,3,4,5,6,7,8,9,10]; //temp variable for check relation repetaed count $slug = \Config\Services::slug(); if($policy_terms['family_floater'] == true) { // $temp_string = implode(" ",$policy_terms['family_floaters']); $temp = $policy_terms['family_floaters']; $allowed_child_count = count(preg_grep('/child/',$temp)); $allowed_spouse_count = count(preg_grep('/spouse/',$temp)); $allowed_parents_count = count(preg_grep('/parent[12]/',$temp)); $allowed_parent_in_laws_count = count(preg_grep('/parent_in_law[12]/',$temp)); foreach ($family_data as $key => $row) { $relationship = $slug->slugify($row[5]); if($row[17] != 'D' && $relationship != 'son' && $relationship != 'daughter') { array_push($overall_famility_relationships, $relationship); } if($relationship == 'self') { $self_gender = $row[4]; } if($relationship == 'spouse') { $spouse_gender = $row[4]; $received_spouse_count = $received_spouse_count + 1; } if($relationship == 'son' || $relationship == 'daughter') { $received_child_count = $received_child_count + 1; } if($relationship == 'father' || $relationship == 'mother') { $received_parents_count = $received_parents_count + 1; } if($relationship == 'father-in-law' || $relationship == 'mother-in-law') { $received_parent_in_laws_count = $received_parent_in_laws_count + 1; } } // print_r($overall_famility_relationships); // echo '
'; if($row[17] != 'D') { $repeated_relationships_count = array_count_values($overall_famility_relationships); // print_r($repeated_relationships_count); // echo '
'; $repeated_count = array_intersect($repeated_relationships_count,$temp_counts); if(is_array($repeated_count) && count($repeated_count)) { $result['status'] = false; $result['error_data'][] = ['code' => 13,'col_name' => 'relationship','msg' => 'Rule conflict: Twofold relationship found within family']; } } // print_r($repeated_count); // echo "==============="; // echo "
"; // print_r(array_values(array_count_values($overall_famility_relationships))); // print_r(in_array(2,array_values(array_count_values($overall_famility_relationships)))); if($self_gender == $spouse_gender) { $result['status'] = false; $result['error_data'][] = ['code' => 4,'col_name' => 'gender','msg' => 'Rule conflict: Self and Spouse cannot be same gender']; } if(($allowed_spouse_count < $received_spouse_count) || ($allowed_child_count < $received_child_count) || ($allowed_parents_count < $received_parents_count) || ($allowed_parent_in_laws_count < $received_parent_in_laws_count)) { $result['status'] = false; $result['error_data'][] = ['code' => 12,'col_name' => null,'msg' => 'Rule conflict: Dependent count greater than allowed dependent count'];//dependent count mismatch } } else { if(count($family_data) > 1) { $result['status'] = false; $result['error_data'][] = ['code' => 11,'col_name' => null,'msg' => 'Rule conflict: Dependents not allowed'];//dependents not allowed } } return $result; } }