where('emp_code',$arr['emp_code']) ->where('name',$arr['name']) ->where('client_id',$arr['client_id']) ->where('client_branch_id',$client_branch_id) ->where('is_active',1) ->where('gender',$arr['gender']) ->where('dob',$arr['dob']) ->where('is_active',1) ->where('emp_status','active') ->find(); } else { return $this->where('id',$arr['temp']['emp_id'])->find(); } } public function getEmpFamilybyEmpCode(string $client_policy_id = null,string $emp_code = null,string $client_id = null,array $emp_status = [],array $policy_status = [],array $relationship = [],array $client_branch_id = []) { $result = $this->select(['employees.id as emp_id', 'employees.client_id','employees.client_branch_id', 'employees.relationship', 'employees.relationship_code', 'employees.change_event', 'employees.emp_code', 'employees.name', 'employees.email_personal', 'employees.email_corporate', 'employees.mobile', 'employees.gender', 'employees.dob', 'employees.doj', 'employees.basic_pay', 'employees.band', 'employees.designation', 'employees.emp_status','employees.unit','employees.file_id','employee_polices.id as emp_policy_id', 'employee_polices.employee_id', 'employee_polices.client_policy_id', 'employee_polices.tpa_id', 'employee_polices.uhid', 'employee_polices.batch_code', 'employee_polices.status', 'employee_polices.pre_existing_alignments', 'employee_polices.basic_cover_si', 'employee_polices.date_coverage', 'employee_polices.policy_end_date', 'employee_polices.days', 'employee_polices.premium', 'employee_polices.rata_premimum', 'employee_polices.gst', 'employee_polices.date_of_exit', 'employee_polices.reason_for_exit','policy_type.long_name as policy_name','client_policy.is_addon', 'employee_polices.payable_employee','employee_polices.rand_string','employee_polices.claim_status']) ->join('employee_polices', 'employee_polices.employee_id = employees.id') ->join('client_policy', 'client_policy.id = employee_polices.client_policy_id') ->join('policy_type', 'policy_type.id = client_policy.policy_type_id','left') ->where('employees.is_active',1) ->when($client_policy_id, function($query) use ($client_policy_id){ return $query->where('employee_polices.client_policy_id',$client_policy_id); }) ->where('employee_polices.is_active',1) ->where('employees.is_active',1) // ->where('employees.emp_code',$emp_code) ->when($emp_code, function($query) use ($emp_code){ return $query->where('employees.emp_code',$emp_code); }) ->when(count($emp_status), function($query) use ($emp_status){ return $query->whereIn('employees.emp_status', $emp_status); }) ->when(count($client_branch_id), function($query) use ($client_branch_id){ return $query->whereIn('employees.client_branch_id', $client_branch_id); }) ->when(count($relationship), function($query) use ($relationship){ return $query->whereIn('employees.relationship', $relationship); }) ->when(count($policy_status), function($query) use ($policy_status){ return $query->whereIn('employee_polices.status', $policy_status); }) ->when($client_id, function($query) use ($client_id){ return $query->where('employees.client_id',$client_id); }) ->findAll(); // dd($this->db->getLastQuery()); return ($result); } public function getEmployeePolicy($id) { return $this->db->table('employee_polices') ->select(' policy_type.long_name as Policy_Name , client_policy.policy_terms as Policy_Terms, client_policy.client_id as ClientId, client_policy.policy_id as PolicyId, client_policy.id as ClientPolicyId, CASE WHEN client_policy.open_for_enrollment IS NULL THEN 0 ELSE client_policy.open_for_enrollment END AS OpenForEnrollment, client_policy.disclaimer, client_policy.policy_type_id , employee_polices.tpa_id as tpa_id , employee_polices.rand_string as rand_string ', FALSE) // Select all columns from both tables ->join('client_policy', 'client_policy.id = employee_polices.client_policy_id') ->join('policy_type', 'policy_type.id = client_policy.policy_type_id') ->where('client_policy.policy_status', 1) ->where('employee_polices.status !=', 'truncated') ->where('employee_polices.is_active', 1) ->where('employee_polices.employee_id', $id) ->get() ->getResult(); } // for EMP rest API process do not change public function checkExistingEmployee($arr,$client_branch_id) { return $this->where('emp_code',$arr['emp_code'])->where('name',$arr['name'])->where('client_id', $arr['client_id'])->where('client_branch_id', $client_branch_id)->where('emp_status !=', 'truncated')->first(); } public function getEmpListByFileId(int $file_id,array $emp_status = [],array $policy_status = []) { $result = $this->select(['employees.id as emp_id', 'employees.client_id', 'employees.relationship', 'employees.relationship_code', 'employees.change_event', 'employees.emp_code', 'employees.name', 'employees.email_personal', 'employees.email_corporate', 'employees.mobile', 'employees.gender', 'employees.dob', 'employees.doj', 'employees.basic_pay', 'employees.band', 'employees.designation', 'employees.emp_status','employee_polices.id as emp_policy_id', 'employee_polices.employee_id', 'employee_polices.client_policy_id', 'employee_polices.tpa_id', 'employee_polices.uhid', 'employee_polices.batch_code', 'employee_polices.status', 'employee_polices.pre_existing_alignments', 'employee_polices.basic_cover_si', 'employee_polices.date_coverage', 'employee_polices.policy_end_date', 'employee_polices.days', 'employee_polices.premium', 'employee_polices.rata_premimum', 'employee_polices.gst', 'employee_polices.date_of_exit', 'employee_polices.reason_for_exit']) ->join('employee_polices', 'employee_polices.employee_id = employees.id') ->where('employees.is_active',1) ->where('employees.file_id',$file_id) ->where('employee_polices.is_active',1) // ->where('employee_polices.uhid is not null') // ->where('employee_polices.tpa_id is not null') ->groupStart() ->orWhere('employee_polices.uhid is not null') ->orWhere('employee_polices.tpa_id is not null') ->groupEnd() ->when(count($emp_status), function($query) use ($emp_status){ return $query->whereIn('employees.emp_status', $emp_status); }) ->when(count($policy_status), function($query) use ($policy_status){ return $query->whereIn('employee_polices.status', $policy_status); }) ->findAll(); // ~dd($this->db->getLastQuery()); return ($result); } public function getFamiliyCountAndMaxage(string $emp_code) { $query = " SELECT emp_code,family_member_count,max_age FROM ( SELECT emp_code, COUNT(*) AS family_member_count, MAX(TIMESTAMPDIFF(YEAR, dob, CURDATE())) AS max_age FROM employees where emp_code = '{$emp_code}' GROUP BY emp_code ) AS family_stats ORDER BY family_member_count DESC, max_age DESC LIMIT 1;"; $results = $this->db->query($query)->getResultArray(); return $results; } public function getTestEmployeeData(){ $query = " SELECT e.*, ( SELECT COUNT(ep.client_policy_id) FROM employee_polices ep WHERE ep.employee_id = e.id ) AS policy_count FROM employees e WHERE e.emp_code LIKE 'TEST%' ORDER BY e.emp_code, CASE WHEN e.relationship = 'self' THEN 1 WHEN e.relationship = 'spouse' THEN 2 ELSE 3 END; "; $results = $this->db->query($query)->getResultArray(); return $results; } public function getEmployeeByEmployeeCode($emp_code, $client_policy_id = null, $client_id = null) { $query = $this->select(" employees.id AS emp_id, employees.name AS emp_name, employees.emp_code, employees.mobile AS emp_mobile, employees.email_corporate AS emp_email, employees.relationship AS emp_relationship, employee_polices.uhid AS policy_no, employee_polices.tpa_id AS tpa_no ") ->join('employee_polices', 'employees.id = employee_polices.employee_id', 'left') ->where('employees.is_active', 1) ->where('employee_polices.is_active', 1) ->where('employees.emp_status', "active") ->where('employee_polices.status', "active") ->where('employees.emp_code', $emp_code); if(!empty($client_id)){ $query->where('employees.client_id', $client_id); } if(!empty($client_policy_id)){ $query->where('employee_polices.client_policy_id', $client_policy_id); } $query->groupBy('employees.id'); $data = $query->findAll(); return $data; } public function getAcmUsingClientID($client_id) { return $this->db->table('client_rm') ->select('user_profiles.id, user_profiles.first_name') ->join('user_profiles', 'client_rm.user_id = user_profiles.id') ->where([ 'client_rm.level' => 3, 'user_profiles.role' => 3, 'client_rm.is_active' => 1, 'user_profiles.is_active' => 1, 'client_rm.client_id' => $client_id ]) ->get() ->getResultArray(); } }