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/cpaqua.cafsinfotech.in/dump/application/controllers/Work_load.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Action_controller.php");
class Work_load  extends Action_controller{	
	public function __construct(){
		parent::__construct('work_load');
		$this->collect_base_info();
	}
	
	// LOAD PAGE QUICK LINK,FILTERS AND TABLE HEADERS
	public function index(){
		$data['encKey']  = $this->generateKey();
		$this->load->view("$this->control_name/manage",$data);
	}

	// WORK PLAN REPORT
	public function workload_report(){
		//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);
		}
		$from_date      = date('Y-m-d', strtotime($this->input->post('from_date')));
		$to_date        = date('Y-m-d', strtotime($this->input->post('to_date')));
		$start_date     = new DateTime($from_date);
		$end_date       = new DateTime($to_date);
		$end_date->modify('+1 day');
		$dateInterval   = new DateInterval('P1D');
		$datePeriod     = new DatePeriod($start_date, $dateInterval, $end_date);
		$date_array     = [];
		foreach($datePeriod as $date){
			$date_array[] = $date->format('Y-m-d');
		}
		$date_count     = count($date_array) + 1;

		# RETRIEVE DATA FROM PROJECT LIST [APPROX DAYS] WHOSE WORK STATUS NOT COMPLETED
		$wrk_day_qry    = 'SELECT master_checker,target_date,approx_weight,approx_days FROM cw_project_list INNER JOIN cw_est_time_sheet_est_time_line AS line ON line.project = cw_project_list.prime_project_list_id WHERE line.trans_status = 1 AND cw_project_list.trans_status = 1 AND work_status <> 3 GROUP BY master_checker';
		$wrk_day_info   = $this->db->query("CALL sp_a_run ('SELECT','$wrk_day_qry')");
		$wrk_day_rslt   = $wrk_day_info->result();
		$wrk_day_info->next_result();

		# RETRIEVE DATA FROM PROJECT LIST [PROJECT COUNT]
		$job_count_qry  = 'SELECT master_checker,target_date FROM cw_project_list WHERE trans_status = 1';
		$job_count_info = $this->db->query("CALL sp_a_run ('SELECT','$job_count_qry')");
		$job_count_rslt = $job_count_info->result();
		$job_count_info->next_result();

		# RETRIEVE DATA FROM PROJECT LIST [APPROX DAYS]
		$apx_day_qry    = 'SELECT master_checker,target_date,approx_weight,approx_days FROM cw_project_list WHERE trans_status = 1 ';
		$apx_day_info   = $this->db->query("CALL sp_a_run ('SELECT','$apx_day_qry')");
		$apx_day_rslt   = $apx_day_info->result();
		$apx_day_info->next_result();

		# RETRIEVE DATA FROM PROJECT LIST [APPROX TON]
		$apx_ton_qry    = 'SELECT master_checker,target_date,approx_weight,approx_days FROM cw_project_list WHERE trans_status = 1 AND bid_status <> 4';
		$apx_ton_info   = $this->db->query("CALL sp_a_run ('SELECT','$apx_ton_qry')");
		$apx_ton_rslt   = $apx_ton_info->result();
		$apx_ton_info->next_result();

		# EMPLOYEE NAME
		$emp_qry        = 'SELECT employee_code,emp_name FROM cw_employees WHERE trans_status = 1';
		$emp_info       = $this->db->query("CALL sp_a_run ('SELECT','$emp_qry')");
		$emp_rslt       = $emp_info->result();
		$emp_info->next_result();
		$emp_array      = [];
		foreach($emp_rslt as $emp){
			$emp_array[$emp->employee_code] = $emp->emp_name;
		}

		# TABLE HEAD
		$table_head   = '<thead><tr>';
		$table_head  .= '<th>TEAM LEADERS</th>';
		foreach($date_array as $key => $date){
			$date_month  = date('d-M', strtotime($date));
			$table_head .= '<th>'.$date_month.'</th>';
		} 
		$table_head  .= '</tr></thead>';
	
		# TABLE BODY 
		$table_body   = '<tbody>';
		foreach($job_count_rslt as $pro){
			$mc = $pro->master_checker;
			if(!isset($job_count[$mc])){
				$job_count[$mc] = array_fill_keys($date_array, 0);
			}
			if(isset($job_count[$mc][$pro->target_date])){
				$job_count[$mc][$pro->target_date]++;
			}
		}
		foreach($job_count as $mas_chk => $value){
			$table_body .= '<tr><td style="text-align:left;">'.$emp_array[$mas_chk].'</td>';
			foreach($value as $date => $sum){
				$table_body .= '<td><input class = "form-control input-sm"></td>';
			}
			$table_body .= '</tr>';
		}

		#----------------------------------------APPROX DAYS[WORK STATUS NOT COMPLETED] ------------------------------- #
		$table_body  .= '<tr><td colspan="'.(count($date_array) + 1).'" style="text-align:left;color:#FFFFFF !important;background-color:#136eab !important;font-weight:bold;">DAYS (Sum Of Approx Days Except Work Status Completed)</td></tr>';
		// foreach($date_array as $date){
		// 	$table_body .= '<td></td>'; # EMPTY LINE
		// } 
		// $table_body  .= '</tr>';

		# APPROX DAYS SUM FOR THOSE WHOSE WORK STATUS NOT COMPLETED
		$work_days    = [];
		foreach($wrk_day_rslt as $pro){
			$nxt_date = date('Y-m-d', strtotime('+' . $pro->approx_days . ' day', strtotime($pro->target_date)));
			$mc       = $pro->master_checker;
			if(!isset($work_days[$mc])){
				$work_days[$mc] = array_fill_keys($date_array, 0);
			}
			if(isset($work_days[$mc][$nxt_date])){
				$work_days[$mc][$nxt_date] += $pro->approx_days;
			}
		}

