MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/uds.cafsinfotech.in/application/controllers_bk/Employee_onboard.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Action_controller.php");
class Employee_onboard  extends Action_controller{	
	protected $app_url;
	public function __construct(){
		parent::__construct('employee_onboard');
		$this->load->model('Module');
		$this->$app_url = 'http://122.186.126.218:8030/adminapp/api';
	}
	
	// LOAD PAGE QUICK LINK,FILTERS AND TABLE HEADERS
	public function index(){		
		/* Get form inputs for Bulk ADD - START */
		$form_qry = 'select * from cw_form_setting where prime_module_id = "employees" and trans_status = "1" and (cw_form_setting.onboard_order != "" and cw_form_setting.onboard_order != 0) ORDER BY onboard_order asc';
		$form_data   = $this->db->query("CALL sp_a_run ('SELECT','$form_qry')");
		$form_result = $form_data->result();
		$form_data->next_result();
		$data['form_info']     = $form_result;

		//Multi query Functionality
		$pro_qry[]   = array("return"=>"gender_rslt","qry"=>'SELECT gender_code,gender_name FROM cw_sap_gender WHERE cw_sap_gender.trans_status = 1');

		$pro_qry[]   = array("return"=>"marrital_rslt","qry"=>'select marital_code,marital_name from cw_sap_marital_status where trans_status = 1');

		$pro_qry[]   = array("return"=>"challenge_rslt","qry"=>'select challenge_code,challenge_name from cw_sap_challenge_type where trans_status = 1');

		$pro_qry[]   = array("return"=>"company_info","qry"=>'select * from cw_company_information where cw_company_information.trans_status = 1');

		$pro_qry[]   = array("return"=>"category_group_rslt","qry"=>'select * from cw_category where cw_category.trans_status = 1');

		$pick_data_rslt             = $this->run_multi_qry($pro_qry);
		if(!$pick_data_rslt->sts){
			$data['module_sts']     = false;
		}else{
			$data['gender_list']    = $pick_data_rslt->rslt->gender_rslt;
			$data['marrital_list']  = $pick_data_rslt->rslt->marrital_rslt;
			$data['challenge_list'] = $pick_data_rslt->rslt->challenge_rslt;
			$data['category_group_list'] = $pick_data_rslt->rslt->category_group_rslt;
			$data['comp_info']      = $pick_data_rslt->rslt->company_info[0];
		}		
		/* Get form inputs for Bulk ADD - END */
		$data['encKey']          = $this->generateKey();
		$this->load->view("employee_onboard/onboard",$data);
	}    

	public function onboard_list(){
		$this->page_info();	
		$data['quick_link']    = $this->quick_link;
		$data['pick_list_arr'] = $this->pick_list;
		$data['form_info']     = $this->form_info;
		$data['table_head']    = $this->table_head;
		$data['fliter_list']   = $this->fliter_list;
		$data['freeze_list']   = $this->freeze_list;
		//$data['all_pick']       = $this->pick_list;
		$data['condition_list'] = $this->condition_list;
		$data['comp_info']      = $this->company_info[0];

		$onboard_sts_qry        ='SELECT prime_employees_id,sap_status FROM cw_employees WHERE entry_flag="c" AND sap_status="4"';
		$onboard_info           = $this->db->query("CALL sp_a_run ('SELECT','$onboard_sts_qry')");
		$onboard_rslt           = $onboard_info->result_array();
		$onboard_info->next_result();
		$failure_case_arr       = array();
		foreach($onboard_rslt as $arr){
			$failure_case_arr[$arr['prime_employees_id']]=$arr['sap_status'];
		}
		$data['failure_case_arr']      = $failure_case_arr;
		$data['encKey']          = $this->generateKey();
		$this->load->view("employee_onboard/manage",$data);
	}

	public function get_all_pick(){
		$form_qry = 'select * from cw_form_setting where prime_module_id = "employees" and trans_status = "1" and (cw_form_setting.onboard_order != "" and cw_form_setting.onboard_order != 0) and label_name in ("category_group","wbs_element","ifsc_code","gender","marital_code","challange_code","position") ORDER BY onboard_order asc';
		$form_data   = $this->db->query("CALL sp_a_run ('SELECT','$form_qry')");
		$form_result = $form_data->result();
		$form_data->next_result();
		$pro_pick_list = array();
		foreach($form_result as $key => $value){
			$pro_pick_list[$key]  = $value;
		}
		if($pro_pick_list){
			$this->get_pick_list_qry($pro_pick_list);
		}		
	}

