File: /home/cafsindia/ntc_cafsinfotech_in_bk/application/controllers/Maintenance_job_schedule.php
<?php
if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Base_controller.php");
class Maintenance_job_schedule extends Base_controller{
public function __construct(){
parent::__construct('maintenance_job_schedule');
if(!$this->Appconfig->isAppvalid()){
redirect('config');
}
$this->collect_base_info();
}
// LOAD PAGE WITH TABLE DATA
public function index(){
$this->db->select('prime_service_type_id,service_type');
$this->db->from('service_type');
$this->db->where('cw_service_type.trans_status', 1);
$service_type_rslt = $this->db->get()->result();
foreach($service_type_rslt as $rlst){
$prime_service_type_id = $rlst->prime_service_type_id;
$service_type = $rlst->service_type;
$service_type_list[$prime_service_type_id] = $service_type;
}
$data['service_type_list'] = $service_type_list;
$data['table_headers']= $this->xss_clean(get_Job_schedule_headers());
$this->load->view("$this->control_name/manage",$data);
}
//LOAD MODEL PAGE VIEW WITH DATA
public function view($prime_maintenance_job_schedule_id = -1){
$this->db->from('maintenance_job_schedule');
$this->db->join('vehicle_master', 'vehicle_master.prime_vehicle_master_id = maintenance_job_schedule.vehicle_no','LEFT');
$this->db->where('maintenance_job_schedule.prime_maintenance_job_schedule_id', $prime_maintenance_job_schedule_id);
$data['job_schedule'] = $this->db->get()->result();
$fault_info = json_decode($this->get_labour_info($prime_maintenance_job_schedule_id));
$data['labour_details_list'] = $fault_info->fault_table;
$this->db->select('prime_service_type_id,service_type');
$this->db->from('service_type');
$this->db->where('cw_service_type.trans_status', 1);
$service_type_rslt = $this->db->get()->result();
$service_type_list[""] = "--- Select ---";
foreach($service_type_rslt as $rlst){
$prime_service_type_id = $rlst->prime_service_type_id;
$service_type = $rlst->service_type;
$service_type_list[$prime_service_type_id] = $service_type;
}
$data['service_type_list'] = $service_type_list;
$this->db->select('prime_employees_id,employee_name,technician_skills.skill_name');
$this->db->from('employees');
$this->db->join('technician_skills', 'technician_skills.prime_technician_skills_id = employees.technician_skills','inner');
$this->db->where('cw_employees.role', 3);
$this->db->where('cw_employees.trans_status', 1);
$labour_rslt = $this->db->get()->result();
$labour_list[""] = "--Select--";
foreach($labour_rslt as $rlst){
$prime_employees_id = $rlst->prime_employees_id;
$employee_name = $rlst->employee_name;
$skill_name = $rlst->skill_name;
$labour_list[$prime_employees_id] = $employee_name."-".$skill_name;
}
$data['labour_list'] = $labour_list;
$this->load->view("$this->control_name/form",$data);
}
//SEARCH FAULTS LIST
public function search_faults(){
$search_fault_name = $this->input->post_get('search_fault_name');
$search_service_type = $this->input->post_get('search_service_type');
$suggestions = array();
if($search_fault_name && $search_service_type){
$this->db->select('cw_service_category.service_category,cw_maintenance_faults.fault_name,cw_maintenance_faults.prime_maintenance_faults_id as fault_id');
$this->db->from('cw_service_checklist');
$this->db->join('cw_service_category', 'cw_service_category.prime_service_category_id = cw_service_checklist.service_category','inner');
$this->db->join('cw_maintenance_faults', 'cw_maintenance_faults.prime_maintenance_faults_id = cw_service_checklist.service_name','inner');
$this->db->where('cw_service_checklist.service_type', $search_service_type);
$this->db->where('cw_service_checklist.status', 1);
$this->db->where('cw_service_checklist.trans_status', 1);
$this->db->group_start();
$this->db->like('cw_service_category.service_category',$search_fault_name);
$this->db->or_like('cw_maintenance_faults.fault_name',$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->fault_id;
$fault_name = $search_rlst->fault_name;
$service_category = $search_rlst->service_category;
$label = "$fault_name-$service_category";
$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);
}
//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');
$start_date = str_replace("/","-",$this->input->get('start_date'));
$end_date = str_replace("/","-",$this->input->get('end_date'));
$from_date = date('Y-m-d',strtotime($start_date));
$to_date = date('Y-m-d',strtotime($end_date));
$filters = $this->input->get('filters');
$this->db->select('prime_maintenance_job_schedule_id,prime_fault_id,job_card_number,cw_service_type.service_type,vehicle_master.register_no,vehicle_no,date,driver,km,company,job_status');
$this->db->from('maintenance_job_schedule');
$this->db->join('vehicle_master', 'vehicle_master.prime_vehicle_master_id = maintenance_job_schedule.vehicle_no','LEFT');
$this->db->join('service_type', 'service_type.prime_service_type_id = maintenance_job_schedule.service_type','inner');
if($search){
$this->db->group_start();
$this->db->or_like('cw_service_type.service_type',$search);
$this->db->or_like('driver',$search);
$this->db->or_like('km',$search);
$this->db->or_like('vehicle_no',$search);
if(strpos($search, '-') !== false){
$this->db->or_like('date', date('Y-m-d',strtotime($search)));
}
$this->db->group_end();
}
$this->db->group_start();
if($filters[0] > 0){
$this->db->where_in('maintenance_job_schedule.service_type', $filters);
}
$this->db->where('DATE_FORMAT(date, "%Y-%m-%d") BETWEEN '. $this->db->escape($from_date).' AND '.$this->db->escape($to_date));
$this->db->group_end();
$this->db->order_by($sort,$order);
$receiving_data = $this->db->get();
$receiving_rslt = $receiving_data->result();
$num_rows = $receiving_data->num_rows();
$datarows = array();
foreach($receiving_rslt as $receiving){
$datarows[] = get_Job_schedule_datarows($receiving,$this);
}
echo json_encode(array('total'=>$num_rows,'rows'=>$datarows));
}
//SAVE MODEL DATA TO DATA BASE
public function save(){
$prime_maintenance_job_schedule_id = (int)$this->input->post('prime_maintenance_job_schedule_id');
if((int)$this->input->post('vehicle_id')){
$vehicle_no = $this->input->post('vehicle_id');
}else{
$vehicle_no = $this->input->post('vehicle_no');
}
$prime_fault_id = $this->check_fault($vehicle_no);
$job_schedule_data = array(
'service_type' => $this->input->post('service_type'),
'date' => date('Y-m-d H:i:s',strtotime($this->input->post('date'))),
'company' => $this->input->post('company'),
'driver' => $this->input->post('driver'),
'vehicle_no' => $vehicle_no,
'km' => $this->input->post('km'),
'job_status' => $this->input->post('job_status')
);
if((int)$prime_maintenance_job_schedule_id === 0){
if($this->check_previous_faults_info($prime_fault_id,$vehicle_no)){
$job_card_number = $this->generate_code("JOB",$vehicle_no);
$job_schedule_data['job_card_number'] = $job_card_number;
$job_schedule_data['prime_fault_id'] = $prime_fault_id;
$job_schedule_data['trans_created_by'] = $this->session->userdata('logged_id');
$job_schedule_data['trans_created_date'] = date("Y-m-d H:i:s");
if($this->db->insert('cw_maintenance_job_schedule',$job_schedule_data)){
$prime_maintenance_job_schedule_id = $this->db->insert_id();
if((int)$prime_fault_id > 0){
$this->update_labour_details($prime_maintenance_job_schedule_id,$prime_fault_id);
}
echo json_encode(array('success' => TRUE, 'message' => "Successfully Inserted",'prime_maintenance_job_schedule_id' => $prime_maintenance_job_schedule_id));
}else{
echo json_encode(array('success' => false, 'message' => "Insertion failed, Please Try Again"));
}
}else{
echo json_encode(array('success' => false, 'message' => "Job is already exists for this vehicle"));
}
}else
if((int)$prime_maintenance_job_schedule_id > 0){
$job_schedule_data['trans_updated_by'] = $this->session->userdata('logged_id');
$job_schedule_data['trans_updated_date'] = date("Y-m-d H:i:s");
$this->db->where('prime_maintenance_job_schedule_id',$prime_maintenance_job_schedule_id);
if($this->db->update('cw_maintenance_job_schedule',$job_schedule_data)){
if($prime_fault_id){
$this->update_labour_details($prime_maintenance_job_schedule_id,$prime_fault_id);
}
echo json_encode(array('success' => TRUE, 'message' => "Successfully Updated",'prime_maintenance_job_schedule_id'=> $prime_maintenance_job_schedule_id));
}else{
echo json_encode(array('success' => false, 'message' => "Update failed, Please Try Again",'prime_maintenance_job_schedule_id'=> $prime_maintenance_job_schedule_id));
}
}
}
// SEARCH BY VEHICLE AUTO COMPLETE
public function search_vehicle(){
$search_vehicle_name = $this->input->post_get('search_vehicle_name');
$company = (int)$this->input->post_get('company');
$suggestions = array();
if($search_vehicle_name && $company == '1'){
$this->db->select('prime_vehicle_master_id,register_no');
$this->db->from('cw_vehicle_master');
$this->db->where('cw_vehicle_master.trans_status', 1);
$search_vehicle_info = $this->db->get()->result();
foreach($search_vehicle_info as $search_rlst){
$prime_vehicle_master_id = $search_rlst->prime_vehicle_master_id;
$vehicle_no = $search_rlst->register_no;
$label = "$vehicle_no";
$suggestions[] = array('value'=>$vehicle_no,'label'=>$label,'prime_vehicle_master_id' => $prime_vehicle_master_id);
}
}
if(empty($suggestions)){
$suggestions[] = array('value' => "0", 'label' => "No data found for this search");
}
echo json_encode($suggestions);
}
// SEARCH BY VEHICLE AUTO COMPLETE
public function search_driver(){
$search_driver_name = $this->input->post_get('search_driver_name');
$company = (int)$this->input->post_get('company');
$suggestions = array();
if($search_driver_name && $company == '1'){
$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();
foreach($driver_rslt as $rlst){
$prime_employees_id = $rlst->prime_employees_id;
$driver_name = $rlst->employee_name;
$label = "$driver_name";
$suggestions[] = array('value'=>$driver_name,'label'=>$label,'prime_employees_id' => $prime_employees_id);
}
}
if(empty($suggestions)){
$suggestions[] = array('value' => "0", 'label' => "No data found for this search");
}
echo json_encode($suggestions);
}
//SAVE LABOUR DETAILS
public function labour_details_save(){
$prime_maintenance_job_schedule_id = (int)$this->input->post('job_schedule_id');
$fault_name = (int)$this->input->post('prime_fault_id');
$labour_info_data = array(
'assign_labour' => (int)$this->input->post('assign_labour'),
'fault_name' => $fault_name,
'schedule_delivery_date' => date('Y-m-d'),
'remarks' => $this->input->post('remarks'),
'prime_maintenance_job_schedule_id' => $prime_maintenance_job_schedule_id,
'status' => 0,
'service_status' => 2
);
if($this->job_schedule_exists($prime_maintenance_job_schedule_id,TRUE)){
if(!($this->check_labour_already_exists($fault_name,$prime_maintenance_job_schedule_id))){
$labour_info_data['trans_created_by'] = $this->session->userdata('logged_id');
$labour_info_data['trans_created_date'] = date("Y-m-d H:i:s");
if($this->db->insert('labour_details',$labour_info_data)){
echo json_encode(array('success' => TRUE, 'message' => "Successfully Inserted",'prime_maintenance_job_schedule_id' => $prime_maintenance_job_schedule_id));
}else{
echo json_encode(array('success' => FALSe, 'message' => "Insertion failed, Please Try Again"));
}
}else{
echo json_encode(array('success' => False, 'message' => "Fault Already exists.!"));
}
}else
{
echo json_encode(array('success' => False, 'message' => "Please Fill Previous Tab Info.!"));
}
}
//GET LABOUR DETAILS
public function get_labour_info($prime_maintenance_job_schedule_id = -1){
if((int)$this->input->post('prime_maintenance_job_schedule_id') > 0){
$prime_maintenance_job_schedule_id = (int)$this->input->post('prime_maintenance_job_schedule_id');
}
$tble_line = "";
if($this->job_schedule_exists($prime_maintenance_job_schedule_id,TRUE)){
$this->db->select('prime_labour_details_id,hours,completed_delivery_date,maintenance_faults.fault_name ,cw_labour_details.fault_name as fault_id,cw_labour_details.remarks,assign_labour,schedule_delivery_date,cw_labour_details.status');
$this->db->from('labour_details');
$this->db->join('maintenance_faults', 'maintenance_faults.prime_maintenance_faults_id = cw_labour_details.fault_name','inner');
$this->db->where('cw_labour_details.prime_maintenance_job_schedule_id', $prime_maintenance_job_schedule_id);
$this->db->where('cw_labour_details.trans_status', 1);
$this->db->where('cw_labour_details.service_status', 2);
$labour_info = $this->db->get()->result();
$this->db->select('prime_employees_id,employee_name,technician_skills.skill_name');
$this->db->from('employees');
$this->db->join('technician_skills', 'technician_skills.prime_technician_skills_id = employees.technician_skills','inner');
$this->db->where('cw_employees.role', 3);
$this->db->where('cw_employees.trans_status', 1);
$labour_rslt = $this->db->get()->result();
$labour_list[""] = "--Select--";
foreach($labour_rslt as $rlst){
$prime_employees_id = $rlst->prime_employees_id;
$employee_name = $rlst->employee_name;
$skill_name = $rlst->skill_name;
$labour_list[$prime_employees_id] = $employee_name."-".$skill_name;
}
foreach($labour_info as $fault_rlst){
$prime_labour_details_id = $fault_rlst->prime_labour_details_id;
$fault_name = $fault_rlst->fault_name;
$fault_id = $fault_rlst->fault_id;
$labour_checklist = $fault_rlst->assign_labour;
$remarks = $fault_rlst->remarks;
$status = $fault_rlst->status;
$schedule_delivery_date = date('d-m-Y',strtotime($fault_rlst->schedule_delivery_date));
$completed_delivery_date = $fault_rlst->completed_delivery_date;
$hours = $fault_rlst->hours;
$status_list = array(0 => "Pending",1 => "on process",2 => "completed",3 => "incomplted");
$completed_delivery_date = "-";
$hours = "-";
if((int)$status != 0){
$completed_delivery_date = date('d-m-Y',strtotime($fault_rlst->completed_delivery_date));
$hours = $fault_rlst->hours;
$remarks = $remarks;
$labour_checklist = $labour_list[$labour_checklist];
if($schedule_delivery_date){
$date = date('d-m-Y',strtotime($schedule_delivery_date));
if($date === "01-01-1970"){ $date = date("d-m-Y"); }
}
$schedule_delivery_date = $date;
$status = $status_list[$status];
}else
if((int)$status === 0){
$remarks = form_input(array('name' => "remarks_$prime_labour_details_id",'id' => "remarks_$prime_labour_details_id",'class' => 'form-control input-sm alpha valid','placeholder'=>'Remarks','onchange' => "update_info($prime_labour_details_id)",'value'=>$remarks));
$labour_checklist = form_dropdown(array('name' => "assign_labour_$prime_labour_details_id",'id' => "assign_labour_$prime_labour_details_id",'class' => 'form-control input-sm select2','onchange' => "update_info($prime_labour_details_id)"), $labour_list,$labour_checklist);
if($schedule_delivery_date){
$date = date('d-m-Y',strtotime($schedule_delivery_date));
if($date === "01-01-1970"){ $date = ''; }
}
$schedule_delivery_date = form_input(array( 'name' => "schedule_delivery_date_$prime_labour_details_id", 'id' => "schedule_delivery_date_$prime_labour_details_id", 'class' => 'form-control input-sm datepicker' ,'value' => $date));
$status = $status_list[$status];
}
$tble_line .= " <tr>
<td style='width:15%'>$fault_name</td>
<td style='width:15%'>$labour_checklist</td>
<td style='width:15%'>$remarks</td>
<td style='width:15%'>$schedule_delivery_date</td>
<td style='width:15%'>$status</td>
<td style='width:15%'>$hours</td>
<td style='width:10%'>$completed_delivery_date</td>
</tr>";
}
}
if($tble_line === ""){
$tble_line = "<tr align='center'><td style='width:100%' colspan='7'>No Data Found</td></tr>";
}
$table_data = " <h4 class='m-t-0 header-title'><b>Labours Information List</b></h4>
<table class='table table-striped table-bordered' id='labours_info_table'>
<thead>
<tr>
<th style='width:15%'>Fault Name</th>
<th style='width:15%'>Assign Labour</th>
<th style='width:15%'>Remarks</th>
<th style='width:15%'>Assign Date</th>
<th style='width:15%'>Status</th>
<th style='width:15%'>Hours Taken</th>
<th style='width:10%'>Completed Date</th>
</tr>
</thead>
<tbody>
$tble_line
</tbody>
</table>";
return json_encode(array("success" => TRUE,'fault_table' => $table_data));
}
//GATE PASS INFO EXIST
public function job_schedule_exists($prime_maintenance_job_schedule_id){
$this->db->from('maintenance_job_schedule');
$this->db->where('prime_maintenance_job_schedule_id', $prime_maintenance_job_schedule_id);
$this->db->where('trans_status', 1);
return ($this->db->get()->num_rows() == 1);
}
/* //CHECKING FAULT ALREADY EXIST
public function fault_exists($prime_fault_id){
$this->db->from('maintenance_fault_report');
$this->db->where('prime_maintenance_fault_report_id', $prime_fault_id);
$this->db->where('trans_status', 1);
return ($this->db->get()->num_rows() == 1);
} */
//CHECKING FAULT ALREADY EXIST ARE COMPLETED
public function check_previous_faults_info($prime_fault_id,$vehicle_no){
$this->db->from('maintenance_job_schedule');
$this->db->join('maintenance_fault_report', 'maintenance_fault_report.prime_maintenance_fault_report_id = maintenance_job_schedule.prime_fault_id','inner');
$this->db->where('maintenance_job_schedule.prime_fault_id', (int)$prime_fault_id);
$this->db->where('maintenance_job_schedule.vehicle_no', $vehicle_no);
$status = array(1,2);
$this->db->where_in('maintenance_fault_report.fault_status',$status);
$this->db->where('maintenance_fault_report.trans_status', 1);
$this->db->where('maintenance_job_schedule.trans_status', 1);
if((int)$this->db->get()->num_rows() === 1){
return false;
}else{
return TRUE;
}
}
//CHECK LABOUR IS ALREADY EXIST
public function check_labour_already_exists($fault_name,$prime_maintenance_job_schedule_id){
$this->db->from('labour_details');
$this->db->where('fault_name', (int)$fault_name);
$this->db->where('prime_maintenance_job_schedule_id', (int)$prime_maintenance_job_schedule_id);
$this->db->where('trans_status', 1);
if((int)($this->db->get()->num_rows()) === 1 ){
return true;
}else{
return false;
}
}
//GET TABLE VIEW FOR LABOUR INFORMATION TABLE
public function get_labour_info_list_table(){
$prime_maintenance_job_schedule_id = '';
if((int)$this->input->post('prime_maintenance_job_schedule_id') > 0){
$prime_maintenance_job_schedule_id = $this->input->post('prime_maintenance_job_schedule_id');
}
$fault_info = json_decode($this->get_labour_info($prime_maintenance_job_schedule_id));
echo json_encode(array("success" => TRUE,'fault_info' => $fault_info->fault_table));
}
//UPDATE LABOURS ONCE
public function update_labour_details($prime_maintenance_job_schedule_id,$fault_report_id){
if($this->job_schedule_exists($prime_maintenance_job_schedule_id,TRUE)){
if($prime_maintenance_job_schedule_id > 0){
$update_data = array();
$update_data['prime_maintenance_job_schedule_id'] = $prime_maintenance_job_schedule_id;
$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',(int)$fault_report_id);
$this->db->update('labour_details',$update_data);
$update_fault_status['fault_status'] = 2;
$this->db->where('prime_maintenance_fault_report_id',(int)$fault_report_id);
$this->db->update('maintenance_fault_report',$update_fault_status);
}
}
}
//UPDATE LABOUR INFO
public function update_info(){
$prime_labour_details_id = $this->input->post('prime_labour_details_id');
$update_data['schedule_delivery_date'] = date('Y-m-d',strtotime($this->input->post('schedule_delivery_date')));
$update_data['assign_labour'] = $this->input->post('assign_labour');
$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_labour_details_id',$prime_labour_details_id);
if($this->db->update('cw_labour_details',$update_data)){
echo json_encode(array("success" => TRUE,'message' => 'Updated successfully'));
}else{
echo json_encode(array("success" => False,'message' => "Please Try Again"));
}
}
//PRINT JOB CARD
public function view_print($prime_maintenance_job_schedule_id = -1){
if((int)$prime_maintenance_job_schedule_id > 0){
$this->db->select('job_card_number,maintenance_job_schedule.company,vehicle_master.register_no, vehicle_no,maintenance_job_schedule.date,maintenance_job_schedule.driver,maintenance_job_schedule.km,IFNULL(GROUP_CONCAT(cw_maintenance_faults.fault_name),0) as fault_name,IFNULL(GROUP_CONCAT(cw_labour_details.remarks),0) as remarks,IFNULL(GROUP_CONCAT(cw_employees.employee_name),0) as employee_name,IFNULL(GROUP_CONCAT(cw_labour_details.schedule_delivery_date),0) as schedule_delivery_date,IFNULL(GROUP_CONCAT(cw_labour_details.hours),0) as hours,IFNULL(GROUP_CONCAT(cw_labour_details.status),0) as status');
$this->db->from('cw_labour_details');
$this->db->join('cw_maintenance_job_schedule','cw_maintenance_job_schedule.prime_maintenance_job_schedule_id = cw_labour_details.prime_maintenance_job_schedule_id','inner');
$this->db->join('vehicle_master', 'vehicle_master.prime_vehicle_master_id = cw_maintenance_job_schedule.vehicle_no','LEFT');
$this->db->join('cw_maintenance_faults','cw_maintenance_faults.prime_maintenance_faults_id = cw_labour_details.fault_name','inner');
$this->db->join('cw_employees','cw_employees.prime_employees_id = cw_labour_details.assign_labour','inner');
$this->db->where('cw_labour_details.prime_maintenance_job_schedule_id',(int)$prime_maintenance_job_schedule_id);
$this->db->where('cw_labour_details.trans_status', 1);
$this->db->where('cw_maintenance_faults.trans_status', 1);
$this->db->where('cw_employees.trans_status', 1);
$job_card_info = $this->db->get();
$num_rows = $job_card_info->num_rows();
if((int)$num_rows > 0){
$data['job_card'] = $job_card_info->result();
$this->load->view("$this->control_name/view_print",$data);
}
}
}
//GENERATE JOB UNIQUE CODE
public function generate_code($code="UN",$vehicle_no){
$this->db->select('cw_vehicle_category.vehicle_category');
$this->db->from('cw_vehicle_master');
$this->db->join('cw_vehicle_category', 'cw_vehicle_category.prime_vehicle_category_id = cw_vehicle_master.vehicle_category','inner');
$this->db->where('cw_vehicle_master.register_no',$vehicle_no);
$result = $this->db->get()->row();
$vehicle_category = substr("$result->vehicle_category",0,1);
if($vehicle_category == ''){
$vehicle_category = 'O';
}
$this->db->from('cw_maintenance_job_schedule');
$this->db->where('trans_status', 1);
$count = (int)$this->db->get()->num_rows();
$count = $count + 1 ;
$count = str_pad($count, 4, '0', STR_PAD_LEFT);
$date = date('YMd');
$uniqueCode = $code . $vehicle_category . $date . $count;
return strtoupper($uniqueCode);
}
//CHECK VEHICLE HAVE FAULT REPORT
public function check_fault($vehicle_no){
$this->db->from('maintenance_fault_report');
$this->db->where('ntc_vehicle', $vehicle_no);
$this->db->where('trans_status', 1);
$this->db->where('fault_status', 1);
$fault_info = $this->db->get();
$count = $fault_info->num_rows();
if((int)$count > 0){
$rlst = $fault_info->result();
return $rlst[0]->prime_maintenance_fault_report_id;
}else{
return 0;
}
}
//GET CHECKLIST
public function get_checklist(){
$job_id = (int)$this->input->post('job_schedule_id');
$service_type = (int)$this->input->post('service_type');
$this->db->select('cw_service_type.prime_service_type_id,cw_service_type.process_by,cw_service_category.service_category,GROUP_CONCAT(cw_maintenance_faults.fault_name) as service_name,GROUP_CONCAT(cw_maintenance_faults.prime_maintenance_faults_id) as fault_id');
$this->db->from('cw_service_checklist');
$this->db->join('cw_service_type', 'cw_service_type.prime_service_type_id = cw_service_checklist.service_type','inner');
$this->db->join('cw_service_category', 'cw_service_category.prime_service_category_id = cw_service_checklist.service_category','inner');
$this->db->join('cw_maintenance_faults', 'cw_maintenance_faults.prime_maintenance_faults_id = cw_service_checklist.service_name','inner');
$this->db->where('cw_service_checklist.service_type', $service_type);
$this->db->where('cw_service_checklist.status', 1);
$this->db->where('cw_service_checklist.trans_status', 1);
$this->db->group_by('cw_service_checklist.service_category');
$service_info = $this->db->get()->result();
$process_by = (int)$service_info[0]->process_by;
$view_content = "";
if($process_by === 2){
$this->db->select('prime_maintenance_job_schedule_id,faults_list,status_list');
$this->db->from('cw_maintenance_job_schedule');
$this->db->where('cw_maintenance_job_schedule.prime_maintenance_job_schedule_id', $job_id);
$faults_info = $this->db->get()->row();
$faults_list = explode(',',$faults_info->faults_list);
$status_list = explode(',',$faults_info->status_list);
$rlst = array_combine($faults_list,$status_list);
$li_line = "";
$status_info = array(''=>'--select--','1'=>'satisfactory','2'=> 'Repair Needed','3' => 'Not Applicable');
$i = 1;
foreach($service_info as $service_rlst){
$prime_service_type_id = $service_rlst->prime_service_type_id;
$process_by = $service_rlst->process_by;
$service_category = $service_rlst->service_category;
$service_name = explode(',',$service_rlst->service_name);
$fault_id = explode(',',$service_rlst->fault_id);
$service_list_data = "";
foreach($fault_id as $id => $value){
$fault_id = form_input(array('name' => 'hidden_fault_id[]','class' => 'form-control input-sm alpha valid','value'=>$value,'type'=>'hidden'));
$status = form_dropdown(array('name' =>'status[]','id'=>'status_'.$i,'class' => 'form-control input-sm select2 required status'), $status_info,$rlst[$value]);
$service_list_data .= "<tr style='width:20%;'><td style='width:59%;'><label for='status_$id' class='control-label $required'>$service_name[$id]</label> $fault_id</td><td style='width: 20%;'> $status</td></tr>";
$i++;
}
$li_line .= "<tr><td colspan='2'><h4 class='block_head' style='width:100%'>$service_category</h4></td></tr>
<div class='form-inline'>
$service_list_data
</div>";
}
//$form_open = form_open('maintenance_job_schedule/save_checklist/',array('id'=>'save_checklist_form','class'=>'form-inline'));
$job_schedule_id = form_input(array('name' => 'prime_job_schedule_id','id'=>'prime_job_schedule_id','class' => 'form-control input-sm alpha valid','value'=>$job_id,'type'=>'hidden'));
$btn = "<div class='form-group' >
<td colspan='2' style='text-align:right;'><button type='submit' class='btn btn-sm btn-primary' id='add_service_info_btn' > Add/Update </button> <button type='button' class='btn btn-sm btn-danger' id='cancel_service_info_btn'>Cancel</button></td>
</div>";
//$form_close = form_close();
$view_content .= "
<div class='content' style='padding: 8px;'>
$job_schedule_id
<table class='table table-hover' style='width: 84%;margin: auto;background-color:#ffffff;'>$li_line
<tr>$btn</tr></table>
</div>";
}
echo json_encode(array('success'=>true,'service' =>true,'process_by' => $process_by,'view_content' => $view_content));
}
//SAVE CHECKLIST
public function save_checklist(){
$fault_id = $this->input->post('hidden_fault_id');
$status = $this->input->post('status');
$prime_job_schedule_id = $this->input->post('prime_job_schedule_id');
$array = array();
foreach ($status as $key => $value) {
if((int)$value === 0) {
$array[$key] = 0;
}else{
$array[$key] = $value;
}
}
$this->db->select('prime_maintenance_job_schedule_id,faults_list,status_list');
$this->db->from('cw_maintenance_job_schedule');
$this->db->where('cw_maintenance_job_schedule.prime_maintenance_job_schedule_id', $prime_job_schedule_id);
$faults_info = $this->db->get()->row();
$faults_list = explode(',',$faults_info->faults_list);
$status_list = explode(',',$faults_info->status_list);
$rlst = array_combine($fault_id,$array);
$insert_count = 0;
$update_count = 0;
$i = 0;
foreach($rlst as $key => $value){
if(!($this->check_labour_already_exists($key,$prime_job_schedule_id))){
if((int)$value === 2){
$labour_info_data = array(
'fault_name' => $key,
'schedule_delivery_date' => date('Y-m-d'),
'prime_maintenance_job_schedule_id' => $prime_job_schedule_id,
'service_status' => $value,
'status' => 0,
'trans_created_by' => $this->session->userdata('logged_id'),
'trans_created_date' => date("Y-m-d H:i:s")
);
$this->db->insert('labour_details',$labour_info_data);
$insert_count = (int)$insert_count + 1;
}
}else{
if($this->check_labour_assign_to_fault($key,$prime_job_schedule_id)){
$update_data['service_status'] = $value;
$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('fault_name',$key);
$this->db->where('prime_maintenance_job_schedule_id',$prime_job_schedule_id);
$this->db->update('labour_details',$update_data);
$update_count = (int)$update_count + 1;
}else{
$array[$i] = $status_list[$i];
}
}
$i++;
}
$faults_list = implode(',',$fault_id);
$status_list = implode(',',$array);
$update_data = array();
$update_data['faults_list'] = $faults_list;
$update_data['status_list'] = $status_list;
$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_job_schedule_id',$prime_job_schedule_id);
$this->db->update('cw_maintenance_job_schedule',$update_data);
$update_status = false;
if($insert_count === 0 && $update_count === 0){
echo json_encode(array('success' => TRUE, 'message' => "No Service Added",'prime_maintenance_job_schedule_id' => $prime_job_schedule_id,'update_status'=>$update_status));
}else{
if($update_count === 0){
$message = "";
}else{
$update_status = true;
$message = "Successfully $update_count updated";
}
echo json_encode(array('success' => TRUE, 'message' => "Successfully $insert_count Service Added",'prime_maintenance_job_schedule_id' => $prime_job_schedule_id,'update_status' => $update_status,'update_message' => $message));
}
}
//CHECK LABOUR FAULT ASSIGNED
public function check_labour_assign_to_fault($fault_name,$prime_maintenance_job_schedule_id){
$this->db->select('assign_labour');
$this->db->from('labour_details');
$this->db->where('fault_name', (int)$fault_name);
$this->db->where('prime_maintenance_job_schedule_id', (int)$prime_maintenance_job_schedule_id);
$this->db->where('trans_status', 1);
$rlst = $this->db->get()->result();
$assign_labour = $rlst[0]->assign_labour;
if((int)$assign_labour){
return false;
}else{
return true;
}
}
}
?>