		# TABLE ROWS -> APPROX DAYS
		foreach($work_days as $mas_chk => $value){
			$table_body .= '<tr><td style="text-align:left;">'.$emp_array[$mas_chk].'</td>';
			foreach($value as $date => $sum){
				$table_body .= '<td>'.($sum == 0 ? '-' : $sum).'</td>';
			}
			$table_body .= '</tr>';
		}
		#----------------------------------------APPROX DAYS[WORK STATUS NOT COMPLETED] ------------------------------- #

		#------------------------------------------------- COUNT OF JOBS ---------------------------------------------- #
		$table_body .= '<tr><td colspan="'.(count($date_array) + 1).'" style="text-align:left;color:#FFFFFF !important;background-color:#136eab !important;font-weight:bold;">SUBMISSION(Count Of Jobs)</td></tr>';
		// foreach($date_array as $date){
		// 	$table_body .= '<td></td>'; # EMPTY LINE
		// } 
		// $table_body .= '</tr>';

		# PROJECT COUNT
		$job_count = [];
		foreach($job_count_rslt as $pro){
			$mc = $pro->master_checker;
			if(!isset($job_count[$mc])){
				$job_count[$mc] = array_fill_keys($date_array, 0);
			}
			if(isset($job_count[$mc][$pro->target_date])){
				$job_count[$mc][$pro->target_date]++;
			}
		}

		# TABLE ROWS -> JOB COUNT
		foreach($job_count as $mas_chk => $value){
			$table_body .= '<tr><td style="text-align:left;">'.$emp_array[$mas_chk].'</td>';
			foreach($value as $date => $sum){
				$table_body .= '<td>'.($sum == 0 ? '-' : $sum).'</td>';
			}
			$table_body .= '</tr>';
		}

		#------------------------------------------------- COUNT OF JOBS ---------------------------------------------- #

		#-------------------------------------------------- APPROX DAYS ------------------------------------------------ #
		$table_body .= '<tr><td colspan="'.(count($date_array) + 1).'" style="text-align:left;color:#FFFFFF !important;background-color:#136eab !important;font-weight:bold;">SIZE (Sum Of Approx Days)</td></tr>';
		// echo ;die;
		// foreach($date_array as $date){
		// 	$table_body .= '<td></td>'; # EMPTY LINE
		// } 
		// $table_body .= '';

		# APPROX DAYS SUM BASED ON TARGET DAYS INCLUDING SUBMITTED DATE
		$approx_days    = [];
		foreach($apx_day_rslt as $pro){
			$nxt_date   = date('Y-m-d', strtotime('+' . $pro->approx_days . ' day', strtotime($pro->target_date)));
			$mc         = $pro->master_checker;
			if(!isset($approx_days[$mc])){
				$approx_days[$mc] = array_fill_keys($date_array, 0);
			}
			if(isset($approx_days[$mc][$nxt_date])){
				$approx_days[$mc][$nxt_date] += $pro->approx_days;
			}
		}

		# TABLE ROWS -> APPROX DAYS
		foreach($approx_days as $mas_chk => $value){
			$table_body .= '<tr><td style="text-align:left;">'.$emp_array[$mas_chk].'</td>';
			foreach($value as $date => $sum){
				$table_body .= '<td>'.($sum == 0 ? '-' : $sum).'</td>';
			}
			$table_body .= '</tr>';
		}
		#-------------------------------------------------- APPROX DAYS ------------------------------------------------ #

		#-------------------------------------------------- APPROX TONS ------------------------------------------------ #	
		$table_body .= '<tr><td colspan="'.(count($date_array) + 1).'" style="text-align:left;color:#FFFFFF !important;background-color:#136eab !important;font-weight:bold;">Approx Tons</td></tr>';
		// foreach($date_array as $date){
		// 	$table_body .= '<td></td>'; # EMPTY LINE
		// } 
		// $table_body .= '</tr>';

		# APPROX WEIGHT SUM BASED TARGET DATE WITHOUT SUBMITTED DATE
		$approx_tons    = [];
		foreach($apx_ton_rslt as $pro){
			$nxt_date   = date('Y-m-d', strtotime('+' . $pro->approx_days . ' day', strtotime($pro->target_date)));
			$mc         = $pro->master_checker;
			if(!isset($approx_tons[$mc])){
				$approx_tons[$mc] = array_fill_keys($date_array, 0);
			}
			if(isset($approx_tons[$mc][$nxt_date])){
				$approx_tons[$mc][$nxt_date] += $pro->approx_weight;
			}
		}

		# TABLE ROWS
		foreach($approx_tons as $mas_chk => $value){
			$table_body .= '<tr><td style="text-align:left;">'.$emp_array[$mas_chk].'</td>';
			foreach($value as $date => $sum){
				$table_body .= '<td>'.($sum == 0 ? '-' : $sum).'</td>';
			}
			$table_body .= '</tr>';
		}
		#-------------------------------------------------- APPROX TONS ------------------------------------------------ #
		$table_body .= '</tbody>';
		$table  = "<table class='table table-striped table-bordered' id = 'work_load'>".$table_head.$table_body."</table>";
		if($apx_day_rslt){
			echo json_encode(array("success" => TRUE,'table'=>$table));
		}else{
			echo json_encode(array('success'=>FALSE,'message'=>'No Records Found.!'));
		}
	}
}
?>