	//LOAD TABEL WITH FILTERS
	public function search(){
		$this->search_info();
		$draw             = $this->input->post('draw');
		$start            = $this->input->post('start');
		$per_page         = $this->input->post('length');
		$order            = $this->input->post('order');
		$order_col        = $this->input->post('columns');
		$search           = $this->input->post('search');
		$column           = $order[0]['column'];
		$order_sor        = $order[0]['dir'];
		$order_col        = $order_col[$column]['data'];
		$search           = trim($search['value']);
		$search_query     = str_replace("@SELECT@",$this->select_query,$this->base_query);
		$search_result    = array();
		//ADDED BASIC,FILTER,COMMON QUERY HERE 
		$role_condition   = "";
		if($this->role_condition){
			$role_condition = $this->role_condition;
		}
		
		$fliter_query = "";
		//DR COMMAND CODE FOR WAITING TO ADD A NEW CHANGES
		foreach($this->fliter_list as $fliter){
			$label_id         = $fliter->label_name;
			$field_isdefault  = (int)$fliter->field_isdefault;
			$field_type       = (int)$fliter->field_type;
			$prime_form_id 	  = $fliter->prime_form_id;

			if($field_isdefault === 1){
				$column_name = $this->prime_table .".$label_id";
				$search_val  = $this->input->post("$label_id");
				if($search_val){
					if($field_type === 4){
						$search_val    = date('Y-m-d',strtotime($search_val));
						$fliter_query .= ' and '.$column_name.' = "'.$search_val.'"';
					}else
					if(($field_type === 5) || ($field_type === 7)){
						$search_val    = trim(implode('","',$search_val ?? []));
						$fliter_query .= ' and '.$column_name.' in ("'.$search_val.'")';  
					}else
					if($field_type === 9){
						$search_id     = 'filter_'.$label_id.'_hidden_'.$prime_form_id;
						$search_val    = $this->input->post("$search_id");
						$fliter_query .= ' and '.$column_name.' in ("'.$search_val.'")';  
					}else
					if($field_type === 13){
						$search_val    = date('Y-m-d H:i:s',strtotime($search_val));
						$fliter_query .= ' and '.$column_name.' = "'.$search_val.'"';
					}else{
						$fliter_query .= ' and '.$column_name.' LIKE "'.$search_val.'%"';
					}
				}
			}
		}
		$common_search = "";
		if($search){
			foreach($this->table_head as $setting){
				$prime_form_id      = $setting->prime_form_id;
				$field_type         = (int)$setting->field_type;
				$pick_list          = $setting->pick_list;
				$pick_table         = $setting->pick_table;
				$pick_list_type     = $setting->pick_list_type;
				$input_view_type    = (int)$setting->input_view_type;
				$auto_prime_id      = $setting->auto_prime_id;
				$auto_dispaly_value = $setting->auto_dispaly_value;
				$label_id           = strtolower(str_replace(" ","_",$setting->label_name));
				$field_isdefault    = (int)$setting->field_isdefault;
				if($field_isdefault === 1){
					if(($input_view_type === 1) || ($input_view_type === 2)){
						$search_label = "$this->prime_table.$label_id";
						$search_val   = "";
						if($field_type === 4){ // having issues in date search
							if(strtotime($search)){
								$search_val = date('Y-m-d',strtotime($search));
								$common_search .= ' or '. $search_label .' like "'.$search_val.'%"';
							}
						}else
						if(($field_type === 5) || ($field_type === 7) || ($field_type === 9)){
							$result = array_filter($this->pick_list[$label_id]['array_list'] ?? [], function ($item) use ($search) {
								if (stripos($item, $search) !== false) {
									return true;
								}
								return false;
							});
							if($result){
								$pick_key = implode('", "', array_keys($result ?? []) ?? []);
								$common_search .= ' or '. $search_label .' in("'.$pick_key.'")';
							}
						}else{
							$common_search .= ' or '. $search_label .' like "'.$search.'%"';
						}
					}
				}
			}
			if($common_search){
				$common_search = ltrim($common_search,' or ');
				$common_search = " and ($common_search)";
				$common_search = str_replace("(,","(",$common_search);
				$common_search = str_replace("()","(0)",$common_search);
			}
		}
		$count_all_query    = str_replace("@SELECT@","count(*) as allcount",$this->base_query);
		$count_query        = $count_all_query.' where cw_employees.trans_status = 1 and cw_employees.entry_flag = "c" '.$role_condition.$fliter_query.$common_search;
		
		$search_query      .= " where cw_employees.trans_status = 1 and cw_employees.prime_employees_id != 1 and cw_employees.entry_flag = 'c' $role_condition $fliter_query $common_search";
		$search_query      .= " ORDER BY  prime_employees_id DESC";
		if((int)$per_page !== -1){
			$search_query  .= " LIMIT  $start,$per_page";
		}			
		$search_pro_qry     = [];
		$search_pro_qry[]   = array("return"=>"total_count","qry"=>$count_all_query);
		$search_pro_qry[]   = array("return"=>"filtered_count","qry"=>$count_query);
		$search_pro_qry[]   = array("return"=>"search_result","qry"=>$search_query);
		$search_info_rslt   = $this->run_multi_qry($search_pro_qry);
		$total_count        = $search_info_rslt->rslt->total_count[0]->allcount;
		$filtered_count     = $search_info_rslt->rslt->filtered_count[0]->allcount;
		
		$search_result      = json_decode(json_encode($search_info_rslt->rslt->search_result),true);
		if($search_result === null || $search_result === ''){
			$search_result  = [];
		}

		echo json_encode(array("draw" => intval($draw),"recordsTotal" => $total_count,"recordsFiltered" => $filtered_count,"data" => $search_result));		
	}
	
	//LOAD MODEL PAGE VIEW WITH DATA
	public function view($form_view_id=-1){
		//VIEW INFO FUNCTION
		$this->view_info($form_view_id);
		//VIEW, FORM INPUT
		$data['view_info']              = $this->view_info;
		$data['form_info']              = $this->form_info;
		$data['formula_result']         = $this->formula_result;//for label color change
		$data['role_based_condition']   = $this->role_based_condition;//for label name readonly options
		$data['all_pick']               = $this->pick_list;//all pick result		
		//PENDING TO ADD
		$data['condition_list']         = $this->form_condition_list;

		//DR CODE FOR DATA COME FROM TIME SHEET
		$data['personal_code']          = $this->input->post("personal_code");
		$data['project_id']             = $this->input->post("project_id");
		$data['comp_info']              = $this->company_info[0];
		//AUTO COMPLTE,PICK LIST AND CONDITION
		// foreach($this->form_info as $from){
		// 	$prime_form_id      = (int)$from->prime_form_id;
		// 	$field_type         = (int)$from->field_type;
		// 	$pick_table         = $from->pick_table;
		// 	$auto_prime_id      = $from->auto_prime_id;
		// 	$auto_dispaly_value = $from	->auto_dispaly_value;
		// 	$label_id           = $from->label_name;
		// 	if($field_type === 9){
		// 		if($view_result[0]){
		// 			$get_value = $view_result[0]->$label_id;
		// 			if($get_value){
		// 				$pick_query = 'select '.$auto_dispaly_value.' from '.$pick_table.' where '.$auto_prime_id.' = "'.$get_value.'" and trans_status = 1';
		// 				$pick_data   = $this->db->query("CALL sp_a_run ('SELECT','$pick_query')");
		// 				$pick_result = $pick_data->result();
		// 				$pick_data->next_result();
		// 				$this->pick_list[$label_id]['array_list'] = $pick_result[0]->$auto_dispaly_value;
		// 			}					
		// 		}
		// 	}
		// }		
		
		//VIEW DATA
		$base_query          = str_replace("@SELECT@",$this->view_select,$this->base_query);
		$form_view_qry       = $base_query .' where '.$this->prime_table.'.'.$this->prime_id.' = '.$form_view_id.' and '.$this->prime_table.'.trans_status = 1';
		$row_view_qry        = 'select * from cw_form_view_setting where  prime_view_module_id = "'.$this->control_name.'" and  form_view_type = "3" and trans_status = 1';
		
		$view_pro_qry        = [];
		$view_pro_qry[]      = array("return"=>"form_view","qry"=>$form_view_qry);
		$view_pro_qry[]      = array("return"=>"row_view_list","qry"=>$row_view_qry);	

		$view_info_rslt      = $this->run_multi_qry($view_pro_qry);
		$form_view_rslt      = $view_info_rslt->rslt->form_view[0];			
		$row_view_rslt       = $view_info_rslt->rslt->row_view_list;

		$data['form_view']   = $form_view_rslt;
		
		$row_view_list       = array();
		foreach($row_view_rslt as $view){
			$prime_form_view_id   = $view->prime_form_view_id;
			$row_set_data         = $this->get_row_set_data($prime_form_view_id,$form_view_id);
			$row_view_list[$prime_form_view_id] = $row_set_data;
		}
		$data['row_view_list']    = $row_view_list;		
		
		$data['edit_id']     = $form_view_id;
		
		// $emp_details_columns = 'select employee_code,emp_name from `cw_employees` where trans_status =1';
		// $emp_details_info    = $this->db->query("CALL sp_a_run ('SELECT','$emp_details_columns')");
		// $emp_details_result  = $emp_details_info->result();
		// $emp_details_info->next_result();
		// $emp_details[""]     = "---- Select Column ----";
		// foreach($emp_details_result as $emp_column){
		// 	$employee_code   = $emp_column->employee_code;
		// 	$emp_name        = $emp_column->emp_name;
		// 	$emp_details[$this->xss_clean($employee_code)] = $this->xss_clean($emp_name);
		// }		
		// $data['emp_details'] = $emp_details;
		$data['get_depend_prime_id']   = $this->get_depend_fun();
		
		$data['personal_code'] = $personal_code;
		$data['project_id']    = $project_id;
		$data['encKey']          = $this->generateKey();
		$this->load->view("employee_onboard/form",$data);
	}

