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/ntc_cafsinfotech_in_bk/application/controllers/Maintenance_fault_report.php
<?php
if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Base_controller.php");
class Maintenance_fault_report  extends Base_controller{
	
	public function __construct(){
		parent::__construct('maintenance_fault_report');
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
		$this->collect_base_info();
	}
	
	// LOAD PAGE WITH TABLE DATA
	public function index(){
		// LIST VEHICLE TYPE
		$this->db->select('prime_vehicle_type_id,vehicle_type');
		$this->db->from('cw_vehicle_type');
		$this->db->where('cw_vehicle_type.trans_status', 1);
		$vehicle_type_rslt = $this->db->get()->result();
		foreach($vehicle_type_rslt as $cat_rlst){
			$prime_vehicle_type_id  = $cat_rlst->prime_vehicle_type_id;
			$vehicle_type           = $cat_rlst->vehicle_type;
			$vehicle_type_list[$prime_vehicle_type_id] = $vehicle_type;
		}
		$data['vehicle_type_list'] = $vehicle_type_list;
		
		$data['table_headers']= $this->xss_clean(get_fault_report_headers());
		$this->load->view("$this->control_name/manage",$data);
	}
	
	//LOAD MODEL PAGE VIEW WITH DATA
	public function view($prime_maintenance_fault_report_id = -1){
		//GET PRIME FAULTS INFOMATION
		$this->db->from('maintenance_fault_report');
		$this->db->where('maintenance_fault_report.prime_maintenance_fault_report_id', $prime_maintenance_fault_report_id);	
		$this->db->where('maintenance_fault_report.trans_status', 1);	
		$fault_report_list                  = $this->db->get();
		$data['fault_report']               = $fault_report_list->result();
		
		//GET TABLE INFOMATION OF FAULTS
		$send_data                          = json_decode($this->get_faults_info($prime_maintenance_fault_report_id));
		$data['faults_information_table']   = $send_data->fault_table;
		
		// FETCH VEHICLE CATEGORY
		$this->db->select('prime_vehicle_category_id,vehicle_category');
		$this->db->from('vehicle_category');
		$this->db->where('vehicle_category.trans_status', 1);
		$vehicle_category_rslt = $this->db->get()->result();
		$vehicle_category_list[""] = "--- Select ---";
		foreach($vehicle_category_rslt as $cat_rlst){
			$prime_vehicle_category_id  = $cat_rlst->prime_vehicle_category_id;
			$vehicle_category           = $cat_rlst->vehicle_category;
			$vehicle_category_list[$prime_vehicle_category_id] = $vehicle_category;
		}
		$data['vehicle_category_list'] = $vehicle_category_list;
		
		//FETCH DRIVER NAME
		$this->db->select('prime_employees_id,employee_name');
		$this->db->from('cw_employees');
		$this->db->where('cw_employees.role', 4);
		$this->db->where('cw_employees.trans_status', 1);
		$driver_rslt = $this->db->get()->result();
		$driver_rslt[""] = "--- Select ---";
		foreach($driver_rslt as $rlst){
			$prime_employees_id  = $rlst->prime_employees_id;
			$employee_name       = $rlst->employee_name;
			$driver_list[$prime_employees_id] = $employee_name;
		}
		$data['driver_list'] = $driver_list;
		$this->load->view("$this->control_name/form",$data);
	}
	
	//GET VEHICLE TYPE
	public function get_vehicle_type(){
		$vehicle_category = $this->input->post('vehicle_category');
		$this->db->select('prime_vehicle_type_id,vehicle_type');
		$this->db->from('cw_vehicle_type');
		$this->db->where('cw_vehicle_type.trans_status', 1);
		$this->db->where('vehicle_category',$vehicle_category);
		$vehicle_type_result = $this->db->get()->result();	
		$vehicle_type_ar = "<option value=''>---- Select ----</option>";
		foreach($vehicle_type_result as $result){
			$id        = $result->prime_vehicle_type_id;
			$veh_type  = $result->vehicle_type;
			$vehicle_type_ar .= "<option value='$id'>$veh_type</option>";
		}
		echo json_encode(array('success' => TRUE, 'vehicle_type_result' => $vehicle_type_ar));
	}
	
