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/application/controllers/Vehicle_master.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Action_controller.php");
class Vehicle_master  extends Action_controller{	
	public function __construct(){
		parent::__construct('vehicle_master');
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
		$this->collect_base_info();
		// $this->load->model('tracking_api');	
	}
	
	// LOAD PAGE QUICK LINK,FILTERS AND TABLE HEADERS
	public function index(){
		$data['quick_link']    = $this->quick_link;
		$data['table_head']    = $this->table_head;
		$data['master_pick']   = $this->master_pick;
		$data['fliter_list']   = $this->fliter_list;
		$this->load->view("$this->control_name/manage",$data);
	}
	
	//LOAD TABEL WITH FILTERS
	public function search(){
		$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);
		
		//ADDED BASIC,FILTER,COMMON QUERY HERE 
		$role_condition   = "";
		if($this->role_condition){
			$role_condition = $this->role_condition;
		}
		
		$fliter_query = "";
		foreach($this->fliter_list as $fliter){
			$label_id         = $fliter['label_id'];
			$label_name       = $fliter['label_name'];
			$field_isdefault  = (int)$fliter['field_isdefault'];
			$array_list       = $fliter['array_list'];
			$field_type       = (int)$fliter['field_type'];			
			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 === 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->form_info 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->master_pick[$label_id], 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.')';
							}
						}
					}
				}
			}
		}
		if($common_search){
			$common_search = ltrim($common_search,' or ');
			$common_search = " and ($common_search)";
		}
		
		$count_all_query    = str_replace("@SELECT@","count(*) as allcount",$this->base_query);		
		$search_total       = $this->db->query($count_all_query);
		$search_total_info  = $search_total->result();
		$total_count        = $search_total_info[0]->allcount;
		
		$count_query        = str_replace("@SELECT@","count(*) as allcount",$this->base_query);
		$count_query       .= " where $this->prime_table.trans_status = 1 $role_condition $fliter_query $common_search";
		$search_count       = $this->db->query($count_query);
		$search_info        = $search_count->result();
		$filtered_count     = $search_info[0]->allcount;
		
		$search_query      .= " where $this->prime_table.trans_status = 1 $role_condition $fliter_query $common_search";
		$search_query      .= " ORDER BY  $order_col $order_sor";
		if((int)$per_page !== -1){
			$search_query  .= " LIMIT  $start,$per_page";
		}		
		$search_data        = $this->db->query($search_query);
		$search_result      = $search_data->result();
		//echo "search_query :: \n$search_query\n";	
		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, FORM INPUT
		$data['view_info']      = $this->view_info;
		$data['form_info']      = $this->form_info;	
		
		//VIEW DATA
		$base_query  = str_replace("@SELECT@",$this->view_select,$this->base_query);
		$view_query  = $base_query ." where $this->prime_table.$this->prime_id = $form_view_id and $this->prime_table.trans_status = 1";
		$view_data   = $this->db->query("CALL sp_a_run ('SELECT','$view_query')");
		$view_result = $view_data->result();
		$view_data->next_result();
		$data['form_view']   = $view_result[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->all_pick[$prime_form_id] = $pick_result[0]->$auto_dispaly_value;
					}
				}
			}
		}
		$data['all_pick']       = $this->all_pick;
		$data['condition_list'] = $this->condition_list;
		
		$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_data   = $this->db->query("CALL sp_a_run ('SELECT','$view_qry')");
		$view_result = $view_data->result();
		$view_data->next_result();
		$row_view_list = array();
		foreach($view_result 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;
		
		$this->load->view("$this->control_name/form",$data);
	}
	
	//SAVE MODEL DATA TO DATA BASE
	public function save(){
		$unq_chk         = array();
		$prime_qry_key   = "";
		$prime_qry_value = "";
		$prime_upd_query = "";
		$cf_qry_key      = "";
		$cf_qry_value    = "";
		$cf_upd_query    = "";	
		$cf_has          = false;
		$form_id         = (int)$this->input->post($this->prime_id);
		$form_post_data  = array();	
		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;
			
			
			if((int)$field_type === 7){
				$multi_name = $label_id."[]";
				$value = trim(implode(",",$this->input->post($multi_name)));
			}else
			if($label_id === 'register_no'){
				$value = str_replace(' ', '', $this->input->post($label_id));
			}
			else{
				$value = trim($this->input->post($label_id));
			}
			
			if((int)$field_type === 4){
				$value = date('Y-m-d',strtotime($value));
			}else
			if((int)$field_type === 13){
				$value = date('Y-m-d H:i:s',strtotime($value));
			}	
			
			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";
				}
			}
		}
		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;				
				echo json_encode(array('success' => TRUE, 'message' => "Successfully added", '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')");
				echo json_encode(array('success' => TRUE, 'message' => "Successfully updated",'insert_id' => $form_id));
			}
		}
	}
	
	//UPDATE STATUS TO DELETE IN MODULE PRIMARY TABLE
	public function delete(){
		$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;
				$select_table            = '';
				$select_label            = '';
				$select_trans_status     = '';
				$select_where            = '';
				foreach($prime_module_id as $check_modules){
					$table_name            = "cw_".$check_modules;
					$table_rename          = $table_name."_$i";
					$select_table         .= "$table_rename.$label_name[$i],";
					$select_label         .= " $table_name $table_rename,";
					if((int)$i === 0){
						$select_trans_status  .= "( $table_rename.trans_status = 1";
						$select_where         .= " and ($table_rename.$label_name[$i] in ($delete_ids)";
					}else{
						$select_trans_status  .= " and $table_rename.trans_status = 1";
						$select_where         .= " or $table_rename.$label_name[$i] in ($delete_ids)";
					}
					$i++;
				}
				$select_trans_status .= ")";
				$select_where        .= ")";
				$select_table         = rtrim($select_table,',');
				$select_label         = rtrim($select_label,',');
				$check_module_query  .= 'SELECT '.$select_table.' from '.$select_label.' WHERE '.$select_trans_status.' '.$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){
					$can_process   = False;
					$delete_status = False;
				}
			}
			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')")){
					$prime_table_query   = 'SELECT * from '. $this->prime_table .'';
					$prime_table_info    = $this->db->query("CALL sp_a_run ('SELECT','$prime_table_query')");
					$row_count           = $prime_table_info->num_rows();
					$prime_table_info->next_result();
					$alter_query         = 'ALTER TABLE '. $this->prime_table .' AUTO_INCREMENT = '. $row_count .'';
					$this->db->query("CALL sp_a_run ('RUN','$alter_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 $modules 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(){
		$prime_id_val  = $this->input->post('prime_id_val');
		$is_defult     = (int)$this->input->post('is_defult');
		$input_name     = $this->input->post('input_name');
		$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;
		
		$this->load->view("$this->control_name/import",$data);
	}
	
	//Get Vehicle Type
	public function get_vehicle_type(){
		$vehicle_category = $this->input->post('vehicle_category');
		$vehicle_type_qry = 'SELECT prime_vehicle_type_id,vehicle_type from cw_vehicle_type where vehicle_category = "'.$vehicle_category.'" and trans_status = 1';
		$vehicle_type   = $this->db->query("CALL sp_a_run ('SELECT','$vehicle_type_qry')");
		$vehicle_type_result    = $vehicle_type->result();
		$vehicle_type->next_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));
	}
	public function get_make(){
		$vehicle_category = $this->input->post('vehicle_category');
		$make_qry = 'SELECT prime_make_id,make from cw_make where category = "'.$vehicle_category.'" and trans_status = 1';
		$make   = $this->db->query("CALL sp_a_run ('SELECT','$make_qry')");
		$make_result    = $make->result();
		$make->next_result();	
		$make_ar = "<option value=''>---- Select ----</option>";	
		foreach($make_result as $result){
			$id    = $result->prime_make_id;
			$make  = $result->make;
			$make_ar .= "<option value='$id'>$make</option>";
		}
		echo json_encode(array('success' => TRUE, 'make_result' => $make_ar));
	}
	public function get_series(){
		$vehicle_category = $this->input->post('vehicle_category');
		$series_qry = 'SELECT prime_series_id,series_name from cw_series where category = "'.$vehicle_category.'" and trans_status = 1';
		$series   = $this->db->query("CALL sp_a_run ('SELECT','$series_qry')");
		$series_result    = $series->result();
		$series->next_result();	
		$series_ar = "<option value=''>---- Select ----</option>";	
		foreach($series_result as $result){
			$id           = $result->prime_series_id;
			$series_name  = $result->series_name;
			$series_ar .= "<option value='$id'>$series_name</option>";
		}
		echo json_encode(array('success' => TRUE, 'series_result' => $series_ar));
	}
	
	/* NEHA EDIT START */
	public function get_tyre_layout(){
		$prime_vehicle_master_id = (int)$this->input->post('prime_vehicle_master_id');
		if($prime_vehicle_master_id > 0){
			$vehicle_tyre_qry        = 'SELECT total_no_of_tyre,position_type,single_count,dual_count,spare_count from cw_vehicle_master_tyre_position where prime_vehicle_master_id = "'.$prime_vehicle_master_id.'" and trans_status = 1';
			$rlst       = $this->db->query("CALL sp_a_run ('SELECT','$vehicle_tyre_qry')");
			$tyre_info  = $rlst->row();
			$rlst->next_result();
			$total_no_of_tyre =(int)$tyre_info->total_no_of_tyre;
			$position_type    =(int)$tyre_info->position_type;
			$single_count     =(int)$tyre_info->single_count / 2;
			$dual_count       =(int)$tyre_info->dual_count / 4;
			$spare_count      =(int)$tyre_info->spare_count;
			$p                = 1;
			$single_first_array     = array();
			$single_second_array    = array();
			for ($e=1; $e<=(int)$tyre_info->single_count; $e++){
				if( $e%2==0){
					$single_first_array[] = $e;
				}else{
					$single_second_array[] = $e;
				}
			}
			if($position_type === 1){
				$tbl_line = '';
				for($i = 0; $i < 2; $i++){
					$tbl_line .= "<tr class ='row' style='display:flex;margin-right:10px;margin-left: 10px;margin-bottom: 30px;padding: 10px;'>";
					for($j = 0; $j < $single_count; $j++){
						if($i === 0){
							$t_count = $single_first_array;
						}else{
							$t_count = $single_second_array;
						}
						$tbl_line .= "<td class= 'tire' style='text-align:center;padding:10px;'><img class='img_wd'  src='./images/tyre_info/tire.gif'><br>$t_count[$j]</td>";
					}
					$tbl_line .= "</tr>";
				}			
			}else
			if($position_type === 2){
				$single_line = '';
				$dual_line   = '';
				for($i = 0; $i < 2; $i++){
					$single_line .= "<tr style='height: 129px;'>";
					for($j = 0; $j < $single_count; $j++){
						if($i === 0){
							$t_count = $single_first_array;
						}else{
							$t_count = $single_second_array;
						}
						$single_line .= "<td style='padding: 10%;'><img class='img_wd ' src='./images/tyre_info/tire.gif'>$t_count[$j]</td>";
						$p = $single_first_array[$j];
					}
					$single_line .= "</tr>";
				}
				$single_line = "<div class ='col-md-6' style = 'width: 50%;padding: 14px;' ><table><tbody>$single_line</tbody></table></div>";
				$double_first_array     = array();
				$double_second_array    = array();
				for ($e = $p; $e < (int)$tyre_info->dual_count*$dual_count;){
					$double_first_array[]  = $e+4;
					$double_second_array[] = $e+2;
					$e = $e+4;
				}
				for($k = 0; $k < 2; $k++){
					$dual_line .= "<tr style='display:flex;margin-right:10px;margin-left: 10px;margin-bottom: 20px;'>";	
					for($m = 0; $m < $dual_count; $m++){
						if($k === 0){
							$double1_count = $double_first_array;
						}else{
							$double1_count = $double_second_array;
						}
						$double2_count = $double1_count[$m]-1;
						$dual_line .= "<td class= 'tire2'><span style='display: block;text-align:center;margin-bottom: 0px;'>$double1_count[$m]<img class='img_wd'  src='./images/tyre_info/tire.gif'/></span><span style=' display: block;text-align: center; '><img class='img_wd'  src='./images/tyre_info/tire.gif'>$double2_count</span></td>";
					}
					$dual_line .= "</tr>";
				}
				$dual_line = "<div class ='col-md-6'><table style='width: 30%;'><tbody>$dual_line</tbody></table></div>";
				$tbl_line = "<h5>Vehicle Tyre Layout</h5><br/><div class ='row'>$single_line $dual_line</div>";
			}else{
				$tbl_line = '';
				$double_first_array     = array();
				$double_second_array    = array();
				for ($e=0; $e < (int)$tyre_info->dual_count*$dual_count;){
					$double_first_array[]  = $e+4;
					$double_second_array[] = $e+2;
					$e = $e+4;
				}
				if($dual_count){
					for($k = 0; $k < 2; $k++){
						$tbl_line .= "<tr class ='row' style='display:flex;margin-right:10px;margin-left: 10px;margin-bottom: 30px;'>";
						for($m = 0; $m < $dual_count; $m++){
							if($k === 0){
								$double1_count = $double_first_array;
							}else{
								$double1_count = $double_second_array;
							}
							$double2_count = $double1_count[$m]-1;
							$tbl_line .= "<td class= 'tire2'><span style='display: block;text-align: center;margin-bottom: 6px;'>$double1_count[$m]<img class='img_wd'  src='./images/tyre_info/tire.gif'></span><span style=' display: block;text-align: center; '><img class='img_wd'  src='./images/tyre_info/tire.gif'>$double2_count</span></td>";
						}
						$tbl_line .= "</tr>";
					}
				}
				if($tbl_line === ''){
					$tbl_line = "<div style='margin-left: auto;margin-right: auto;display: block;width:50%;'><img  src='./images/tyre_info/vehicle_loading.gif'></div>";
				}
				$tbl_line = "<h5 class='tab_head'>Vehicle Tyre Layout</h5><br/><table style='width: 20%;'><tbody>$tbl_line</tbody></table>";
			}
			echo json_encode(array("success" => TRUE,'tbl_line' => $tbl_line));	
		}else{
			echo json_encode(array("success" => FALSE,'tbl_line' => ''));	
		}
	}
	/*NEHA EDIT END*/
	/*SVK EDIT START - GET TYRE POSITION INFORMATION FORM */
	public function get_tyre_position_info(){
		$prime_vehicle_master_id = (int)$this->input->post('prime_vehicle_master_id');
		$vehicle_category        = (int)$this->input->post('vehicle_category');
		if($prime_vehicle_master_id > 0){
			$vehicle_tyre_qry        = 'SELECT total_no_of_tyre,position_type,spare_count from cw_vehicle_master_tyre_position where prime_vehicle_master_id = "'.$prime_vehicle_master_id.'" and trans_status = 1';
			$rlst                    = $this->db->query("CALL sp_a_run ('SELECT','$vehicle_tyre_qry')");
			$tyre_info               = $rlst->row();
			$tyre_count              = $rlst->num_rows();
			$rlst->next_result();
			if((int)$tyre_count > 0){
				$count             = (int)$tyre_info->total_no_of_tyre;
				$spare_count       = (int)$tyre_info->spare_count;
				$type_position     = (int)$tyre_info->position_type;
				$check_spare_count =  $count - $spare_count;
				$li_line           = '';
				$spare_li_line     = '';
				$required = array();
				$tyre_postion_qry       = 'SELECT position,position_type_id,serial_no,tyre_status,brand,tyre_size,tread_pattern_type,casting_type,mm from cw_tyres_position where prime_vehicle_master_id = "'.$prime_vehicle_master_id.'" and trans_status = 1';
				$tyre_postion_rlst      = $this->db->query("CALL sp_a_run ('SELECT','$tyre_postion_qry')");
				$tyre_postion_info      = $tyre_postion_rlst->result();
				$tyre_postion_rlst->next_result();
				$j=0;
				
				$position_type_id = $tyre_postion_info[$j]->position_type_id;
				$position_type_id = $tyre_postion_info[$j]->position_type_id;
				if((int)$position_type_id !== $type_position){
					$this->change_in_vehicle_layout($prime_vehicle_master_id,$position_type_id);
				}
				$k = 1;
				
				// LIST BRAND
				$this->db->select('prime_inventory_brand_id,brand_name');
				$this->db->from('cw_inventory_brand');
				$this->db->where('cw_inventory_brand.trans_status', 1);
				$brand_rslt = $this->db->get()->result();
				$brand_list[""] = "--- Select ---";
				foreach($brand_rslt as $rlst){
					$prime_inventory_brand_id  = $rlst->prime_inventory_brand_id;
					$brand_name                = $rlst->brand_name;
					$brand_list[$prime_inventory_brand_id] = $brand_name;
				}
				
				// LIST PATTERN
				$this->db->select('prime_tyre_pattern_id,tyre_pattern');
				$this->db->from('cw_tyre_pattern');
				$this->db->where('cw_tyre_pattern.trans_status', 1);
				$pattern_rslt = $this->db->get()->result();
				$pattern_list[""] = "--- Select ---";
				foreach($pattern_rslt as $rlst){
					$prime_tyre_pattern_id   = $rlst->prime_tyre_pattern_id;
					$tyre_pattern            = $rlst->tyre_pattern;
					$pattern_list[$prime_tyre_pattern_id] = $tyre_pattern;
				}
				
				// LIST TYRE SIZE 
				$this->db->select('prime_tyre_size_id,tyre_size');
				$this->db->from('cw_tyre_size');
				$this->db->where('cw_tyre_size.trans_status', 1);
				$tyre_size_rslt     = $this->db->get()->result();
				$tyre_size_list[""] = "--- Select ---";
				foreach($tyre_size_rslt as $rlst){
					$prime_tyre_size_id                  = $rlst->prime_tyre_size_id;
					$tyre_size                           = $rlst->tyre_size;
					$tyre_size_list[$prime_tyre_size_id] = $tyre_size;
				}
				
				// LIST CASTING LIST
				$this->db->select('prime_tyre_casting_id,casting_name');
				$this->db->from('cw_tyre_casting');
				$this->db->where('cw_tyre_casting.trans_status', 1);
				$casting_rslt     = $this->db->get()->result();
				$casting_list[""] = "--- Select ---";
				foreach($casting_rslt as $rlst){
					$prime_tyre_casting_id                = $rlst->prime_tyre_casting_id;
					$casting_name                         = $rlst->casting_name;
					$casting_list[$prime_tyre_casting_id] = $casting_name;
				}
				
				for($i = 1; $i <= $count; $i++,$j++){
					$position_type_id = $tyre_postion_info[$j]->position_type_id;
					$serial           = '';
					$status           = 0;
					//brand,tyre_size,tread_pattern_type,tyre_size,casting_type,mm
					if((int)$position_type_id === $type_position){
						$serial                  = $tyre_postion_info[$j]->serial_no;
						$status                  = $tyre_postion_info[$j]->tyre_status;
						$brand_val               = $tyre_postion_info[$j]->brand;
						$tyre_size_val           = $tyre_postion_info[$j]->tyre_size;
						$tread_pattern_type_val  = $tyre_postion_info[$j]->tread_pattern_type;
						$casting_type_val        = $tyre_postion_info[$j]->casting_type;
						$mm_val                  = $tyre_postion_info[$j]->mm;
					}
					$position       = form_input(array('name'=>"tyre_position_hide[]",'class' => 'form-control input-sm alpha valid','value'=>"$i",'type'=>'hidden'));
					$serial_no      = form_input(array('name'=>"tyre_serial_no[]",'id'=>"tyre_serial_no_$i",'class' => 'form-control input-sm alpha valid','value'=>"$serial",'placeholder'=>"Serial No",'onchange'=>"check_unique('tyre_serial_no_$i')",'style' => 'text-transform: uppercase;'));
					
					$brand_label       =  form_label("Brand", "brand_$i", array('class' => 'control-label required'));	
					$brand_view        =  form_dropdown(array('name' => 'brand[]','id' => "brand_$i",'class' => 'form-control input-sm select2'), $brand_list,$brand_val);
					
					$tyre_size_label   =  form_label("Tyre Size", "tyre_size_$i", array('class' => 'control-label required'));	
					$tyre_size_view    =  form_dropdown(array('name' => 'tyre_size[]','id' => "tyre_size_$i",'class' => 'form-control input-sm select2','onchange'=>"get_tyre_pattern('tyre_size_$i','tread_pattern_type_$i')"), $tyre_size_list,$tyre_size_val);
										   
					$tread_pattern_label =  form_label("Tread Pattern Type", "tread_pattern_type_$i", array('class' => 'control-label required'));	
					$tread_pattern_view  =  form_dropdown(array('name' => 'tread_pattern_type[]','id' => "tread_pattern_type_$i",'class' => 'form-control input-sm select2'), $pattern_list,$tread_pattern_type_val);
											 
					
					$casting_type_label  =  form_label("Casting Type", "casting_type_$i", array('class' => 'control-label required'));	
					$casting_type_view   = form_dropdown(array('name' => 'casting_type[]','id' => "casting_type_$i",'class' => 'form-control input-sm select2'), $casting_list,$casting_type_val);	 
					
					$mm_label           =  form_label("MM", "mm_$i", array('class' => 'control-label required'));
					$mm_view            =  form_input(array('name' => 'mm[]','id' => "mm_$i",'class' => 'form-control input-sm number', 'value' => "$mm_val"));
											 
					if($vehicle_category === 1 && ($i === 1 || $i === 2)){
						$tyre_status = form_dropdown(array('name' =>'tyre_position_status[]','id'=>"tyre_position_status_$i",'class' => 'form-control input-sm select2','readonly'=>'readonly'), $this->lang->line('tyre_position_status_info'),1);
					}else{
						$tyre_status = form_dropdown(array('name' =>'tyre_position_status[]','id'=>"tyre_position_status_$i",'class' => 'form-control input-sm select2'), $this->lang->line('tyre_position_status_info'),$status);
					}
					if($i <= (int)$check_spare_count){
						$tyre_type      = "Position $i";
						$tyre_type_info = form_input(array('name'=>"tyre_type[]",'class' => 'form-control input-sm alpha valid','value'=>"1",'type'=>'hidden'));
					}else{
						$tyre_type      = "Spare Tyre $k";
						$tyre_type_info = form_input(array('name'=>"tyre_type[]",'class' => 'form-control input-sm alpha valid','value'=>"2",'type'=>'hidden'));
						$k++;
					}
					$li_line  .= "<tr>
									<td colspan ='4' style='background-color: #f2f2f2; color: #274f9c; font-weight: bold; font-size: 16px;border: 1px solid #CCCCCC;'>
										<div class='input-group'>
										$tyre_type $position $tyre_type_info
										</div>
									</td>
								</tr>
								<tr>
									<td>
										<div class='input-group'>
										<label for='tyre_position_status_$i' class='control-label required'>Tyre Status</label>
										$tyre_status
										</div>
									</td>
									<td>
										<div class='input-group'>
										<label for='tyre_serial_no_$i' class='control-label required'>Serial No</label>
										$serial_no
										</div>
									</td>
									<td>
										<div class='input-group'>
										$brand_label
										$brand_view
										</div>
									</td>
									<td>
										<div class='input-group'>
										$tyre_size_label
										$tyre_size_view
										</div>
									</td>
							  </tr>
							  <tr>
									<td>
										<div class='input-group'>
										$tread_pattern_label
										$tread_pattern_view
										</div>
									</td>
									<td>
										<div class='input-group'>
										$casting_type_label
										$casting_type_view
										</div>
									</td>
									<td>
										<div class='input-group'>
										$mm_label
										$mm_view
										</div>
									</td>
							  </tr>";
				}
				$position_type      = form_input(array('name'=>"position_type_id",'id'=>'position_type_id','class' => 'form-control input-sm alpha valid','value'=>"$type_position",'type'=>'hidden'));
				$vehicle_master_id  = form_input(array('name' => 'vehicle_master_id','id'=>'vehicle_master_id','class' => 'form-control input-sm alpha valid','value'=>$prime_vehicle_master_id,'type'=>'hidden'));
				$li_line    .= "<tr>
									<td colspan='4' style='text-align:center;'>
										<a class='btn btn-sm btn-primary' id='add_tyre_info_btn' > Add/Update</a> 
									</td>
								</tr>";
				$view_content .= "
						 <div style='background-color:#FFFFFF;padding:8px;' class='table-responsive'>
							$vehicle_master_id
							$position_type
							<h4 class='block_head'>Tyre Position Information</h4>
							<table class='table'  id='table_tyre_postion' style=''>
								<tbody>
									$li_line
								</tbody>
							</table>
						 </div>";
				echo json_encode(array("success" => TRUE,'view_content' => $view_content));	
			}else{
				echo json_encode(array("success" => False,'view_content' => ''));	
			}
		}
	}
	//SAVE TIRES POSITION
	public function save_tire_info(){
		$prime_vehicle_master_id = (int)$this->input->post('vehicle_master_id');
		$position_type_id        = (int)$this->input->post('position_type_id');
		$tyre_position_array     = array();
		if($prime_vehicle_master_id > 0){
			$position_hide      = $this->input->post('position_hide[]');
			$tyre_type          = $this->input->post('tyre_type[]');
			$serial_no          = $this->input->post('serial_no[]');
			$tyre_status        = $this->input->post('tyre_status[]');
			$brand              = $this->input->post('brand[]');
			$tyre_size          = $this->input->post('tyre_size[]');
			$tread_pattern_type = $this->input->post('tread_pattern_type[]');
			$casting_type       = $this->input->post('casting_type[]');
			$mm                 = $this->input->post('mm[]');
			$insert_count = 0;
			$update_count = 0;
			foreach($position_hide as $key => $value){
				if(!($this->check_tyre_already_exists($value,$position_type_id,$prime_vehicle_master_id))){
					$tyre_info_data = array(
						'prime_vehicle_master_id' => $prime_vehicle_master_id,
						'position'                => $value,
						'position_type_id'        => $position_type_id,
						'tyre_type'               => $tyre_type[$key],
						'serial_no'               => $serial_no[$key],
						'tyre_status'             => $tyre_status[$key],
						'brand'                   => $brand[$key],
						'tyre_size'               => $tyre_size[$key],
						'tread_pattern_type'      => $tread_pattern_type[$key],
						'casting_type'            => $casting_type[$key],
						'mm'                      => $mm[$key],
						'trans_created_by'        => $this->session->userdata('logged_id'),
						'trans_created_date'      => date("Y-m-d H:i:s")
					);
					$this->db->insert('cw_tyres_position',$tyre_info_data);
					$tyre_position_array[] = $value;
					$insert_count = (int)$insert_count + 1;
				}else{
					$update_data                        = array();
					$update_data['tyre_type']           = $tyre_type[$key];
					$update_data['serial_no']           = $serial_no[$key];
					$update_data['tyre_status']         = $tyre_status[$key];
					$update_data['brand']               = $brand[$key];
					$update_data['tyre_size']           = $tyre_size[$key];
					$update_data['tread_pattern_type']  = $tread_pattern_type[$key];
					$update_data['casting_type']        = $casting_type[$key];
					$update_data['mm']                  = $mm[$key];
					$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('position',$value);
					$this->db->where('prime_vehicle_master_id',$prime_vehicle_master_id);
					$this->db->update('cw_tyres_position',$update_data);
					$tyre_position_array[] = $value;
					$update_count = (int)$update_count + 1;
				}
			}
			$this->update_tyre_position($tyre_position_array,$prime_vehicle_master_id);
			echo json_encode(array('success' => TRUE, 'message' => "Processed Successfully",'insert_count'=> $insert_count,'update_count'=> $update_count));
		}
	}
	//DELETE VEHICLE TYRE POSTION LAYOUT 
	public function update_tyre_position($tyre_position_array,$prime_vehicle_master_id){
		$update_data                        = array();
		$update_data['trans_status']        = 0;
		$update_data['trans_deleted_by']    = $this->session->userdata('logged_id');
		$update_data['trans_deleted_date']  = date("Y-m-d H:i:s");
		$this->db->where_not_in('position',$tyre_position_array);
		$this->db->where('prime_vehicle_master_id',$prime_vehicle_master_id);
		$this->db->update('cw_tyres_position',$update_data);
	}
	//DELETE VEHICLE TYRE POSTION LAYOUT 
	public function change_in_vehicle_layout($prime_vehicle_master_id,$position_type_id){
		$update_data                        = array();
		$update_data['trans_status']        = 0;
		$update_data['trans_deleted_by']    = $this->session->userdata('logged_id');
		$update_data['trans_deleted_date']  = date("Y-m-d H:i:s");
		$this->db->where('position_type_id',$position_type_id);
		$this->db->where('prime_vehicle_master_id',$prime_vehicle_master_id);
		$this->db->update('cw_tyres_position',$update_data);
	}
	//CHECK TYRE POSITION ALREADY EXISTS
	public function check_tyre_already_exists($position,$position_type,$prime_vehicle_master_id){
		$this->db->from('cw_tyres_position');
		$this->db->where('position',(int)$position);
		$this->db->where('position_type_id',(int)$position_type);
		$this->db->where('prime_vehicle_master_id',(int)$prime_vehicle_master_id);
		$this->db->where('trans_status',1);
		$count = $this->db->get()->num_rows();
		if((int)$count > 0){
			return True;
		}else{
			return False;
		}
	}
	//CHECK SERIAL NUMBER
	public function check_serial_number(){
		$check_val               = $this->input->post('serial_no');
		$prime_vehicle_master_id = (int)$this->input->post('prime_vehicle_master_id');
		$this->db->select('serial_no');
		$this->db->from('cw_tyres_position');
		$this->db->where_in('serial_no', $check_val);
		$this->db->where('prime_vehicle_master_id !=',(int)$prime_vehicle_master_id);
		$this->db->where('trans_status',1);
		$tyre_info = $this->db->get();	
		$count     = $tyre_info->num_rows();
		if((int)$count > 0){
			$result = $tyre_info->result();
			foreach($result as $search){
				$return_data[] = array_search($search->serial_no,$check_val);
			}
			echo json_encode(array('success' => FALSE,'message' => "Serial Number is already exists in different vehicle ",'check_info'=>$return_data));
		}else{
			echo json_encode(array('success' => True,'message' => "Can Process"));
		}
	}
	
	//GET TYPE PATTERN
	public function get_tyre_pattern(){
		$tyre_size = $this->input->post('tyre_size');
		$this->db->select('prime_tyre_pattern_id,tyre_pattern');
		$this->db->from('cw_tyre_pattern');
		$this->db->where('cw_tyre_pattern.trans_status', 1);
		$this->db->where('tyre_size',$tyre_size);
		$pattern_type_result = $this->db->get()->result();
		$pattern_type_ar = "<option value=''>---- Select ----</option>";
		foreach($pattern_type_result as $result){
			$id            = $result->prime_tyre_pattern_id;
			$tyre_pattern  = $result->tyre_pattern;
			$pattern_type_ar .= "<option value='$id'>$tyre_pattern</option>";
		}
		echo json_encode(array('success' => TRUE, 'pattern_type_result' => $pattern_type_ar));
	}
	
	//GET VEHICLE LAST POSITION
	public function get_vehicle_last_position(){
    	$prime_vehicle_master_id = (int)$this->input->post('prime_vehicle_master_id');	
		if($prime_vehicle_master_id){
			$vehicle_last_position_info    = json_decode($this->tracking_api->get_last_position($prime_vehicle_master_id));
			if($vehicle_last_position_info->status){
				echo json_encode(array('success' => True,'data'=>$vehicle_last_position_info->data));
			}else{
				echo json_encode(array('success' => false,'message' => "Vehicle Last Position is not available.!"));
			}
		}else{
			echo json_encode(array('success'=>false,'message'=>'Please Contact Admin..!'));
		}
	}

	/*GET VEHICLE LAST POSITION
	public function get_vehicle_last_position(){
    	$prime_vehicle_master_id = (int)$this->input->post('prime_vehicle_master_id');	
		if($prime_vehicle_master_id){
			$this->db->select('cw_vehicle_trip_info.vehicle_no,entry_location,exit_location,direction,latitude,longitude,speed');
			$this->db->from('cw_vehicle_trip_info');
			$this->db->join('cw_vehicle_master','cw_vehicle_master.register_no = cw_vehicle_trip_info.vehicle_no');
			$this->db->where('cw_vehicle_master.trans_status', 1);
			$this->db->where('cw_vehicle_trip_info.trans_status', 1);
			$this->db->where('cw_vehicle_master.prime_vehicle_master_id',$prime_vehicle_master_id);
			$vehicle_result = $this->db->get()->result();
			$vehicle_last_position_info    = json_decode($this->tracking_api->get_last_position($prime_vehicle_master_id));
			if($vehicle_last_position_info->status){
				echo json_encode(array('success' => True,'data'=>$vehicle_last_position_info->data));
			}else{
				echo json_encode(array('success' => false,'message' => "Vehicle Last Position is not available.!"));
			}
		}else{
			echo json_encode(array('success'=>false,'message'=>'Please Contact Admin..!'));
		}
	}*/
	
	/*SVK EDIT END*/
}

?>