	//SAVE MODEL DATA TO DATA BASE
	public function save(){
		//SAVE INFO FUNCTION
		$this->save_info();
		$unq_chk         = array();
		$prime_qry_key   = "";
		$prime_qry_value = "";
		$prime_upd_query = "";
		$cf_qry_key      = "";
		$cf_qry_value    = "";
		$cf_upd_query    = "";	
		$cf_has          = false;
		//Decrypt Form id
			$form_id         = $this->input->post($this->prime_id);
			if($form_id !== '-1'){ //Decryption
				$decRslt     = $this->cryptoDecrypt(base64_decode(urldecode($form_id)));
				$form_id     = (int)$decRslt['prime_id'];
				if(!$form_id){
					echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
					exit(0);
				}
			}else{
				$form_id = 0;
			}
		$form_post_data  = array();	
		$post_array      = array('emp_name','date_of_birth','stop_pay_code','father_name','aadhar_card_no','pan_number','emp_uan','mobile_number','emp_esi_location','emp_esi_no','emp_pf_no','husband_name');
		foreach($this->form_info as $setting){
			$field_type      = $setting->field_type;
			$input_view_type = (int)$setting->input_view_type;
			$label_id        = strtolower(str_replace(" ","_",$setting->label_name));
			$field_isdefault = $setting->field_isdefault;
			$unique_field    = (int)$setting->unique_field;
			$view_name       = $setting->view_name;
			$date_type       = $setting->date_type;			
			if((int)$field_type === 5){
				$value = trim($this->input->post($label_id));
				$pick_array[$label_id]  = $value;
			}else	
			if((int)$field_type === 7){
				$multi_name = $label_id."[]";
				$value = trim(implode(",",$this->input->post($multi_name) ?? []));
			}else{
				$value = trim($this->input->post($label_id));
			}			
			if((int)$field_type === 4){
				if((int)$date_type === 1){
					$value = date('Y-m-d',strtotime($value));
				}else{
					$value = $value;
				}
			}else
			if((int)$field_type === 13){
				$value = date('Y-m-d H:i:s',strtotime($value));
			}else
			if((int)$field_type === 8){//textbox only
				$value = str_replace('"',"~",$value);
				$value = str_replace("'","`",$value);
				$value = str_replace("&","^",$value);
			}else
			if((int)$field_type === 10){//File Upload
				$value 		 		 = $value;
				$remove_upload_fname = "old_".$label_id;
				$remove_upload_file  = $this->input->post($remove_upload_fname);
				if($value !== $remove_upload_file){
					unlink($remove_upload_file);  
				}
			}	
			
			if(($input_view_type === 1) || ($input_view_type === 2)){
				if((int)$field_isdefault === 1){
					$prime_qry_key     .= $label_id.",";
					$prime_qry_value   .= '"'.$value.'",';
					$prime_upd_query   .= $label_id.' = "'.$value.'",';
					if($unique_field === 1){
						$prime_unq_chk = $label_id.'= "'.$value.'"';
						$query = "select count(*) as rslt_count from $this->prime_table where $this->prime_id != $form_id and $prime_unq_chk";
						$unq_chk[] = array('label_id'=>$label_id,'view_name'=>$view_name,'query'=>$query,);
					}
				}
			}
		}
		$rslt_count = 0;
		$can_process = array();
		foreach($unq_chk as $unq_rslt){
			$query       = $unq_rslt['query'];
			$label_id    = $unq_rslt['label_id'];
			$view_name   = $unq_rslt['view_name'];
			$unq_info    = $this->db->query("CALL sp_a_run ('RUN','$query')");
			$unq_result  = $unq_info->result();
			$unq_info->next_result();
			if($unq_result){
				$rslt_count = (int)$unq_result[0]->rslt_count;
				if($rslt_count !== 0){
					$can_process[] = $view_name." already exist";
				}
			}
		}
		/* =========== BSK Amendment Posting ================*/
			//Get Previous Data
			$from_query  = 'select '.implode(",",$post_array).' from cw_employees where cw_employees.trans_status = 1 and '. $this->prime_id .' = "'. $form_id .'" ';
			$form_data   = $this->db->query("CALL sp_a_run ('SELECT','$from_query')");
			$form_result = $form_data->result_array();
			$form_data->next_result();			
			$previous_data       = $form_result[0];
			if($previous_data){
				$result          = array_intersect_key($post_data,$previous_data);				
				$arraycompare 	 = array_diff_assoc($result,$previous_data);
				#$sap_status      = 2;				
			}
			/* =========== BSK Amendment Posting ================*/
		if(count($can_process ?? []) > 0){
			$can_process  = array_values($can_process ?? []);				
			$can_process  = implode(",<br/>", $can_process ?? []);
			echo json_encode(array('success' => false, 'message' => $can_process,));
		}else{
			$created_on = date("Y-m-d h:i:s");
			if((int)$form_id === 0){
				$prime_qry_key     .= "trans_created_by,trans_created_date";
				$prime_qry_value   .= '"'.$this->logged_id.'",'.'"'.$created_on.'"';
				$prime_insert_query = "insert into $this->prime_table ($prime_qry_key) values ($prime_qry_value)";
				$insert_info        = $this->db->query("CALL sp_a_run ('INSERT','$prime_insert_query')");
				$insert_result      = $insert_info->result();
				$insert_info->next_result();
				$insert_id = $insert_result[0]->ins_id;	
				$send_mail_status = "";
				if((int)$this->email_count > 0){
					$send_mail_status = $this->dynamic_mail_sent($insert_id,$pick_array,$previous_data);
				}			
				echo json_encode(array('success' => TRUE, 'message' => "Successfully added $send_mail_status", 'insert_id' => $insert_id));
			}else{
				$prime_upd_query    .= 'trans_updated_by = "'. $this->logged_id .'",trans_updated_date = "'.$created_on.'"';
				$prime_update_query  = 'UPDATE '. $this->prime_table .' SET '. $prime_upd_query .' WHERE '. $this->prime_id .' = "'. $form_id .'"';
				$this->db->query("CALL sp_a_run ('UPDATE','$prime_update_query')");
				$send_mail_status = "";
				if((int)$this->email_count > 0){
					$send_mail_status = $this->dynamic_mail_sent($form_id,$pick_array,$previous_data);
				}
				echo json_encode(array('success' => TRUE, 'message' => "Successfully updated $send_mail_status",'insert_id' => $form_id));
			}
		}
	}
	
