<?php
    defined( 'ABSPATH' ) or die( 'Wenzani?? No hackers please!' );

    $GroupCatalogue = new wpdb('root','P@ssw0rd','GroupCatalogue','192.168.17.3');

    function api_get_categories($country_code = 1){
        global $GroupCatalogue;
        $sql = $GroupCatalogue->prepare("SELECT DISTINCT `VEH_CAT` FROM `VEHICLE` WHERE `COUNTRY_CDE` LIKE %s ", '%' . $country_code . '%');
        $rows = $GroupCatalogue->get_results($sql, ARRAY_N);

        return json_encode($rows);
    }

    function api_get_makes($veh_cat, $country_code = 1) {
        global $GroupCatalogue;
        $heavy = "HEAVY DUTY";

        if($veh_cat == 'ALL VEHICLES') {
            $sql = $GroupCatalogue->prepare("SELECT DISTINCT `MAKE` FROM `VEHICLE` WHERE `COUNTRY_CDE` LIKE %s ", '%' . $country_code . '%');
        } elseif($veh_cat == 'BUSES AND TRUCKS') {
            $sql = $GroupCatalogue->prepare("SELECT DISTINCT `MAKE` FROM `VEHICLE` WHERE `VEH_CAT` IN ( %s, %s ) AND `COUNTRY_CDE` LIKE %s ", $veh_cat, $heavy, '%' . $country_code . '%');
        } else {
            $sql = $GroupCatalogue->prepare("SELECT DISTINCT `MAKE` FROM `VEHICLE` WHERE `VEH_CAT` LIKE %s AND `COUNTRY_CDE` LIKE %s  ", $veh_cat, '%' . $country_code . '%');
        }

        $rows = $GroupCatalogue->get_results($sql, ARRAY_A);

        return json_encode($rows);
    }

    function api_get_series($veh_make, $veh_cat, $country_code = 1) {
        global $GroupCatalogue;
        $heavy = "HEAVY DUTY";

        if($veh_cat == 'ALL VEHICLES') {
            $sql = $GroupCatalogue->prepare("SELECT DISTINCT `VEH_SERIES` AS SERIES FROM `VEHICLE` WHERE `MAKE` LIKE %s AND `COUNTRY_CDE` LIKE %s ORDER BY `VEH_SERIES` ASC", $veh_make,  '%' . $country_code . '%');
        } elseif($veh_cat == 'BUSES AND TRUCKS') {
            $sql = $GroupCatalogue->prepare("SELECT DISTINCT `VEH_SERIES` AS SERIES FROM `VEHICLE` WHERE `MAKE` LIKE %s AND `VEH_CAT` IN ( %s, %s ) AND `COUNTRY_CDE` LIKE %s ", $veh_make, $veh_cat, $heavy, '%' . $country_code . '%');
        } else {
            $sql = $GroupCatalogue->prepare("SELECT DISTINCT `VEH_SERIES` AS SERIES FROM `VEHICLE` WHERE `MAKE` LIKE %s AND `VEH_CAT` LIKE %s AND `COUNTRY_CDE` LIKE %s ORDER BY `VEH_SERIES` ASC", $veh_make, $veh_cat, '%' . $country_code . '%');
        }

        $rows = $GroupCatalogue->get_results($sql, ARRAY_A);

        return json_encode($rows);
    }

    function api_get_model($veh_series, $veh_make, $veh_cat, $country_code = 1){
        global $GroupCatalogue;
        $sql = $GroupCatalogue->prepare("SELECT DISTINCT `MODEL` FROM `VEHICLE` WHERE `VEH_SERIES` LIKE %s AND `MAKE` LIKE %s AND `VEH_CAT` LIKE %s AND `COUNTRY_CDE` LIKE %s ", $veh_series, $veh_make, $veh_cat, '%' . $country_code . '%');
        $rows = $GroupCatalogue->get_results($sql, ARRAY_A);

        return json_encode($rows);
    }
 
    function api_get_engine($veh_model, $veh_series, $veh_make, $veh_cat, $country_code = 1){
        global $GroupCatalogue;
        $sql = $GroupCatalogue->prepare("SELECT DISTINCT `ENGINE` FROM `VEHICLE` WHERE `MODEL` LIKE %s AND `VEH_SERIES` LIKE %s AND `MAKE` LIKE %s AND `VEH_CAT` LIKE %s AND `COUNTRY_CDE` LIKE %s ", $veh_model, $veh_series, $veh_make, $veh_cat, '%' . $country_code . '%');
        $rows = $GroupCatalogue->get_results($sql, ARRAY_A);

        return json_encode($rows);
    }

    function api_get_filter_query($filter_no = "", $type = "", $desc = "", $height = "", $length = "", $width = "", $outerDia = "", $innerDia = "", $threadSize = ""){
        global $wpdb;

        $query = "SELECT * FROM v_filterquery WHERE ";

        $parcount = 0;

        if($filter_no != ""){
            $query .= " FilterNo like '". $filter_no ."%' ";
            $parcount++;
        }
        if($type != ""){
            $query .= $parcount > 0 ? " AND " : ""; 
            $query .= " FilterType LIKE '". $type ."%' ";
            $parcount++;
        }
        if($desc != ""){
            $query .= $parcount > 0 ? " AND " : ""; 
            $query .= " FilterDescr LIKE '". $desc ."' ";
            $parcount++;
        }
        if($height != ""){
            $query .= $parcount > 0 ? " AND " : ""; 
            $query .= " (Height >= ". ((int)$height - 5) ." AND Height <= ". ((int)$height + 5) .") ";
            $parcount++;
        }
        if($length != ""){
            $query .= $parcount > 0 ? " AND " : ""; 
            $query .= " (Length >= ". ((int)$length - 5) ." AND Length <= ". ((int)$length + 5) .") ";
            $parcount++;
        }
        if($width != ""){
            $query .= $parcount > 0 ? " AND " : ""; 
            $query .= " (Width >= ". ((int)$width - 5) ." AND Width <= ". ((int)$width + 5) .") ";
            $parcount++;
        }
        if($outerDia != ""){
            $query .= $parcount > 0 ? " AND " : ""; 
            $query .= " (OuterCanDiameter >= '". ((int)$outerDia - 5) ."' AND OuterCanDiameter <= '". ((int)$outerDia + 5) ."') ";
            $parcount++;
        }
        if($innerDia != ""){
            $query .= $parcount > 0 ? " AND " : ""; 
            $query .= " (InsideDiameter >= '". ((int)$innerDia - 5) ."' AND InsideDiameter <= '". ((int)$innerDia + 5) ."') ";
            $parcount++;
        }
        if($threadSize != ""){
            $query .= $parcount > 0 ? " AND (" : " ("; 
            $query .= " ThreadSz LIKE '". $threadSize ."%' OR REPLACE(ThreadSz, ' ', '') LIKE '". $threadSize ."%')";
            $parcount++;
        }

        $query .= " AND `CompanyCode` = '200'";

        write_log($query);

        $rows = $wpdb->get_results($query, ARRAY_A);

        return $rows;
    }

    function api_get_part_info_type($type, $part_no, $company_code = 200){
        $query = "";
        if(strtolower($type) == 'filter'){
            global $wpdb;
            $query = "SELECT * FROM v_filterquery WHERE FilterNo like %s AND CompanyCode = %d";
            $sql = $wpdb->prepare($query, $part_no, $company_code);
            $rows = $wpdb->get_results($sql, ARRAY_A);
        } else {
            switch (strtolower($type) ) {
                case 'brakepad':
                    $query = "SELECT * FROM BRAKEPAD WHERE PART_NO like %s";
                    break;
                case 'brakedisc':
                    $query = "SELECT * FROM BRAKEDISC WHERE PART_NO like %s";
                    break;
                case 'indyoil':
                    $query = "SELECT * FROM INDYOIL WHERE PRODUCT_NAME like %s";
                    break;
                default:
                    return;     
            }
            global $GroupCatalogue;
            $sql = $GroupCatalogue->prepare($query, $part_no, $company_code);
            $rows = $GroupCatalogue->get_results($sql, ARRAY_A);
        }

        return $rows;
    }

    function api_get_part_appl($type, $part_no, $country_code = 0){
        $query = "";
        global $wpdb;
        switch (strtolower($type)) {
            case 'filter':
                $query = "SELECT * FROM v_filterapplications WHERE FILT_NO like %s";
                break;
            case 'brakepad':
                $query = "SELECT * FROM v_brakepadapplications WHERE PART_NO like %s";
                break;
            case 'brakedisc':
                $query = "SELECT * FROM v_brakediscapplications WHERE PART_NO like %s";
                break;
            case 'indyoil':
                $query = "SELECT * FROM v_indyoilapplications WHERE PART_NO like %s";
                break;
            default:
                return;
        }
        if($country_code == 0)
        {
            $sql = $wpdb->prepare($query, $part_no);
        } else {
            $query .= " AND COUNTRY_CDE LIKE %s";
            $sql = $wpdb->prepare($query, $part_no, '%'. $country_code. '%');
        }

        write_log($sql);
        $rows = $wpdb->get_results($sql, ARRAY_A);

        return $rows;
    }

    function api_get_filter_cross_ref($filter_no, $countryId = 1){
        global $GroupCatalogue;
        $sql = $GroupCatalogue->prepare("SELECT * FROM CROSS_REF WHERE FRM_FILT_NO = %s AND `COUNTRY_CDE` like %s", $filter_no, "%" . $countryId . "%");
        $rows = $GroupCatalogue->get_results($sql, ARRAY_A);

        return $rows;
    }

    function api_get_nds($type, $country_code = '%1%', $company_code = 200){
        $query = "";
        $where = "";
        switch ($type) {
            case 'new':
                $where = "N";
                break;
            case 'superceded':
                $where = "S";
                break;
            case 'discontinued':
                $where = "D";
                break;
            default:
                return;
        }
        global $wpdb;
        $query = "SELECT * FROM v_filterquery WHERE NDSstat LIKE %s AND CountryCode LIKE %s AND CompanyCode = %d";
        $sql = $wpdb->prepare($query, $where, $country_code, $company_code);
        $rows = $wpdb->get_results($sql, ARRAY_A);

        return $rows;
    }

    function api_get_xref_by_type($xref_type, $make = "", $search = "", $country = "1"){
        $query = "";
        $tableName = "";
        $makeLabel = "`MANUFACTURER`";
        $partDesc = "`PART_NO`";
        $appendedQuery = "";
        switch (strtolower($xref_type)) {
            case 'filter':
                $partDesc = " REPLACE(REPLACE(REPLACE(REPLACE(`OE_FILT_NO`,'.',''),'-',''),'/',''),' ','') ";
                $tableName = "`CROSS_REF`";                
                $makeLabel = "`MAKE`";
                if(strlen($search) > 0){
                    $appendedQuery = " OR GUD_FILT_NO LIKE '%s'";
                }
                break;
            case 'brakepad':
                if(is_oem_part($search)){
                    $partDesc = " REPLACE(REPLACE(REPLACE(REPLACE(`OE_NUMBER`,'.',''),'-',''),'/',''),' ','') ";
                } 
                $tableName = "`BRAKEPAD_CROSS_REF`";
                break;
            case 'brakedisc':
                if(is_oem_part($search)){
                    $partDesc = " REPLACE(REPLACE(REPLACE(REPLACE(`OE_NUMBER`,'.',''),'-',''),'/',''),' ','') ";
                } 
                $tableName = "`BRAKEDISC_CROSS_REF`";
                break;
            default:
                return;
        }
            
        $query = "SELECT * FROM " . $tableName . " WHERE ". $makeLabel ." LIKE %s AND ". $partDesc ." LIKE REPLACE(REPLACE(REPLACE(REPLACE('%s','.',''),'-',''),'/',''),' ','')" . $appendedQuery . " AND `COUNTRY_CDE` LIKE '%s'";

        global $GroupCatalogue;
        if(strlen($appendedQuery) > 0) {
            $sql = $GroupCatalogue->prepare($query, $make."%", $search."%", $search."%", "%" . $country . "%");
        } else {
            $sql = $GroupCatalogue->prepare($query, $make."%", $search."%", "%" . $country . "%");
        }

        $rows = $GroupCatalogue->get_results($sql, ARRAY_A);

        return $rows;
    }

    function api_get_makes_by_type($xref_type){
        $query = "";
        switch (strtolower($xref_type)) {
            case 'filter':
                $query = "SELECT DISTINCT MAKE FROM CROSS_REF";
                break;
            case 'brakepad':
                $query = "SELECT DISTINCT MANUFACTURER AS MAKE FROM BRAKEPAD_CROSS_REF";
                break;
            case 'brakedisc':
                $query = "SELECT DISTINCT MANUFACTURER AS MAKE FROM BRAKEDISC_CROSS_REF";
                break;
            default:
                return;
        }
        global $GroupCatalogue;
        $rows = $GroupCatalogue->get_results($query, ARRAY_A);

        return json_encode($rows);
    }

    function api_get_filter_descriptions($type = ""){
        global $wpdb;

        $query = "SELECT DISTINCT FilterDescr AS Description FROM v_filterquery WHERE ";

        if ($type == "" || $type == "Please Select") {
            $query .= " `CompanyCode` = '200'";
        } else {
            $query .= " FilterType like %s AND `CompanyCode` = '200'";
        }
         
        $sql = $wpdb->prepare($query, $type."");
        $rows = $wpdb->get_results($sql, ARRAY_A);

        return json_encode($rows);
    }

    function api_get_filter_type($filter_no){
        global $wpdb;

        $query = "SELECT FilterType FROM v_filterquery WHERE FilterNo = '".$filter_no ."'";
        $type = $wpdb->get_var( $query );

        return $type;
    }

    function api_get_filter_description($filter_no){
        global $wpdb;

        $query = "SELECT FilterDescr FROM v_filterquery WHERE FilterNo = '".$filter_no."'";
        $type = $wpdb->get_var( $query );

        return $type;
    }

    function api_get_oem_no_by_make($xref_type, $make){
        $query = "";
        switch ($xref_type) {
            case 'Filter':
                $query = "SELECT OE_FILT_NO AS OEMNO FROM CROSS_REF WHERE MAKE = %s";
                break;
            case 'Brakepad':
                $query = "SELECT OE_NUMBER AS OEMNO FROM BRAKEPAD_CROSS_REF WHERE MANUFACTURER = %s";
                break;
            case 'Brakedisc':
                $query = "SELECT OE_NUMBER AS OEMNO FROM BRAKEDISC_CROSS_REF WHERE MANUFACTURER = %s";
                break;
            default:
                return;
        }
        global $GroupCatalogue;
        $sql = $GroupCatalogue->prepare($query, $make);
        $rows = $GroupCatalogue->get_results($sql, ARRAY_A);

        return json_encode($rows);
    }

    function api_get_vehicle_applications($veh_model = "", $veh_series = "", $veh_make = "", $veh_cat = "%", $prod_no= "", $veh_seq_id = "", $country_code = 1){
        $engine = "";
        if($veh_cat == "ALL VEHICLES"){ $veh_cat = "";}
        global $GroupCatalogue;
        
        $sql = "SELECT DISTINCT A.MAKE, A.VEH_SERIES AS `SERIES`, A.MODEL, A.ENGINE, A.YR_FRM AS `YEARFROM`, A.YR_TO AS `YEARTO`, A.VEH_SEQ_ID, A.CABIN_AIR_FITMENT_LOCATION AS `CABIN_FILTER_LOC`, A.VEH_CAT ";
        $sql .= " FROM VEHICLE A LEFT JOIN VEHICLE_FILTER B ON B.MAKE=A.MAKE AND B.MODEL=A.MODEL AND B.VEH_SEQ_ID=A.VEH_SEQ_ID ";
        $sql .= " LEFT JOIN VEHICLE_BRAKEPAD C ON C.MAKE=A.MAKE AND C.MODEL=A.MODEL AND C.VEH_SEQ_ID=A.VEH_SEQ_ID ";
        $sql .= " LEFT JOIN VEHICLE_BRAKEDISC D ON D.MAKE=A.MAKE AND D.MODEL=A.MODEL AND D.VEH_SEQ_ID=A.VEH_SEQ_ID ";
        $sql .= " LEFT JOIN VEHICLE_INDYOIL E ON E.MAKE=A.MAKE AND E.MODEL=A.MODEL AND E.VEH_SEQ_ID=A.VEH_SEQ_ID  ";
    	//Remove any ndsstat = H out of result set.
    	$sql .= " INNER JOIN FILTER F ON ( B.FILT_NO = F.FILT_NO AND (F.NDS_STAT <> 'H' OR F.NDS_STAT IS NULL )) ";
    	$sql .= " WHERE A.COUNTRY_CDE LIKE '%s' AND B.CO_CDE = 200";

        $params[0] =  $country_code;
//$params[0] = '%' . $country_code . '%';
        if($prod_no != "") {
            $prod_no = "%" . $prod_no . "%";
            $sql .= " AND (B.FILT_NO LIKE '%s' OR  C.PART_NO LIKE '%s' OR  D.PART_NO LIKE '%s' OR REPLACE(REPLACE(REPLACE(REPLACE(OE_OIL_FILT,'.',''),'-',''),'/',''),'','') LIKE  REPLACE(REPLACE(REPLACE(REPLACE('%s','.',''),'-',''),'/',''),'','') OR A.OE_AIR_FILT LIKE '%s' OR A.OE_FUEL_FILT LIKE '%s' OR A.OE_CABIN_AIR LIKE '%s' OR A.OE_OTHER_FILT LIKE '%s' OR A.FRONT_PAD_OENUMBER LIKE '%s' OR A.REAR_PAD_OENUMBER LIKE '%s' OR E.PRODUCT_NAME LIKE '%s') "; 
            $i = count($params) + 10;
            for($x = 1; $x <= $i; $x++){
                $params[$x] = $prod_no;    
            }
            //write_log(json_encode($params));
        }
            
        if($veh_cat != ""){
            if($veh_cat == "BUSES AND TRUCKS") {
                $sql .= " AND A.VEH_CAT IN (%s, %s) ";
                $i = count($params);
                $params[$i] = $veh_cat;
                $params[$i+1] = "HEAVY DUTY";
            } else {
                $sql .= " AND A.VEH_CAT = '%s' ";
                $i = count($params);
                $params[$i] = $veh_cat;
            }
        }

        if($veh_make != ""){
            $sql .= " AND A.MAKE = '%s' ";
            $i = count($params);
            $params[$i] = $veh_make;
        }

        if($veh_series != ""){
        $sql .= " AND A.VEH_SERIES = '%s' ";
            $i = count($params);
            $params[$i] = $veh_series;
        }

        $sql .= " ORDER BY A.MAKE ASC, A.VEH_SERIES ASC,A.MODEL ASC,A.ENGINE ASC, A.YR_FRM ASC, A.YR_TO ASC" ;   

        write_log("Query: " . $sql);
        $qry = $GroupCatalogue->prepare($sql, $params);
  write_log($qry);   
  write_log(json_encode($params));
        $rows = $GroupCatalogue->get_results($qry, ARRAY_A);

        return $rows;
    }

    function build_main_query($veh_model, $veh_series, $veh_make, $veh_cat, $prod_no, $veh_seq_id, $country_code, $prod_type = array()) {
        global $wpdb;

        $query = "SELECT  * FROM `PLUGIN_VEHICLE_PART_LISTING` ";

        $params = array();

        if(!null_or_empty($veh_cat)){
            $params['CATEGORY'] = $veh_cat;
        }

        if(!null_or_empty($veh_make)){
            $params['MAKE'] = $veh_make;
        }

        if(!null_or_empty($veh_series) && $veh_series != 'Please Select'){
            $params['SERIES'] = $veh_series;
        }

        if(!null_or_empty($veh_model)){
            $params['MODEL'] = $veh_model;
        }

        if(!null_or_empty($veh_seq_id)){
            $params['VEH_SEQ_ID'] = $veh_seq_id;
        }

        if(!null_or_empty($country_code)){
            $params['COUNTRY_CODE'] = '%' . $country_code . '%';
        }

        if(isset($prod_no)){
            //$prod = api_get_part_type($prod_no);

            //write_log(json_encode($prod_type));

            if(isset($prod_type[0])){ 
                $prod_type = $prod_type[0];

                if(count($prod_type) > 0) {
                    switch ($prod_type['TYPE']) {
                        case 'AIR': {
                            if($prod_type['DESC'] == "CABIN AIR") {
                                $params['FRAM_CABIN_FILTER'] = $prod_no;
                            } else {
                                $params['FRAM_AIR_FILTER'] = $prod_no;
                            }
                            break;
                        }
                        case 'PETROL' :
                        case 'DIESEL' : {
                            $params['FRAM_FUEL_FILTER'] = $prod_no;
                            break;
                        }
                        case 'OIL' : {
                            $params['FRAM_OIL_FILTER'] = $prod_no;
                            break;
                        }
                        case 'HOUSING' : 
                        case 'HEAD' : 
                        case 'KIT' : 
                        case 'COOLANT' : {
                            $params['FRAM_OTHER_FILTER'] = $prod_no;
                        }
                        case 'BRAKEDISC' : {
                            if($prod_type['DESC'] == "FRONT") {
                                $params['FRONT_BRAKE_DISC'] = $prod_no;
                            } else {
                                $params['REAR_BRAKE_DISC'] = $prod_no;
                            }
                            break;
                        }
                        case 'BRAKEPAD' : {
                            if($prod_type['DESC'] == "FRONT") {
                                $params['FRONT_BRAKE_PAD'] = $prod_no;
                            } else {
                                $params['REAR_BRAKE_PAD'] = $prod_no;
                            }
                            break;
                        }
                        case 'INDYOIL' : {
                            $params['INDY_OIL'] = $prod_no;
                            break;
                        }                
                        default:
                            # code...
                            break;
                    }
                }
            }
        }

        return build_where_clause($params, $query);
    }

    function build_where_clause($parameters, $sql) {
        $query = array(
            'sql'   => $sql
        ); 

        if(count($parameters) == 0) {
            return $query;
        } else {
            $i = 0;
            $query['sql'] .= " WHERE ";
            foreach ($parameters as $key => $value) {
                $query['sql'] .= $i > 0 ?  "AND " : "";
                $query['sql'] .= "`" . $key . "` LIKE %s ";
                $query['values'][$i] = '%'.$value.'%';
                $i++;
            }
        }

        //write_log(json_encode($query));

        return $query;
    }

    function api_product_no_search($make, $model, $veh_seq_id) {
        global $wpdb;
        $sql = $wpdb->prepare("SELECT * FROM `PLUGIN_VEHICLE_PART_LISTING` WHERE MAKE LIKE %s AND MODEL LIKE %s AND VEH_SEQ_ID = %d", $make, $model, $veh_seq_id);
        //write_log($sql);
        $result = $wpdb->get_results($sql, ARRAY_A);

        return $result;
    }

    function add_oem_where_clause($query, $prod_no) {
        $values_count = count($query['values']);

        $prefix = "";
        if($values_count == 0)
            $prefix = " WHERE ";
        else 
            $prefix = " AND ";

        $query['sql'] .= $prefix . " REPLACE(REPLACE(REPLACE(REPLACE(OE_OIL_FILT,'.',''),'-',''),'/',''),'','') LIKE REPLACE(REPLACE(REPLACE(REPLACE('%s','.',''),'-',''),'/',''),'','') 
            OR OE_AIR_FILT LIKE '%s' 
            OR OE_FUEL_FILT LIKE '%s' 
            OR OE_CABIN_AIR LIKE '%s' 
            OR OE_OTHER_FILT LIKE '%s' 
            OR FRONT_PAD_OENUMBER LIKE '%s' 
            OR REAR_PAD_OENUMBER LIKE '%s' 
            OR FRONT_DISC_OENUMBER LIKE '%s' 
            OR REAR_DISC_OENUMBER LIKE '%s'";
        

        for($i = 0; $i < 9; $i++){
            $query['values'][$values_count + $i] = $prod_no;
        }

        return $query;
    }

    function api_get_part_type($prod_no) {
        global $wpdb;
        $sql = $wpdb->prepare("SELECT * FROM `v_part_types` WHERE `PART_NO` LIKE %s", '%'.$prod_no.'%');
        //write_log($sql);
        $result = $wpdb->get_results($sql, ARRAY_A);

        return $result;
    }

    function null_or_empty($input_string) {
        if(!isset($input_string)) {
            return true;
        } else {
            if(empty($input_string) || $input_string == ' ') {
                return true;
            }

            return false;
        }
    }

    function api_get_image_path($part_no, $part_type){
        $fs_part_no = $part_no;
        $part_no = rawurlencode($part_no);
        //write_log($part_no, $part_type);
        $fs_path = plugin_dir_path(__FILE__) . '../assets/product-images/' . strtolower($fs_part_no) . '.jpg';
        $path = esc_url( plugins_url( '/fram-parts-search/assets/product-images/' ) ).strtolower($part_no).'.jpg';

        if(file_exists($fs_path))
        {
            return $path;
        }
        else
        {
            write_log("Error in 'api_get_image_path': Path:'" . $path . "' does not exist! Type: '" . $part_type . "'");
            switch (strtolower($part_type)) {
                case strtolower('AIR'):
                case strtolower('CABIN AIR'):
                    $path = api_get_air_filter_image($part_no);
                    break;
                case strtolower('indyoil'):                
                case strtolower('oil'):
                    $path = esc_url( plugins_url( '/fram-parts-search/assets/' ) ) . 'oil.png';
                    break;
                case strtolower('PETROL'):
                case strtolower('DIESEL'):
                    $path = esc_url( plugins_url( '/fram-parts-search/assets/' ) ) . 'fuel.png';
                    break;
                case strtolower('Brakepad'):
                    $path = esc_url( plugins_url( '/fram-parts-search/assets/' ) ) . 'brake-pad.png';
                    break;
                case strtolower('Brakedisc'):
                    $path = esc_url( plugins_url( '/fram-parts-search/assets/' ) ) . 'brake_disk-brake_pad.png';
                    break;
                default:
                    $path = esc_url( plugins_url( '/fram-parts-search/assets/' ) ) . 'noimage.png';
                    return;
            }
            return $path;
        }
    }

    function api_get_air_filter_image($filter_no){
        $type = api_get_filter_description($filter_no);
        $path = "";
        if ($type == 'CABIN AIR') {
            $path = esc_url( plugins_url( '/fram-parts-search/assets/' ) ) . 'cabin.png';
        } else {
            $path = esc_url( plugins_url( '/fram-parts-search/assets/' ) ) . 'air.png';
        }
    
    	write_log($path);
    
        return $path;
    }

    function randomString($length = 6) {
        $str = "";
        $characters = array_merge(range('A','Z'), range('a','z'), range('0','9'));
        $max = count($characters) - 1;
        for ($i = 0; $i < $length; $i++) {
            $rand = mt_rand(0, $max);
            $str .= $characters[$rand];
        }
        return $str;
    }

    function api_get_vehicle_data($make, $series, $cat, $part_no = "", $country_code = 1){
        $query = "SELECT `MODEL`, `ENGINE`, CONCAT(`YR_FRM`, ' - ',`YR_TO`) AS `YEAR`, `CABIN_AIR_FITMENT_LOCATION` AS `CABIN_FIT_LOC`, `VEH_SEQ_ID` FROM `VEHICLE` WHERE `MAKE` = %s AND `VEH_SERIES` = %s AND `COUNTRY_CDE` LIKE %s";
        global $GroupCatalogue;

        if($cat != "ALL VEHICLES"){
            $query .= " AND `VEH_CAT` = %s";
            $sql = $GroupCatalogue->prepare($query, $make, mysql_real_escape_string($series), '%' . $country_code . '%', $cat);
            $rows = $GroupCatalogue->get_results($sql, ARRAY_A);
            return $rows;   
        }
        else{
            $sql = $GroupCatalogue->prepare($query, $make, $series, '%' . $country_code . '%');
            $rows = $GroupCatalogue->get_results($sql, ARRAY_A);
            return $rows;
        }
write_log($query);
    }

    function api_get_part_category($part_no){
        global $wpdb;
        $sql = $wpdb->prepare("SELECT `PART_CAT`, `PART_TYPE` FROM `v_partnumbers` WHERE `PART_NO` = %s", $part_no);
        $rows = $wpdb->get_results($sql, ARRAY_N);

        return $rows;
    }

    function api_add_search_log($data){
        global $wpdb;
        $table = $wpdb->prefix.'parts_search_log';
        $wpdb->insert( $table, $data);
        return $wpdb->insert_id;
    }

    if (!function_exists('write_log')) {

        function write_log($log) {
            if (true === WP_DEBUG) {
                if (is_array($log) || is_object($log)) {
                    trigger_error(print_r($log, true));
                } else {
                    trigger_error($log);
                }
            }
        }
    }

    function UR_exists($url){
        $headers=get_headers($url);
        return stripos($headers[0],"200 OK")?true:false;
    }

    function is_oem_part($part_no){
        $prod_type = api_get_part_type($part_no);

        if(count($prod_type) == 0) {
            return true;
        }

        return false;
    }