	//GET VEHICLE NUMBER
	public function get_vehicle_no(){
		$vehicle_type = $this->input->post('vehicle_type');
		$this->db->select('prime_vehicle_master_id,register_no');
		$this->db->from('cw_vehicle_master');
		$this->db->where('cw_vehicle_master.trans_status', 1);
		$this->db->where('vehicle_type',$vehicle_type);
		$vehicle_result = $this->db->get()->result();	
		$ntc_vehicle = "<option value =''>---- Select ----</option>";	
		foreach($vehicle_result as $rslt){
			$prime_vehicle_master_id           = $rslt->prime_vehicle_master_id;
			$register_no  = $rslt->register_no;
			$ntc_vehicle .= "<option value='$prime_vehicle_master_id'>$register_no</option>";
		}
		echo json_encode(array('success' => TRUE, 'ntc_vehicle_result' => $ntc_vehicle));
	}
	
	//LOAD PAGE TABLE VIEW WITH DATA BASED ON SEARCH FILTERS
	public function search(){
		$search            = $this->input->get('search');
		$limit             = $this->input->get('limit');
		$offset            = $this->input->get('offset');
		$sort              = $this->input->get('sort');
		$order             = $this->input->get('order');
		$filters           = $this->input->get('filters');
		$vehicle_type_fil  = $this->input->get('vehicle_type_fil');
		$this->db->select('prime_maintenance_fault_report_id,vehicle_type.vehicle_type as vehicle_type,vehicle_category.vehicle_category as vehicle_category,cw_maintenance_fault_report.fault_status,cw_vehicle_master.register_no as ntc_vehicle,cw_employees.employee_name as ntc_driver');
		$this->db->from('maintenance_fault_report');
		$this->db->join('cw_vehicle_master', 'cw_vehicle_master.prime_vehicle_master_id = maintenance_fault_report.ntc_vehicle','LEFT');	
		$this->db->join('cw_employees', 'cw_employees.prime_employees_id = maintenance_fault_report.ntc_driver','LEFT');
		$this->db->join('vehicle_type', 'maintenance_fault_report.vehicle_type = vehicle_type.prime_vehicle_type_id','LEFT');	
		$this->db->join('vehicle_category', 'maintenance_fault_report.vehicle_category = vehicle_category.prime_vehicle_category_id','LEFT');
		$this->db->where('maintenance_fault_report.trans_status', 1);	
		if($search){
			$this->db->group_start();
				$this->db->like('prime_maintenance_fault_report_id',$search);
				$this->db->or_like('driver_name',$search);
				$this->db->or_like('vehicle_category',$search);
				$this->db->or_like('vehicle_type',$search);
				$this->db->or_like('vehicle_no',$search);
			$this->db->group_end();
		}
		$filters_sts = array();
		if($filters[0] > 0){
			$this->db->where_in('maintenance_fault_report.fault_status', $filters);
		}
		$filters_sts = array();
		foreach($vehicle_type_fil as $key=>$value){
			if($value){ $filters_sts[] = $value; }
		}
		if(count($filters_sts) > 0){
			$this->db->where_in('maintenance_fault_report.vehicle_type', $filters_sts);
		}
		
		$this->db->order_by($sort,$order);
		$faults_data    = $this->db->get();
		$faults_rslt    = $faults_data->result();
		$num_rows       = $faults_data->num_rows();
		$datarows       = array();
		foreach($faults_rslt as $faults){
			$datarows[] = get_fault_report_datarows($faults,$this);
		}
		echo json_encode(array('total'=>$num_rows,'rows'=>$datarows));
	}
	
	// SAVE FAULT GENERAL INFORMATION
	public function fault_report_save(){
		$prime_maintenance_fault_report_id  = (int)$this->input->post('prime_fault_report_id');
		$ntc_vehicle                        = $this->input->post('ntc_vehicle');
		$fault_status                       = '1';
		$fault_report_data = array(
			'ntc_driver'        => $this->input->post('ntc_driver'),
			'ntc_vehicle'       => $ntc_vehicle,
			'vehicle_category'  => $this->input->post('vehicle_category'),
			'vehicle_type'      => $this->input->post('vehicle_type'),
			'fault_status'      => $fault_status
		);
		if((int)$prime_maintenance_fault_report_id === 0){
			if(!$this->check_vehicle_already_exists($ntc_vehicle)){
				$fault_report_data['trans_created_by']   = $this->session->userdata('logged_id');
				$fault_report_data['trans_created_date'] = date("Y-m-d H:i:s");
				if($this->db->insert('cw_maintenance_fault_report',$fault_report_data)){
					$fault_report_id = $this->db->insert_id();
					echo json_encode(array('success' => TRUE, 'message' => "Successfully Inserted",
				'prime_maintenance_fault_report_id' => $fault_report_id));
				}else{
					echo json_encode(array('success' => FALSE, 'message' => "Insertion failed, Please Try Again"));
				}
			}else{
				echo json_encode(array('success' => FALSE, 'message' => "Faults Report already in process for this vehicle"));
			}
		}else
		if((int)$prime_maintenance_fault_report_id > 0){
			$fault_report_data['trans_updated_by']   = $this->session->userdata('logged_id');
			$fault_report_data['trans_updated_date'] = date("Y-m-d H:i:s");
			$this->db->where('prime_maintenance_fault_report_id',$prime_maintenance_fault_report_id);
			if($this->db->update('cw_maintenance_fault_report',$fault_report_data)){
				echo json_encode(array('success' => TRUE, 'message' => "Successfully Updated",'prime_maintenance_fault_report_id' => $prime_maintenance_fault_report_id));
			}else{
				echo json_encode(array('success' => FALSE, 'message' => "Update failed, Please Try Again",'prime_maintenance_fault_report_id' => $prime_maintenance_fault_report_id));
			}
		}else{
			echo json_encode(array('success' => False, 'message' => "Please contact Admin.!"));
		}
	}
	