	//UPDATE STATUS TO DELETE IN MODULE PRIMARY TABLE
	public function delete(){
		//Encryption
		$encString      = file_get_contents('php://input');
		$_POST          = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$delete_ids    = implode(",",$this->input->post('delete_ids') ?? []);
		$can_process   = TRUE;
		$delete_status = FALSE;
		if($this->check_delete_status()){
			$delete_status = TRUE;
			$check_table_query  = 'SELECT GROUP_CONCAT(prime_module_id) as prime_module_id,GROUP_CONCAT(label_name) as label_name from cw_form_setting WHERE pick_table = "'. $this->prime_table .'" and  trans_status = 1 ';
			$check_table_info   = $this->db->query("CALL sp_a_run ('SELECT','$check_table_query')");
			$check_table_rlst   = $check_table_info->row();
			$check_table_info->next_result();
			if($check_table_rlst->prime_module_id){
				$prime_module_id         = explode(",",$check_table_rlst->prime_module_id ?? "");
				$label_name              = explode(",",$check_table_rlst->label_name ?? "");
				$i                       = 0;
				foreach($prime_module_id as $check_modules){
					$table_name          = "cw_".$check_modules;
					$select_table        = "$table_name.$label_name[$i]";
					$select_where        = " and $table_name.$label_name[$i] in ($delete_ids)";
					$check_module_query  = 'SELECT '.$select_table.' from '.$table_name.' WHERE '.$table_name.'.trans_status = 1 '.$select_where.' LIMIT 0,1'; 
					$check_module_info   = $this->db->query("CALL sp_a_run ('SELECT','$check_module_query')");
					$values_count        = $check_module_info->num_rows();
					$check_module_info->next_result();
					if((int)$values_count > 0){
						$table_names  .= "$check_modules,";
						$can_process   = False;
						$delete_status = False;
					}
					$i++;
				}				
			}
			$table_names = rtrim($table_names,",");
			if($delete_status){
				$delete_query  = 'DELETE FROM '. $this->prime_table .'  WHERE '. $this->prime_id .' in ('. $delete_ids .')';
				if($this->db->query("CALL sp_a_run ('RUN','$delete_query')")){
					$row_set_query   = 'SELECT form_view_label_name from cw_form_view_setting where form_view_type = "3" and prime_view_module_id = "'. $this->control_name .'" and trans_status = 1';
					$row_set_info    = $this->db->query("CALL sp_a_run ('SELECT','$row_set_query')");
					$row_count       = (int)$row_set_info->num_rows();
					$row_set_info->next_result();
					if($row_count !== 0){
						$row_set_result         = $row_set_info->result();
						$delete_table_name      = '';
						$delete_table_condition = '';
						foreach($row_set_result as $row_set){
							$row_set_table_name      = "cw_".$this->control_name."_".$row_set->form_view_label_name;
							$delete_table_name      .= "$row_set_table_name,";
							$delete_table_condition .= " $row_set_table_name.$this->prime_id  in ('$delete_ids') and";
						}
						$delete_table_name           = rtrim($delete_table_name,',');
						$delete_table_condition      = rtrim($delete_table_condition,'and');
						$delete_row_set_query  = 'DELETE FROM '. $delete_table_name .'  WHERE '. $delete_table_condition.'';
						$this->db->query("CALL sp_a_run ('RUN','$delete_row_set_query')");						
					}
					$can_process = False;
				}
				
			}
		}
		if($can_process){
			$created_on = date("Y-m-d h:i:s");
			$prime_upd_query    .= 'trans_deleted_by = "'. $this->logged_id .'",trans_deleted_date = "'.$created_on.'"';
			$prime_update_query  = 'UPDATE '. $this->prime_table .' SET trans_status = 0,'. $prime_upd_query .' WHERE '. $this->prime_id .' in ('. $delete_ids .')';
			if($this->db->query("CALL sp_a_run ('UPDATE','$prime_update_query')")){
				echo json_encode(array('success' => TRUE, 'message' => "Successfully Deleted"));
			}else{
				echo json_encode(array('success' => FALSE, 'message' => "Unable to delete"));
			}
		}else
		if($delete_status){
			echo json_encode(array('success' => TRUE, 'message' => "Successfully Deleted"));
		}else{
			$modules = ucwords($check_table_rlst->prime_module_id);
			echo json_encode(array('success' => FALSE, 'message' => "Unable to delete, This value is already used in $table_names modules"));
		}
	}
	
	//CHECK UNIQUE FIELD STATUS
	public function check_delete_status(){
		$check_delete_query  = 'SELECT GROUP_CONCAT(unique_field) as unique_field from cw_form_setting WHERE prime_module_id = "'. $this->control_name .'" and  trans_status = 1 ';
		$check_delete_info   = $this->db->query("CALL sp_a_run ('SELECT','$check_delete_query')");
		$check_delete_rlst   = $check_delete_info->row();
		$check_delete_info->next_result();
		$unique_info         = explode(",",$check_delete_rlst->unique_field ?? "");
		if(in_array('1', $unique_info)){
			return TRUE;
		}else{
			return FALSE;
		}
	}
	
	//UPDATE STATUS TO DELETE FOR UPLOAD FILES or DOCUMENTS
	public function remove_file(){
		//Encryption
		$encString     = file_get_contents('php://input');
		$_POST         = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$prime_id_val   = $this->input->post('prime_id_val');
		$is_defult      = (int)$this->input->post('is_defult');
		$input_name     = $this->input->post('input_name');
		$input_val      = $this->input->post('input_val');
		if($input_val){
			chmod($input_val, 0777);
			unlink($input_val);
		}
		$table_name = '';
		if($is_defult === 1){
			$table_name = $this->prime_table;
		}else
		if($is_defult === 2){
			$table_name = $this->cf_table;
		}
		if($table_name){
			$created_on    = date("Y-m-d h:i:s");
			$set_query     = $input_name .' = "" ,trans_updated_by = "'. $this->logged_id .'",trans_updated_date = "'.$created_on.'"';
			$update_query  = 'UPDATE '.$table_name .' SET '. $set_query .' WHERE '. $this->prime_id .' = "'. $prime_id_val .'"';
			$this->db->query("CALL sp_a_run ('UPDATE','$update_query')");
			echo json_encode(array('success' => TRUE, 'message' => "Successfully updated"));
		}else{
			echo json_encode(array('success' => FALSE, 'message' => "Unable to process your request"));
		}
	}
	
