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/smart_hrms_dev/application/controllers/Attendance_report.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Action_controller.php");
class Attendance_report  extends Action_controller{
	// public $fliter_list;
	// public $leave_sts_list;
	public function __construct(){
		parent::__construct('attendance_report');
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
		$this->load->model('Process_payroll_model');
		$this->load->model('Module');
		$this->load->library('pdf');
	}
	
	// LOAD PAGE WITH TABLE DATA
	public function index(){
		//for fliter option
		$data['key'] = $this->generateKey();
		$from_query  = 'select * from cw_form_setting where prime_module_id = "employees" and search_show = "1" and input_view_type != 3 and label_name != "role" ORDER BY input_for,field_sort asc';
		$form_data   = $this->db->query("CALL sp_a_run ('SELECT','$from_query')");
		$form_result = $form_data->result();
		$form_data->next_result();
		$this->fliter_list    = $this->get_filter_data($form_result);
		$data['fliter_list']  = $this->fliter_list;
		$this->load->view("$this->control_name/manage",$data);
	}
	
	//GENERATE MUSTER REPORT
	public function get_muster_report(){
		$this->search_info();
		// $module_sts       = (int)$this->module_sts;
		// if(!$module_sts){
		// 	echo json_encode(array('success' => FALSE, 'message' => "Search  Info Query Process Error..!"));
		// 	exit(0);
		// }else{
			$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);
			}
			$process_month             = $this->input->post('process_month');
			/*$process_date              = date("Y-m-d",strtotime("01-".$process_month));
			$start_date                = $process_date;
			$end_date                  = date('Y-m-t',strtotime($process_date));*/
			$fliter_query              = "";
			$tos_salary_dates          = $this->tos_sal_strt_end_info("4",$process_month); // 4 => Posting Entry
			$start_date                = date("Y-m-d",strtotime($tos_salary_dates['salary_start_date']));
			$end_date                  = date("Y-m-d",strtotime($tos_salary_dates['salary_end_date']));
			//Muster transaction qry
			$muster_transaction_qry    = 'select * from cw_muster_transaction where cw_muster_transaction.set_default = "1" and cw_muster_transaction.trans_status = 1';
			$muster_transaction_info   = $this->db->query("CALL sp_a_run ('SELECT','$muster_transaction_qry')");
			$muster_transaction_rslt   = $muster_transaction_info->result();
			$muster_transaction_info->next_result();

			$category                  = $muster_transaction_rslt[0]->category;
			$emp_component             = implode('","',explode(",",$muster_transaction_rslt[0]->emp_component));
			$time_office_comp_arr      = explode(",",$muster_transaction_rslt[0]->time_office_component);	
			$time_office_comp_arr1     = explode(",",$muster_transaction_rslt[0]->time_office_component);
			//for key and value would change from same array
			$show_time_office_comp_arr = array_combine($time_office_comp_arr, $time_office_comp_arr1);

			$cat_count                 = count(explode(",",$category));
			if((int)$cat_count){
			//time office components count array build codes 
				$count_type_arr    =  array(""=>"---- Select Column----","P"=>"Present Count","A"=>"Absend Count","L"=>"Leave Count","H"=>"Holiday Count","W"=>"Weekoff Count","OD"=>"Onduty Count","M"=>"Manualpunch Count");

				//LEAVE CREATION QRY FOR GET A ALL LEAVE NAME for add a 
				$leave_name_qry    = 'SELECT prime_leave_creation_id,leave_name,CONCAT_WS(" ",leave_name,"count") as leave_count FROM cw_leave_creation WHERE trans_status = 1';
				$leave_name_info   = $this->db->query("CALL sp_a_run ('SELECT','$leave_name_qry')");
				$leave_name_rslt   = $leave_name_info->result_array();
				$leave_name_info->next_result();

				$leave_name_arr    = array_reduce($leave_name_rslt, function ($result, $arr) {		
					$result[$arr['leave_name']] = $arr['leave_count'];
					return $result;
				}, array());

				//sHIFT MASTER QRY FOR GET A ALL SHIFT NAME
				$shift_name_qry    = 'SELECT prime_shift_master_id,shift_name,CONCAT_WS(" ",shift_name,"count") as shift_count FROM cw_shift_master WHERE trans_status = 1';
				$shift_name_info   = $this->db->query("CALL sp_a_run ('SELECT','$shift_name_qry')");
				$shift_name_rslt   = $shift_name_info->result_array();
				$shift_name_info->next_result();

				$shift_name_arr    = array_reduce($shift_name_rslt, function ($result, $arr) {		
					$result[$arr['shift_name']] = $arr['shift_count'];
					return $result;
				}, array());

				$all_time_office_comp_arr = $count_type_arr + $leave_name_arr + $shift_name_arr;

				$fliter_label      = $this->input->post('fliter_label');
				$fliter_type       = $this->input->post('fliter_type');
				$filter_cond       = $this->input->post('filter_cond');
				$fliter_val        = $this->input->post('fliter_val');
				$filter_count      = count($fliter_label ?? []);
				$search_count      = 0;

				for($i=0;$i<=(int)$filter_count;$i++){
					$db_name     = $fliter_label[$i];
					$table_name  = $fliter_type[$i];
					$db_cond     = $filter_cond[$i];
					$db_value    = $fliter_val[$i];
					$field_type  = $field_type[$i];
					if(($db_cond) && ($db_value)){
						$search_count++;
						if((int)$field_type === 4){
							$search_val = date("Y-m-d",strtotime($db_value));
						}else{
							$search_val = $db_value;
						}
						if($db_cond === "LIKE"){ $search_val = "$db_value%"; }
						if((int)$table_name === 1){
							$this->prime_table = "cw_employees";
							$fliter_query .= ' and '. $this->prime_table .".". $db_name ." ". $db_cond .' "'.$search_val.'"'; 
						}
					}			
				}
				if($emp_component){
					//FOR DATE FORMAT AND PICKLIST VALUE SHOW IN TABLE ROW OR EXCEL ROW
					$find_label_qry   = 'select * from cw_form_setting where trans_status = 1 and prime_module_id = "employees" and label_name in ("'.$emp_component.'")';
					$find_label_info  = $this->db->query("CALL sp_a_run ('SELECT','$find_label_qry')");
					$label_result     = $find_label_info->result();
					$find_label_info->next_result();
					$select_query     = "";
					foreach($label_result as $rslt){
						$prime_form_id      = (int)$rslt->prime_form_id;
						$prime_module_id    = $rslt->prime_module_id;
						$input_view_type    = (int)$rslt->input_view_type;
						$input_for          = (int)$rslt->input_for;
						$field_type         = (int)$rslt->field_type;
						$label_id           = $rslt->label_name;
						$label_name         = ucwords($rslt->view_name);
						$field_length       = $rslt->field_length;
						$field_decimals     = $rslt->field_decimals;
						$pick_list_type     = (int)$rslt->pick_list_type;
						$pick_list          = $rslt->pick_list;
						$pick_table         = $rslt->pick_table;
						$auto_prime_id      = $rslt->auto_prime_id;
						$auto_dispaly_value = $rslt->auto_dispaly_value;
						$field_isdefault    = (int)$rslt->field_isdefault;
						$pick_display       = $rslt->pick_display_value;
						$table_name         = "cw_employees";
						if($field_isdefault === 1){
							$pick_sel_table = "$table_name";
						}
						if((int)$prime_form_id === 0){
							$label_name = ucwords(str_replace("_"," ",$label_list));
							$label_id   = $label_list;
						}
						
						//TABLE HEADER
						$table_array[]  = array('field_type'=>$field_type,'label_name'=>$label_id,'view_name'=>$label_name);
						$array_list = array();
						//SEARCH FILTERS
						if($field_type === 4){
							$select_query .= 'CASE WHEN '.$pick_sel_table.'.'.$label_id.' IS NULL or '.$pick_sel_table.'.'.$label_id.' = "1970-01-01" or '.$pick_sel_table.'.'.$label_id.' = "0000-00-00" then "" else DATE_FORMAT('.$pick_sel_table.'.'.$label_id.', "%d-%m-%Y") end as '.$label_id.',';
						}else
						if(($field_type === 5) || ($field_type === 7)){
							if($pick_list_type === 1){
								$pick_list_val   = explode(",",$pick_list);
								$pick_list_val_1 = $pick_list_val[0];
								$pick_list_val_2 = $pick_list_val[1];
								//pick query for get a picklist data
								$pick_query = "select $pick_list from $pick_table where trans_status = 1 $where_condition";
								$pick_data   = $this->db->query("CALL sp_a_run ('SELECT','$pick_query')");
								$pick_result = $pick_data->result();
								$pick_data->next_result();
								
								$array_list[""] = "---- $label_name ----";
								foreach($pick_result as $pick){
									$pick_key = $pick->$pick_list_val_1;
									$pick_val = $pick->$pick_list_val_2;
									$array_list[$pick_key] = $pick_val;
								}
								// $this->all_pick[$prime_form_id] = $array_list;
								$pick_query_as = $pick_table."_".$prime_form_id;
								if(($input_view_type === 1) || ($input_view_type === 2)){
									if($pick_table === "cw_employees"){
										$select_query .= 'CONCAT_WS(" - ", '.$pick_query_as.'.'.$pick_list_val_1.','.$pick_query_as.'.'.$pick_list_val_2.') as '.$label_id.',';
									}else{
										$select_query .= "$pick_query_as.$pick_list_val_2 as $label_id,";
									}
									$pick_query_join .= " left join $pick_table as $pick_query_as on $pick_query_as.$pick_list_val_1 = $pick_sel_table.$label_id ";
								}
							}else
							if($pick_list_type === 2){ 
								$pick_list_val_1 = $pick_table."_id";
								$pick_list_val_2 = $pick_table."_value";
								$pick_list_val_3 = $pick_table."_status";
								
								$pick_query = "select $pick_list_val_1,$pick_list_val_2 from $pick_table where $pick_list_val_3 = 1";
								$pick_data   = $this->db->query("CALL sp_a_run ('SELECT','$pick_query')");
								$pick_result = $pick_data->result();
								$pick_data->next_result();
								
								$array_list[""] = "---- $label_name ----";
								foreach($pick_result as $pick){
									$pick_key = $pick->$pick_list_val_1;
									$pick_val = $pick->$pick_list_val_2;
									$array_list[$pick_key] = $pick_val;
								}
								// $this->all_pick[$prime_form_id] = $array_list;
								$pick_query_as = $pick_table."_".$prime_form_id;
								if(($input_view_type === 1) || ($input_view_type === 2)){
									$select_query .= "$pick_query_as.$pick_list_val_2 as $label_id,";
									$pick_query_join .= " left join $pick_table as $pick_query_as on $pick_query_as.$pick_list_val_1 = $pick_sel_table.$label_id ";
								}
							}
						}else
						if($field_type === 9){
							$pick_query_as = $pick_table."_".$prime_form_id;
							if(($input_view_type === 1) || ($input_view_type === 2)){
								$select_query .= "$pick_query_as.$auto_dispaly_value as $label_id,";
								$pick_query_join .= " left join $pick_table as $pick_query_as on $pick_query_as.$auto_prime_id = $pick_sel_table.$label_id ";
							}
						}else
						if($field_type === 13){
							$select_query .= 'DATE_FORMAT('.$pick_sel_table.'.'.$label_id.', "%d-%m-%Y %H:%i:%s") as '.$label_id.',';
						}else{
							if(($input_view_type === 1) || ($input_view_type === 2)){
								if($field_isdefault === 1){
									$select_query .= "$pick_sel_table.$label_id,";
								}else
								if($field_isdefault === 2){
									$select_query .= "$pick_sel_table.$label_id,";
								}
							}
						}
					}
				}
				$role_condition      = "";
				if($this->role_condition){
					$role_condition = $this->role_condition;
				}
				// $select_query     = rtrim($select_query,",");
				$emp_qry 	   = 'SELECT '.$select_query.'cw_employees.employee_code,cw_employees.emp_name,last_working_date FROM `cw_employees` '.$pick_query_join.' where cw_employees.trans_status = 1 and (cw_employees.termination_status = 0 or cw_employees.last_working_date >= "'.$start_date.'") and cw_employees.role in ('.$category.')'.$fliter_query.' '.$role_condition;
				$emp_info      = $this->db->query("CALL sp_a_run ('SELECT','$emp_qry')");
				$emp_rslt 	   = $emp_info->result_array();
				$emp_info->next_result();
				$emp_rslt_arr = array();
				foreach ($emp_rslt as $key => $value) {
					$emp_rslt_arr[$value['employee_code']] = $value;
				}
				
				$muster_report  = $this->get_muster_details($emp_rslt_arr,$start_date,$end_date,$category,$emp_component,$show_time_office_comp_arr,'report',$process_month,'');

				echo json_encode(array('success'=>TRUE, 'muster_report' => $muster_report, 'message'=>'Successfully Report Generated..!!'));
			}else{
				echo json_encode(array('success'=>TRUE, 'message'=>'Category Should Not Empty..!!'));
			}
		// }
	}
	//PROVIDE QUERY AND DROPDOWN VALUES 
	public function get_filter_data($form_result){
		$filter = array();
		foreach($form_result as $setting){
			$prime_form_id      = (int)$setting->prime_form_id;
			$prime_module_id    = $setting->prime_module_id;
			$input_view_type    = (int)$setting->input_view_type;
			$input_for          = (int)$setting->input_for;
			$field_type         = (int)$setting->field_type;
			$label_id           = $setting->label_name;
			$label_name         = ucwords($setting->view_name);
			$field_length       = $setting->field_length;
			$field_decimals     = $setting->field_decimals;
			$pick_list_type     = (int)$setting->pick_list_type;
			$pick_list          = $setting->pick_list;
			$pick_table         = $setting->pick_table;
			$auto_prime_id      = $setting->auto_prime_id;
			$auto_dispaly_value = $setting->auto_dispaly_value;
			$field_isdefault    = (int)$setting->field_isdefault;
			$file_type          = (int)$setting->file_type;
			$mandatory_field    = (int)$setting->mandatory_field;
			$unique_field       = (int)$setting->unique_field;
			$search_show        = (int)$setting->search_show;
			$array_list = array();
			//if( $label_id != 'employee_code' && $label_id != 'emp_name'){
				if(($field_type === 5) || ($field_type === 7)){
					if($pick_list_type === 1){
						$pick_list_val   = explode(",",$pick_list);
						$pick_list_val_1 = $pick_list_val[0];
						$pick_list_val_2 = $pick_list_val[1];
						if($pick_table == "cw_category"){
							$qry = " and prime_category_id != 1";
							}else{
							$qry = "";
						}
						if($pick_table == "cw_payroll_formula"){
							$pick_query = "select $pick_list from $pick_table where trans_status = 1";
							$pick_data   = $this->db->query("CALL sp_a_run ('SELECT','$pick_query')");
							$pick_result = $pick_data->result();
							$pick_data->next_result();
							$array_list[""] = "---- $label_name ----";
							foreach($pick_result as $pick){
								$pick_key = $pick->$pick_list_val_1;
								$pick_val = ucwords(str_replace("_"," ",$pick->$pick_list_val_2));
								$array_list[$pick_key] = $pick_val;
							}
						}else{
							if($label_id === "excemption_component"){
								$pick_query = "select $pick_list from $pick_table where trans_status = 1 and tax_section = 1 $qry";
								}else{
								$pick_query = "select $pick_list from $pick_table where trans_status = 1 $qry";
							}
							$pick_data   = $this->db->query("CALL sp_a_run ('SELECT','$pick_query')");
							$pick_result = $pick_data->result();
							$pick_data->next_result();
							
							$array_list[""] = "---- $label_name ----";
							foreach($pick_result as $pick){
								$pick_key = $pick->$pick_list_val_1;
								$pick_val = $pick->$pick_list_val_2;
								$array_list[$pick_key] = $pick_val;
							}
						}
					}else
					if($pick_list_type === 2){ 
						$pick_list_val_1 = $pick_table."_id";
						$pick_list_val_2 = $pick_table."_value";
						$pick_list_val_3 = $pick_table."_status";
						
						$pick_query = "select $pick_list_val_1,$pick_list_val_2 from $pick_table where $pick_list_val_3 = 1";
						$pick_data   = $this->db->query("CALL sp_a_run ('SELECT','$pick_query')");
						$pick_result = $pick_data->result();
						$pick_data->next_result();
						
						$array_list[""] = "---- $label_name ----";
						foreach($pick_result as $pick){
							$pick_key = $pick->$pick_list_val_1;
							$pick_val = $pick->$pick_list_val_2;
							$array_list[$pick_key] = $pick_val;
						}
					}
				}		
				if(($input_view_type === 1) || ($input_view_type === 2)){
					$filter[] = array('label_id'=> $label_id, 'field_isdefault'=> $field_isdefault, 'array_list'=> $array_list, 'field_type'=> $field_type);
				}
			//}
		}
		return $filter;
	}	
}
?>