	// SAVE FAULT LIST INFORMATION
	public function save_fault_info(){
		$prime_maintenance_fault_report_id = $this->input->post('prime_maintenance_fault_report_id');
		$prime_labour_details_id           = $this->input->post('prime_labour_details_id');
		$prime_fault_name_id               = $this->input->post('prime_fault_name_id');
		if($this->check_fault_report($prime_maintenance_fault_report_id,TRUE)){
			if((int)$prime_labour_details_id === 0){
				if(!($this->check_fault_already_exists($prime_maintenance_fault_report_id,$prime_fault_name_id))){
					$faults_info_data = array(
						'fault_name'                         => $prime_fault_name_id,
						'remarks'                            => $this->input->post('remarks'),
						'prime_maintenance_fault_report_id'  => $prime_maintenance_fault_report_id,
						'service_status'                     => 2
					);
					$faults_info_data['trans_created_by']   = $this->session->userdata('logged_id');
					$faults_info_data['trans_created_date'] = date("Y-m-d H:i:s");
					if($this->db->insert('labour_details',$faults_info_data)){
						$prime_labour_details_id = $this->db->insert_id();
						echo json_encode(array('success' => TRUE, 'message' => "Successfully Fault Inserted",'prime_maintenance_fault_report_id' => $prime_maintenance_fault_report_id));
					}else{
						echo json_encode(array('success' => FALSe, 'message' => "Fault Insertion failed, Please Try Again"));
					}
				}else{
					echo json_encode(array('success' => FALSe, 'message' => "Fault Already Exists"));
				}
			}else{
				if($this->check_fault_in_labours_report($prime_labour_details_id,TRUE)){
					if(!($this->check_fault_already_exists($prime_maintenance_fault_report_id,$prime_fault_name_id,$prime_labour_details_id))){
						$update_data['fault_name']                         = $this->input->post('prime_fault_name_id');
						$update_data['remarks']                            = $this->input->post('remarks');
						$update_data['trans_updated_by']                   = $this->session->userdata('logged_id');
						$update_data['trans_updated_date']                 = date("Y-m-d H:i:s");
						$this->db->where('prime_maintenance_fault_report_id',$prime_maintenance_fault_report_id);
						$this->db->where('prime_labour_details_id',$prime_labour_details_id);
						if($this->db->update('cw_labour_details',$update_data)){
							echo json_encode(array('success' => TRUE, 'message' => "Fault Successfully Updated",'prime_maintenance_fault_report_id'=> $prime_maintenance_fault_report_id ));
						}else{
							echo json_encode(array('success' => FALSe, 'message' => "Fault Update failed, Please Try Again"));
						}
					}else{
						echo json_encode(array('success' => FALSe, 'message' => "Fault Already Exists"));
					}
				}
			}
		}else{
			echo json_encode(array('success' => False, 'message' => "Please contact Admin.!"));
		}
	}
	
	//SEARCH FAULTS LIST
	public function search_faults(){
		$search_fault_name  = $this->input->post_get('search_fault_name');
		$suggestions = array();
		if($search_fault_name){
			$this->db->select('cw_maintenance_faults.prime_maintenance_faults_id,cw_maintenance_faults.fault_name');
			$this->db->from('maintenance_faults');
			$this->db->where('maintenance_faults.trans_status', 1);
			$this->db->group_start();
				$this->db->like('maintenance_faults.fault_name',$search_fault_name);
				$this->db->or_like('maintenance_faults.prime_maintenance_faults_id',$search_fault_name);
			$this->db->group_end();	
			$search_fault_info = $this->db->get()->result();
			foreach($search_fault_info as $search_rlst){
				$prime_maintenance_faults_id    = $search_rlst->prime_maintenance_faults_id;
				$fault_name                     = $search_rlst->fault_name;
				$label                          = "$fault_name";
				$suggestions[] = array('value'=>$fault_name,'label'=>$label,'prime_maintenance_faults_id'=>$prime_maintenance_faults_id);
			}
		}
		if(empty($suggestions)){
			$suggestions[] = array('value' => "0", 'label' => "No data found for this search");
		}
		echo json_encode($suggestions);
	}
	