	//IMPORT FILE VIEW INFORMATION
	public function import(){
		$data['module_id']     = $this->control_name;
		$excel_format_qry = 'select prime_excel_format_id,excel_name from cw_util_excel_format where excel_module_id = "'.$this->control_name.'" and trans_status = 1';
		$excel_format   = $this->db->query("CALL sp_a_run ('SELECT','$excel_format_qry')");
		$excel_result    = $excel_format->result();
		$excel_format->next_result();
		$excel_format_drop[""] = "---- Excel Format ----";
		foreach($excel_result as $excel){
			$prime_excel_format_id = $excel->prime_excel_format_id;
			$excel_name            = $excel->excel_name;
			$excel_format_drop[$prime_excel_format_id] = $excel_name;
		}
		$data['excel_format_drop'] = $excel_format_drop;
		$data['encKey']            = $this->generateKey();
		$this->load->view("employee_onboard/import",$data);
	}
	//Onboard autocomplete function
	public function auto_suggest(){
		$search_term      = $this->input->post_get('term');		
		$prime_form_id    = $this->input->get('prime_form_id');
		$depen_pick_list  = $this->input->get('depen_pick_list');
		$depend_hidden_id = $this->input->get('depend_hidden_id');
		$label_id_val 	  = $this->input->get('label_id');
		$depen_pick_input = $this->input->get('depen_pick_input');

		if($this->form_arr[$prime_form_id]){
			$pick_table          = $this->form_arr[$prime_form_id]['pick_table'];
			$pick_list           = $this->form_arr[$prime_form_id]['pick_list'];
			$auto_prime_id       = $this->form_arr[$prime_form_id]['auto_prime_id'];
			$auto_dispaly_value  = $this->form_arr[$prime_form_id]['auto_dispaly_value'];
			$pick_display_value  = $this->form_arr[$prime_form_id]['pick_display_value'];
			$depand_join 	= "";
			$depand_where   = "";			
			$pick_list 			 = explode(",", $pick_list);
			$pick_list 			 = "$pick_table.".implode(",$pick_table.", $pick_list);
			$pick_display_value  = explode(",", $pick_display_value);
			$pick_display_value  = "$pick_table.".implode(",$pick_table.", $pick_display_value);
			$auto_list 	   = "CONCAT(".str_replace(",",'," - ",',$pick_list).") as label";
			$display_list  = "CONCAT(".str_replace(",",'," - ",',$pick_display_value).") as display_name";
			$suggest_query = "select $pick_table.$auto_prime_id as value,$pick_table.$auto_dispaly_value,$auto_list,$display_list from $pick_table where $pick_table.trans_status = 1";
			$col_list      = explode(",",$pick_list ?? "");
			$suggest_query .= " and ";
			$where_query  = "";
			foreach($col_list as $col){
				$where_query .= $col.' like "%'.$search_term.'%" or ';
			}
			$where_query    = rtrim($where_query," or ");
			$suggest_query .= '('.$where_query.')';

			//DR CODE FOR PAY STRUCTURE WBS BASED ACTIVITY NUMBER FETCH
			$suggest_query .= $pay_struct_grp;
			//DR CODE END
			$suggest_query .= ' limit 0,50';			
			$suggest_data   = $this->db->query("CALL sp_a_run ('SELECT','$suggest_query')");
			$suggest_result = $suggest_data->result_array();
			$suggest_data->next_result();
		}
		if(empty($suggest_result[0])){
			$suggestions[] = array('value' => "0", 'label' => "No data found for this search");
		}		
		echo json_encode($suggest_result);		
	}

