File: /home/cafsindia/hrms_allyindian_com/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' => 'Url Expired.. Please refresh the page and try again....','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;
}
}
?>