	//LIST FAULTS INFOMATION
	public function get_faults_info($prime_maintenance_fault_report_id = -1){
		if((int)$this->input->post('prime_maintenance_fault_report_id') > 0){
			$prime_maintenance_fault_report_id  = $this->input->post('prime_maintenance_fault_report_id');
		}
		$tble_line = '';
		if($this->check_fault_report((int)$prime_maintenance_fault_report_id,TRUE)){
			$this->db->select('cw_labour_details.prime_labour_details_id,cw_labour_details.prime_maintenance_fault_report_id,cw_maintenance_faults.fault_name,cw_labour_details.remarks');
			$this->db->from('labour_details');
			$this->db->join('maintenance_faults','maintenance_faults.prime_maintenance_faults_id = labour_details.fault_name','inner');	
			$this->db->where('cw_labour_details.prime_maintenance_fault_report_id', (int)$prime_maintenance_fault_report_id);
			$this->db->where('cw_labour_details.trans_status', 1);
			$this->db->where('cw_labour_details.service_status', 2);
			$send_request_info = $this->db->get()->result();
			foreach($send_request_info as $send_rlst){
				$prime_labour_details_id             = $send_rlst->prime_labour_details_id;
				$prime_maintenance_fault_report_id   = $send_rlst->prime_maintenance_fault_report_id;
				$fault_name           				 = $send_rlst->fault_name;
				$remarks     			    	     = $send_rlst->remarks;
				$tble_line .= "	<tr>
								<td>$fault_name</td>
								<td>$remarks</td>
								<td>
									<a class='btn btn-warning btn-sm' onclick='edit_faults_info($prime_labour_details_id)'>Edit</a>
									<a class='btn btn-danger btn-sm' onclick='delete_faults_info($prime_labour_details_id,$prime_maintenance_fault_report_id)'>Delete</a>
								</td>
							</tr>";
			}
		}
		$table_data = "	<h4 class='m-t-0 header-title'><b>Faults List</b></h4>
						<table class='table table-striped table-bordered' id='fault_info_table'>
						 <thead>
							<tr>
							   <th>Faults Name</th>
							   <th>Remarks</th>
							   <th>Action</th>
							</tr>
						 </thead>
						 <tbody>
							$tble_line
						</tbody>
					</table>";
				
		return json_encode(array("success" => TRUE,'fault_table' => $table_data));
	}
	
	 //CHECK FAULT REPORT EXISTS
	public function check_fault_report($prime_maintenance_fault_report_id){
		$this->db->from('maintenance_fault_report');
		$this->db->where('prime_maintenance_fault_report_id',(int)$prime_maintenance_fault_report_id);
		$this->db->where('trans_status', 1);
		if((int)($this->db->get()->num_rows()) === 1){
			return TRUE;
		}else{ 
			return FALSE;
		}
	} 
	
	//CHECK FAULTS EXISTS IN LABOURS DETAILS
	public function check_fault_in_labours_report($prime_labour_details_id){
		$this->db->from('labour_details');
		$this->db->where('prime_labour_details_id',(int)$prime_labour_details_id);
		$this->db->where('trans_status', 1);
		if((int)($this->db->get()->num_rows()) === 1){
			return TRUE;
		}else{ 
			return FALSE;
		}
	}
	
	//CHECK FAULT ALREADY EXISTS
	public function check_fault_already_exists($prime_maintenance_fault_report_id,$prime_fault_name_id,$prime_labour_details_id = -1){
		$this->db->from('labour_details');
		$this->db->where('prime_maintenance_fault_report_id',(int)$prime_maintenance_fault_report_id);
		$this->db->where('fault_name',(int)$prime_fault_name_id);
		if((int)$prime_labour_details_id > 0){
			$this->db->where('prime_labour_details_id !=',(int)$prime_labour_details_id);
		}
		$this->db->where('trans_status', 1);
		if((int)($this->db->get()->num_rows()) > 0){
			return TRUE;
		}else{ 
			return FALSE;
		}
	}
	