	//GET ACTIVE POSITIONS FROM PAY STRUCTURE BSK
	public function get_position(){
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$wbs_element       = $this->input->post('wbs_element');
		//pay structure select qry 
		$pay_position_qry  = 'SELECT DISTINCT cw_sap_position.position_code,cw_sap_position.position_name,cw_sap_position.prime_sap_position_id,gross FROM cw_pay_structure inner join cw_sap_wbs on cw_sap_wbs.wbs_id = cw_pay_structure.wbs_element inner join cw_sap_position on cw_pay_structure.position = cw_sap_position.position_code WHERE cw_sap_wbs.wbs_id = "'.$wbs_element.'" and FIND_IN_SET(cw_sap_wbs.wbs_personal_area_id, "'.$this->logged_area_access.'") and cw_pay_structure.trans_status = 1 and cw_sap_position.trans_status = 1 and cw_pay_structure.status = 1'; //GROUP BY cw_sap_position.position_code
		//echo $pay_position_qry;
		$pay_position_info = $this->db->query("CALL sp_a_run ('SELECT','$pay_position_qry')");
		$pay_position_rslt = $pay_position_info->result_array();
		$pay_position_info->next_result();

		$pos_list          = "";
		foreach($pay_position_rslt as $for){
			$prime_id           = $for['prime_id'];
			$position           = $for['position_code'];
			$position_name      = $for['position_name'];
			$gross              = $for['gross'];
			$pos_list          .= "<option data-value = '$position' value = '$position'> $position_name - $gross</option>";
		}
		echo $pos_list;
	}
	//Save Bulk add data
	public function save_all(){
		$post_data        = $_POST;
		$trline_arr       = $post_data['trline'];
		$wbs_elements     = implode('","',array_unique($post_data['wbs_element'])); //get distinct
		$ifsc_codes       = implode('","',array_unique($post_data['ifsc_code'])); //get distinct
		//Get Bank Details
		$bank_name_query  = 'select cw_sap_ifsc.ifsc_code,bank_name from cw_sap_ifsc where cw_sap_ifsc.ifsc_code in ("'.$ifsc_codes.'") and cw_sap_ifsc.trans_status = 1';
		$bank_name_data   = $this->db->query("CALL sp_a_run ('SELECT','$bank_name_query')");
		$bank_name_rslt   = $bank_name_data->result();
		$bank_name_data->next_result();

		$bank_data = array();
		foreach ($bank_name_rslt as $value){
			$ifsc              = $value->ifsc_code;
			$bank_name         = $value->bank_name;
			$bank_data[$ifsc]  = $bank_name;
		}
		//Get Pay structure Details
		$pay_struct_qry = 'SELECT cw_pay_structure.position,cw_pay_structure.wbs_element,cw_pay_structure.activity_no,network_id,cw_pay_structure.personal_code,personal_name as emp_location,wbs_project_id as project_id,category as role,tax_location FROM cw_pay_structure inner join cw_sap_personal_area on cw_sap_personal_area.personal_code = cw_pay_structure.personal_code inner join cw_sap_wbs on cw_sap_wbs.wbs_id = cw_pay_structure.wbs_element WHERE cw_sap_wbs.wbs_id in ("'.$wbs_elements.'") AND FIND_IN_SET(cw_sap_wbs.wbs_personal_area_id, "'.$this->logged_area_access.'") and cw_pay_structure.trans_status = 1 and cw_pay_structure.status = 1';		
		$pay_struct_info = $this->db->query("CALL sp_a_run ('SELECT','$pay_struct_qry')");
		$pay_struct_rslt = $pay_struct_info->result();
		$pay_struct_info->next_result();

		//get array of data mapping
		$pay_data = array();
		foreach ($pay_struct_rslt as $value){
			$payposition            = $value->position;
			$paywbs                 = $value->wbs_element;
			$pay_data[$payposition][$paywbs] = $value;
		}
		$count      = count($post_data['trline']); //Get count of rows
		$value_arr  = array('activity_no','network_id','personal_code','project_id','role','emp_location');
		$unique_arr = array('aadhar_card_no','pan_number','bank_account_number','mobile_number','emp_name','date_of_birth');
		$val_line   = ""; 
		$error_data = array();	
		$unique_chk = array();	

		//DR CODE FOR BANK VERIFICATION INPUTS ARRAY QUERY
		$bank_verify_qry   = 'select cw_form_setting.label_name from cw_form_setting where cw_form_setting.prime_module_id in ("bank_details_verification") and cw_form_setting.trans_status = "1"';
		$bank_verify_data  = $this->db->query("CALL sp_a_run ('SELECT','$bank_verify_qry')");
		$bank_verify_rslt  = $bank_verify_data->result_array();
		$bank_verify_data->next_result();
		//BANK VERIFY INPUTS ARRAY 
		$bank_verify_arr   = array_column($bank_verify_rslt,"label_name","label_name");
		// $bank_verify_arr    = array('employee_code','emp_name','bank_key','bank_name','bank_account_number','ifsc_code',);
		$bank_val_line     = "";
		$employee_code_arr = array();
		$employee_code     = "";
		for($i=0;$i<$count;$i++){
			$value_line    = "";
			$key_line      = "";
			$bank_key_ins  = "";
			$bank_val_ins  = "";
			$position      = $post_data['position'][$i];
			$wbs_element   = $post_data['wbs_element'][$i]; //NB
			$ifsc_code     = $post_data['ifsc_code'][$i];	
			if($i === 0){
				$employee_code = $this->get_employee_code();
			}else{
				$employee_code = ++$employee_code;
			}
			
			$pt_loc        = $pay_data[$position][$wbs_element]->tax_location;
			foreach($post_data as $key => $value){
				$value     = $value[$i];	
				$val_arr   = explode("_", $trline_arr[$i]);	
				$row_id    = $val_arr[1];	
				if($key === 'bank_key'){
					if($post_data['bank_account_number'][$i] === ""){
						$value = '9200';
					}else{
						$value = '9100';
					}
				}
				if($key === 'bank_name'){
					$value = $bank_data[$ifsc_code];
				}
				if($key === 'bank_account_number'){
					$unique_chk[$key] = $value;
				}
				if($key === 'aadhar_card_no'){
					$aadhar_card_no = $value;
					$unique_chk[$key] = $value;
					$aadhar_pass = substr($aadhar_card_no, -4);
				}
				if($key === 'mobile_number'){
					$mobile_number = $value;
					$unique_chk[$key] = $value;
				}				
				if($key === 'pan_number'){
					if($value){
						$unique_chk[$key] = $value;
					}
				}
				if($key === 'action_reason'){
					$value = '';					
				}
				if($key === 'wci_code'){
					$value = '';					
				}	
				if($key === 'kyc_doc'){
					if(file_exists($value)){ // [MS 25-10-2024]
						$new_name = substr($value,strrpos($value,'/')+1); // MOVE FROM TEMP FOLDER TO NEW FOLDER  [MS 09-09-2024]
						rename("$value","./upload_files/employees/$new_name");
						$value    = "./upload_files/employees/$new_name";
					}else{
						$error_data["upload_kyc_doc_$row_id"] = 'Please Refresh And Try Again';
					}
				}	
				if($key === 'date_of_birth'){
					$dob   = $value;
					$age   = (date('Y') - date('Y',strtotime($dob)));
				}
				if($key === 'employee_code'){					
					$value         = $employee_code;
				}
				//Get value from pay structure
				if(in_array($key, $value_arr)){
					$value   = $pay_data[$position][$wbs_element]->$key;
					if(!$value){
						$error_data["position_$row_id"] = 'Please check Paystructure for this Position';
					}
				}
				//checking wbs and position paystructure   
				if($key === 'wbs_element'){
					$wbs_data   = $pay_data[$position][$wbs_element];
					if(!$wbs_data){
						$error_data["wbs_element_$row_id"] = 'Please check Paystructure for this wbs_element';
					}
				}
				if(in_array($key, $unique_arr)){
					if(!$unique_values[$key][$value]){
						if($value !== ""){
							$unique_values[$key][$value] = true;
						}			            
			        }else{
			        	$error_data[$key."_".$row_id] = 'Duplicate Exist in Column';
			        }					
				}				
				if($key !== 'trline'){
					$value_line .= '"'.$value.'",';
					$key_line   .= $key.',';
					//BANK VERIFY INPUTS ONLY ADD TO INSERT
					if($bank_verify_arr[$key]){
						$bank_val_ins .= '"'.$value.'",';
						$bank_key_ins .= $key.',';	
					}	
				}
			}		
			if(!$bank_data[$ifsc_code]){
				$error_data["ifsc_code_$row_id"] = 'Bank not Available';
			}
			if(!$pay_data[$position]){ //Check pay structure available or not
				$error_data["position_$row_id"] = 'Pay Structure not Available';
			}
			if(!$pay_data[$position][$wbs_element]){ //Check WBS Element available or not
				$error_data["wbs_element_$row_id"] = 'WBS Element not valid';
			}	
			//Check Validation
			foreach($unique_chk as $key => $value){
				if($value !== ""){
					$rslt = $this->validate($aadhar_card_no,$employee_code,$key,$value,"c");
					if(!$rslt['status']){
						if($rslt['table_info']){
							$message = "Already Exist for ".$rslt['table_info'][0]['employee_code'];
						}else{
							$message = $rslt['message'];
						}
						$error_data[$key."_".$row_id] = $message;
					}	
				}							
			}
			$random_number    = rand(100,999);
			$default_password = $aadhar_pass.$random_number;
			$upd_pass         = md5($default_password);
			if($value_line){
				$employee_code_arr[$employee_code] = $employee_code;
				$val_line .= '('.$value_line.'"'.$employee_code.'","'.$age.'","'.$pt_loc.'","'.$upd_pass.'","'.$this->logged_id.'","'.date("Y-m-d H:i:s").'"),';
			}
			if($bank_val_ins){
				$bank_val_line .= '('.$bank_val_ins.'"'.$this->logged_id.'","'.date("Y-m-d H:i:s").'"),';
			}
		}
		
		$val_line      = rtrim($val_line,",");
		$bank_val_line = rtrim($bank_val_line,",");
		$otp_for       = "onboard";
		$ins_emp_code  = '"'.implode('","',$employee_code_arr).'"';
		if($val_line){
			if(empty($error_data)){
				$prime_insert_query    = 'INSERT INTO cw_employees ('.$key_line.'user_name,emp_age,professional_tax_location,password,trans_created_by,trans_created_date) VALUES '.$val_line;
				$insert_info           = $this->db->query("CALL sp_a_run ('INSERT','$prime_insert_query')");
				$insert_result         = $insert_info->result();
				$insert_info->next_result();
			
				if($ins_emp_code){
					$sel_emp_prime_id  = 'SELECT prime_employees_id FROM cw_employees WHERE employee_code IN('.$ins_emp_code.')';
					$prime_id_info     = $this->db->query("CALL sp_a_run ('SELECT','$sel_emp_prime_id')");
					$prime_id_rslt     = $prime_id_info->result();
					$prime_id_info->next_result();
					$emp_prime_id      = array_column($prime_id_rslt,'prime_employees_id');
					$insert_id         = '"'.implode('","',$emp_prime_id).'"';
					$user_right        = 7;
					$this->grants_permission_ins_fun($employee_code_arr,$insert_id,$user_right);
					//BANK DETAILS VERIFCATION TABLE INSERT 
					$bank_ins_qry      = 'INSERT INTO cw_bank_details_verification('.$bank_key_ins.'trans_created_by,trans_created_date) VALUES '.$bank_val_line.'';
					$bank_ins_info     = $this->db->query("CALL sp_a_run ('INSERT','$bank_ins_qry')");
					$bank_ins_rslt     = $bank_ins_info->result();
					$bank_ins_info->next_result();
					//EMPLOYEES KYC DOCUMENT TABLE INSERT 
					$kyc_doc_ins_qry   = 'INSERT INTO cw_employees_kyc_document_details(prime_employees_id,kyc_document,trans_created_by,trans_created_date,trans_status) SELECT prime_employees_id,kyc_doc,"'.$this->logged_id.'","'.date("Y-m-d H:i:s").'",trans_status FROM cw_employees WHERE prime_employees_id IN('.$insert_id.') ';
					$kyc_doc_info      = $this->db->query("CALL sp_a_run ('INSERT','$kyc_doc_ins_qry')");
					$kyc_ins_rslt      = $kyc_doc_info->result();
					$kyc_doc_info->next_result();
					echo json_encode(array('success' => TRUE, 'message' => "Successfully added"));
				}else{
					echo json_encode(array('success' => FALSE, 'message' => "Please try After sometime..."));
				}			
				//("'.$ins_id.'","'.$kyc_document.'","'.$this->logged_id.'","'.date("Y-m-d H:i:s").'","1")
				$wbs_sts_qry         = 'SELECT payslip_status FROM cw_sap_wbs WHERE wbs_id = "'.$wbs_id.'" and trans_status=1';
				$wbs_info              = $this->db->query("CALL sp_a_run ('SELECT','$wbs_sts_qry')");
				$wbs_sts_rslt          = $wbs_info->result();
				$wbs_info->next_result();
				$payslip_status        = $wbs_sts_rslt[0]->payslip_status;
				if((int)$payslip_status === 1){
					$otp_code_msg      = $this->Module->send_sms($mobile_number,$employee_code,$default_password,$resend,$otp_for);
				}
			}else{
				echo json_encode(array('success' => FALSE, 'message' => "Validation error...",'err_data'=>$error_data));
			}			
		}
	}
	//get data from pay structure for default fetch
	public function wbs_pay_structure(){ 
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$wbs_element    = $this->input->post('wbs_element');
		$position       = $this->input->post('position');		
		//pay structure select qry
		$pay_struct_qry = 'SELECT cw_sap_activity.act_no as activity_no,network_id,cw_pay_structure.personal_code,personal_name,wbs_project_id as project_id,category FROM cw_pay_structure inner join cw_sap_personal_area on cw_sap_personal_area.personal_code = cw_pay_structure.personal_code inner join cw_sap_wbs on cw_sap_wbs.wbs_id = cw_pay_structure.wbs_element inner join cw_sap_activity on cw_sap_activity.prime_sap_activity_id = cw_pay_structure.activity_no and act_wbs_id = cw_sap_wbs.wbs_id WHERE cw_sap_wbs.wbs_id = "'.$wbs_element.'" and cw_pay_structure.position = "'.$position.'" and cw_pay_structure.trans_status = 1 and cw_pay_structure.status = 1';
		$pay_struct_info = $this->db->query("CALL sp_a_run ('SELECT','$pay_struct_qry')");
		$pay_struct_rslt = $pay_struct_info->result_array();
		$pay_struct_info->next_result();
		if($pay_struct_rslt){
			echo json_encode(array('success' => TRUE, 'pay_struct_rslt' => $pay_struct_rslt));	
		}else{
			echo json_encode(array('success' => FALSE, 'pay_struct_rslt' => $pay_struct_rslt));	
		}
	}
	//get last employee code
	public function get_employee_code(){
		$emp_exist_qry = 'select MAX(CAST(employee_code AS UNSIGNED)) as employee_code from cw_employees where prime_employees_id != 1 ';
		$emp_exist_data    = $this->db->query("CALL sp_a_run ('SELECT','$emp_exist_qry')");
		$emp_exist_result  = $emp_exist_data->result();
		$emp_exist_data->next_result();
		$final_code        = $emp_exist_result[0]->employee_code;
		if($final_code){
			return ++$final_code;
		}
	}