	//EDIT FAULTS INFOMATION
	public function edit_faults_info(){
		$prime_labour_details_id  = $this->input->post('prime_labour_details_id');
		$this->db->select('cw_labour_details.prime_labour_details_id,cw_labour_details.fault_name as fault_id,cw_labour_details.prime_maintenance_fault_report_id,cw_labour_details.remarks,cw_maintenance_faults.fault_name');
		$this->db->from('labour_details');
		$this->db->join('maintenance_faults', 'cw_maintenance_faults.prime_maintenance_faults_id = labour_details.fault_name','inner');
		$this->db->where('prime_labour_details_id', $prime_labour_details_id);
		$return_data = $this->db->get()->result();
		if($return_data){
			echo json_encode(array("success" => TRUE,'fault_edit_info' => $return_data));
		}else{
			echo json_encode(array("success" => TRUE,'message' => 'contact Admin..!'));
		}
	}
	
	//GET TABLE VIEW FOR FAULTS INFORMATION TABLE
	public function get_faults_info_list_table(){
		$prime_maintenance_fault_report_id = '';
		if((int)$this->input->post('prime_maintenance_fault_report_id') > 0){
			$prime_maintenance_fault_report_id  = $this->input->post('prime_maintenance_fault_report_id');
		}
		$send_data   = json_decode($this->get_faults_info($prime_maintenance_fault_report_id));
		echo json_encode(array("success" => TRUE,'fault_info' => $send_data->fault_table));
	}
	
	//DELETE FAULTS INFOMATION
	public function delete_faults_info(){
		$prime_labour_details_id           = $this->input->post('prime_labour_details_id');
		$update_data['trans_deleted_by']   = $this->session->userdata('logged_id');
		$update_data['trans_deleted_date'] = date("Y-m-d H:i:s");
		$update_data['trans_status']       = 0;
		$this->db->where('prime_labour_details_id ',$prime_labour_details_id);
		if($this->db->update('labour_details',$update_data)){
			echo json_encode(array("success" => TRUE,'message' => 'Deleted successfully'));
		}else{
			echo json_encode(array("success" => False,'message' => "Please Try Again"));
		}
	}
	
	//VIEW FAULTS INFORMATION
	public function view_info(){
		$prime_maintenance_fault_report_id = (int)$this->input->post('prime_maintenance_fault_report_id');
		$tble_line = '';
		if($this->check_fault_report((int)$prime_maintenance_fault_report_id,TRUE)){
			$this->db->select('maintenance_faults.fault_name,cw_labour_details.remarks,cw_labour_details.status');
			$this->db->from('cw_maintenance_fault_report');
			$this->db->join('cw_labour_details', 'cw_labour_details.prime_maintenance_fault_report_id = cw_maintenance_fault_report.prime_maintenance_fault_report_id','inner');
			$this->db->join('maintenance_faults','maintenance_faults.prime_maintenance_faults_id = labour_details.fault_name','inner');	
			$this->db->where('cw_maintenance_fault_report.prime_maintenance_fault_report_id', (int)$prime_maintenance_fault_report_id);
			$this->db->where('cw_maintenance_fault_report.trans_status', 1);
			$this->db->where('cw_labour_details.trans_status', 1);
			$send_request_info = $this->db->get()->result();
			foreach($send_request_info as $send_rlst){
				$fault_name    = $send_rlst->fault_name;
				$remarks       = $send_rlst->remarks;
				$status        = $send_rlst->status;
				$fault_status  = array(1 => "on process",2 => "completed",3 => "incomplted");
				$status        = $fault_status[$status];
				$tble_line    .= "	<tr>
										<td>$fault_name</td>
										<td>$remarks</td>
										<td>$status</td>
									</tr>";
			}
		}
		$table_data = "	<table class='table table-striped table-bordered' id='fault_info_table'>
						 <thead>
							<tr>
							   <th>Fault Number</th>
							   <th>Remarks</th>
							   <th>Status</th>
							</tr>
						 </thead>
						 <tbody>
							$tble_line
						</tbody>
					</table>";
				
		echo json_encode(array("success" => TRUE,'fault_info' => $table_data));
	}
	
	//CHECKING VEHICLE ALREADY EXISTS
	public function check_vehicle_already_exists($ntc_vehicle = -1){
		$this->db->from('maintenance_fault_report');
		$this->db->where('fault_status !=',3);
		if((int)$ntc_vehicle > 0){
			$this->db->where('ntc_vehicle',(int)$ntc_vehicle);
		}
		$this->db->where('trans_status', 1);
		if((int)($this->db->get()->num_rows()) > 0){
			return TRUE;
		}else{ 
			return FALSE;
		}
	}
}
?>