	//Get pickdata
	public function get_data(){
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$search_term      = $this->input->post('term');
		$source           = $this->input->post('source');       
		$search_info      = $this->db->query("CALL sp_sap_picks('$search_term','$source','$source')");
		$search_rslt      = $search_info->result();
		$search_info->next_result();
		if($search_rslt[0]){
			echo json_encode(array('success' => true, 'search_rslt' => $search_rslt));
		}else{
			echo json_encode(array('success' => false, 'message' => "No Data Found..!"));
		}
	}
	//WBS ELEMENT
	public function get_wbs(){
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
        $search_term      = $this->input->post('term');
        $source           = $this->input->post('source');
        if($source === 'wbs_element'){
            $source = "'" . $this->logged_area_access . "'";
        }
        $search_term = $this->db->escape($search_term); // Sanitize search term
        $search_qry = "SELECT DISTINCT wbs_id, wbs_desc FROM cw_sap_wbs INNER JOIN cw_pay_structure ON cw_pay_structure.wbs_element = cw_sap_wbs.wbs_id AND cw_pay_structure.personal_code = cw_sap_wbs.wbs_personal_area_id  AND STATUS = 1 WHERE cw_sap_wbs.trans_status = 1 AND FIND_IN_SET(cw_sap_wbs.wbs_personal_area_id, $source) AND (cw_sap_wbs.wbs_id LIKE CONCAT('%', $search_term , '%') OR cw_sap_wbs.wbs_desc LIKE CONCAT('%', $search_term , '%'))";
        $search_info = $this->db->query($search_qry);
        $search_rslt = $search_info->result();
        $search_info->next_result();
        if($search_rslt[0]){
            echo json_encode(array('success' => true, 'search_rslt' => $search_rslt));
        }else{
            echo json_encode(array('success' => false, 'message' => "No Data Found..!"));
        }
    }
	public function get_pick(){
		$this->get_all_pick();	 
		if($this->pick_list){
			echo json_encode(array('success' => true, 'pick_list' => $this->pick_list));
		}else{
			echo json_encode(array('success' => false, 'message' => "No Data Found..!"));
		}
	}
	//Generate Dynamic Employee Code Auto
	public function get_digits($role){
		$select_qry    = 'select * from cw_employee_code_auto where (category = "'.$role.'" or category = "All") and trans_status = 1';

		$select_data   = $this->db->query("CALL sp_a_run ('SELECT','$select_qry')");
		$select_result = $select_data->result();
		$select_data->next_result();
		$num_rows      = $select_data->num_rows();
		$prefix        = $select_result[0]->prefix;
		$start_value   = $select_result[0]->start_value;
		$category      = $select_result[0]->category;
		$prefix_count  = 0;
		$prefix_qry = "";
		if($prefix){
			$prefix = strtoupper($prefix);
			$prefix_count = strlen($prefix);
			$prefix_qry = ' and employee_code like "%'.$prefix.'%"';
		}
		if($category === "All"){
			$emp_count_qry = 'select MAX(employee_code) as employee_code from cw_employees where prime_employees_id != 1 '.$prefix_qry;
		}else{
			$emp_count_qry = 'select MAX(employee_code) as employee_code from cw_employees where role = "'.$role.'" and prime_employees_id != 1 and employee_code != ""'.$prefix_qry;
		}		
		$emp_count_data    = $this->db->query("CALL sp_a_run ('SELECT','$emp_count_qry')");
		$emp_count_result  = $emp_count_data->result();
		$emp_count_data->next_result();
		$max_count         = $emp_count_result[0]->employee_code;	
		if($max_count){
			if((int)$num_rows > 0){
				$max_count = substr($max_count,$prefix_count);
				$digits    = $max_count +1;
				return $prefix."".$digits;
			}else{
				return false;
			}
		}else{
			return $prefix.$start_value;
		}
	}
	//fetch_data
	public function fetch_data(){
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$aadhar_card_arr = json_encode(array('aadhar_number'=>$this->input->post('aadhar_card_no_arr'))); 
		//Get Bearer token
		$token_rslt    = $this->get_token(); 
		$token_data    = json_decode($token_rslt);
		$api_token     = $token_data->session->token;

		//Get Aadhar based information		
		$aadhar_rslt   = $this->get_aadhar_details($aadhar_card_arr,$api_token);
		$aadhar_data   = json_decode($aadhar_rslt);
		$data          = $aadhar_data->data;
		$status        = $aadhar_data->status;
		$api_map_arr   = $this->api_mapping_columns();
		echo json_encode(array('status' => $status->status, "code" => $status->code, 'aadhar_data' => $data , 'api_mapping_arr' => $api_map_arr));
	}

	// API LOGIN 
	public function get_token(){
		$curl = curl_init();
		curl_setopt_array($curl, array(
		  CURLOPT_URL => $this->$app_url.'/login/',
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => '',
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 0,
		  CURLOPT_FOLLOWLOCATION => true,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => 'POST',
		  CURLOPT_POSTFIELDS =>'{
			"email": "api@uds.in",
			"password": "9mWLbouyFEQUqyN"
		}',
		  CURLOPT_HTTPHEADER => array(
			'Content-Type: application/json'
		  ),
		));
		$response = curl_exec($curl);
		curl_close($curl);
		return $response;
	}

	// GET ONBOARD EMPLOYEES AADHAR CARD DETAILS
	public function get_aadhar_details($aadhar_card_arr,$api_token){
		$curl = curl_init();
		curl_setopt_array($curl, array(
		CURLOPT_URL => $this->$app_url."/aadhar/", 
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_ENCODING => '',
		CURLOPT_MAXREDIRS => 10,
		CURLOPT_TIMEOUT => 0,
		CURLOPT_FOLLOWLOCATION => true,
		CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		CURLOPT_CUSTOMREQUEST => 'POST',
		CURLOPT_POSTFIELDS =>"$aadhar_card_arr",
		CURLOPT_HTTPHEADER => array(
			'Authorization: Bearer '.$api_token,
			'Content-Type: application/json'
		),
		));
		$response = curl_exec($curl);
		curl_close($curl);
		return $response;
	}

	// GET API KEY AND OUR KEY FOR HTML INPUT NAME
	public function api_mapping_columns(){
		$select_key_qry     = 'SELECT our_key,api_key FROM cw_api_mapping WHERE api_for = "ONBOARD" and trans_status = 1';
		$select_key_data    = $this->db->query("CALL sp_a_run ('SELECT','$select_key_qry')");
		$select_key_result  = $select_key_data->result_array();
		$select_key_data->next_result();
		$api_key_arr        = array();
		foreach($select_key_result as $api_keys){
			$api_key_arr[$api_keys['api_key']] = $api_keys['our_key'];
		}
		return $api_key_arr;
	}	

	// FILE HANDLING FOR KYC DOCUMENT
	public function kyc_file_handling(){
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$path        = $this->input->post('url');
		$file_name   = substr($path,strrpos($path,'/')+1);
		$data        = file_get_contents($path);
		$dest        = "./onboard_tmp/".$file_name;
		$fp          = fopen($dest,'wb');
		$message     = '';
		if ( $fp   === FALSE ){ $message = "Error in file open";}
		$result      = fwrite($fp,$data);
		if ( $result === FALSE ){ $message = "Can not write to $dest";}
		$result      = fclose($fp);
		$path_info   = pathinfo("$dest");
		$file_type   = $path_info['extension']; 
		if($result){
			echo json_encode(array('status' => 'success', 'message' => 'Temp File Created..', 'path' => "$dest", 'file_type' => $file_type));
		}else{
			echo json_encode(array('status' => 'failed',  'message' => $message));
		}
	}
}
?>