<?php
///////////////////////////////////////////////////////////////////////////////
define('STOCK', 'UNIONE');
define('TIPO_LINK_IMG', '1');
define('TIPO_LINK_VID', '2');
define('COD_CONTADOR', 'IDCAR0000000000000');
define('CORRECERIA_DEF', '0');//SIN ASIGNAR
define('USUARIO_DEF', 'API-ESMDD_dev');
define('COD_CAR_ACTIVO', '1');
define('COD_EXT_CLIENTE', 'UNIONE');
define('ACC_CREAR_HISTORIAL', '1');
define('ACC_UPDATE_HISTORIAL', '2');
define('ACC_CREAR_HISTORIAL_DTLLE', 'Vehículo Creado Externo');
define('ACC_UPDATE_HISTORIAL_DTLLE', 'Vehículo Actualizado Externo');
define('ORDENADOR_EXT', 'ORD_EXTERNO');
define('CODIGO_WEB', '1');
define('STOCK', 'UNIONE');
define('ESTADO', 'STK');
define('COD_PORTAL', '1');
define('COD_XML', '0');
define('COD_DIST_AMB', 'DIS_AMB');
define('COD_TIPO_COLOR', 'COL_PRI');
define('PATH_XML_STOXKS', '../../../../integrations/unione/');
$concecionarios = array();
$data = array();
///////////////////////////////////////////////////////////////////////////////
include("../../../assets/conn/conexion.php"); 
$bd_conn = new connexion($host_avanws,$user_avanws,$pass_avanws,$name_avanws,$port_avanws);
$bd_conn->query("SET NAMES 'utf8'");
date_default_timezone_set('Europe/Madrid');
include("funcUpdateCarUnione.php");
//CARGO LOS XML DEL DIRECTORIO DE IMPORTACION /////////////////////////////////
$dir = opendir(PATH_XML_STOXKS);
while ($elemento = readdir($dir)){
    if( $elemento != "." && $elemento != ".."){
        array_push($concecionarios, $elemento);
    }
}
//STOCK========================================================================
$codigo_stock = verificaCodigoStockCar($bd_conn, STOCK);
//INACTIVO LOS COCHES DEL STOCK
updateStock($bd_conn, $codigo_stock, STOCK);
//RECORRO CADA XML Y LEO SU CONTENIDO /////////////////////////////////////////
foreach ($concecionarios as $key => $value) {
    $reader = new XMLReader();
    $doc = new DOMDocument;
    if (!$reader->open( PATH_XML_STOXKS . $value)) {
        die("Failed to open 'user-data.xml'");
    }
    while($reader->read()) {
        if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'Vehiculo') {
            $node = simplexml_import_dom($doc->importNode($reader->expand(), true));
            //$bastidor = (isset($node->vin)) ? trim($node->vin) : NULL;//FALTA
            $matricula = (isset($node->Matricula)) ? trim($node->Matricula) : NULL;//TEMPORAL
            $ownersvehicle_id = (isset($node->ownersvehicle_id)) ? trim($node->ownersvehicle_id) : NULL;//FALTA
            //MARCA=================================================================
            $marca = (isset($node->Marca)) ? trim($node->Marca) : NULL;
            $codigo_marca = verificaCodigoMarca($bd_conn, $marca);
            $codigo_marca = ($codigo_marca !== NULL) ? $codigo_marca : 0;
             //MODELO================================================================
             $modelo = (isset($node->Modelo)) ? trim($node->Modelo) : NULL;
             $first_word = strstr($modelo, " ", true);
             if (strcasecmp($first_word, 'NEW') == 0 OR strcasecmp($first_word, 'nuevo') == 0 OR strcasecmp($first_word, $marca) == 0) {
                 $modelo = preg_replace('/'.$first_word.' /', '', $modelo, 1);
                 $codigo_modelo = verificaCodigoModelo($bd_conn, trim($modelo));
             }else {
                 $codigo_modelo = verificaCodigoModelo($bd_conn, trim($modelo));
             }
            //DIST AMB==============================================================
            $codigo_dist_amb = (isset($node->emission->sticker)) ? verificaCodigoDistAmb($bd_conn, COD_DIST_AMB, trim($node->emission->sticker)) : 1 ;//FALTA
            $version = (isset($node->Version)) ? trim($node->Version) : NULL;
            $tipo = (isset($node->category)) ? trim($node->category) : 'Seminuevo';
            $tipo = ($tipo == 'Seminuevo') ? 'VO' : 'VN';
            $desc_color = (isset($node->ColorExterior)) ?  trim($node->ColorExterior) : 0;
            //BUSCO CODIGO DEL COLOR
            $color = verificaCodigoColor($bd_conn, $desc_color, COD_TIPO_COLOR);
            $color_lit = (isset($node->ColorExterior)) ? trim($node->ColorExterior) : NULL;
            $notas = (isset($node->Descripcion)) ? trim($node->Descripcion) : NULL;
            $combustible = (isset($node->Combustible)) ? trim($node->Combustible) : 0;
            $codigo_combustible = verificaCodigoCombustible($bd_conn, $combustible);
            $codigo_combustible = ($codigo_combustible === NULL ) ? 0 : $codigo_combustible;
            $km = (isset($node->Kilometraje)) ? trim($node->Kilometraje) : 0;
            $caja_cambios = (isset($node->CajaCambios)) ? trim($node->CajaCambios) : 0;
            $codigo_caja_cambios = verificaCodigoCaja($bd_conn, $caja_cambios);
            $fecha_matriculacion = (isset($node->PrimeraMatriculacion)) ? trim($node->PrimeraMatriculacion) : NULL;
            $fecha_matriculacion = str_replace('/', '-', $fecha_matriculacion);
            $fecha_matriculacion = date('Y-m-d', strtotime($fecha_matriculacion));
            $year_fab = substr($fecha_matriculacion, 0, 4);
            $garantia = (isset($node->DuracionGarantia)) ? trim($node->DuracionGarantia) : 0;
            $garantia = trim(str_replace('meses', '', $garantia));
            $precio_venta = (isset($node->PrecioFinal)) ? trim($node->PrecioFinal) : 0;
            $velocidades = (isset($node->NumeroMarchas)) ? trim($node->NumeroMarchas) : NULL;
            $motor = (isset($node->CilindradaCCM)) ? trim($node->CilindradaCCM) : NULL;
            if ($matricula !== NULL) {
                $bastidor_exist = verificaMatricula($bd_conn, $matricula);
                if ($bastidor_exist == 1) {
                    $datos_car = consultoDatosCar($bd_conn, $matricula);
                    $id_car = $datos_car["IDCAR"];
                    $codigo_car = $datos_car["CODIGO"];
                    $mostrar = $id_car . " - " . $marca . " - " . $modelo . " - " . $matricula;
                    $status_acc = updateCar($bd_conn, $bastidor, $version, $matricula, $color, $notas, $km, $fecha_matriculacion, $year_fab, $garantia, $precio_venta, $mostrar);
                    deleteLink($bd_conn, $codigo_car, COD_EXT_CLIENTE);
                    for ($x=0; $x < count($node->Fotos); $x++) { 
                        $replace = array('<![CDATA[', ']]>', ' ');
                        $string = str_replace($replace, '', $node->Fotos);
                        $array_fotos = explode(',', $string);
                        $posicion = 0;
                        foreach ($array_fotos as &$valor) {
                            $codigo_image = get_id_unico();
                            $tipo_link = TIPO_LINK_IMG;
                            $link_image = $valor;
                            $posicion ++;
                            $status_link_img = createLink($bd_conn, $codigo_image, $posicion, $next_car_code, $tipo_link, $link_image, COD_EXT_CLIENTE);
                        }
                    }
                    createHistorial($bd_conn, $codigo_car, USUARIO_DEF, ACC_UPDATE_HISTORIAL, ACC_UPDATE_HISTORIAL_DTLLE, ORDENADOR_EXT, CODIGO_WEB);
                    //RESPONSE
                    $data[$id_car] = array ( 
                        "status" => "car Updated",
                        "external_id" => trim($ownersvehicle_id),
                        "num_img" => $x
                    );
                }elseif ($bastidor_exist == 0) {
                    //BUSCO EL CODIGO DEL CAR======================================
                    $next_car_code = verificaNextCodigoCar($bd_conn);
                    //BUSCO EL CONTADOR============================================
                    $datos_contador = verificaDatosContador($bd_conn, COD_CONTADOR);
                    $masc_cont = str_pad($datos_contador["CONTADORSIG"], strlen($datos_contador["MASCARA"]), '0', STR_PAD_LEFT);
                    $id_car = $datos_contador["PREFIJO"] . $masc_cont . $datos_contador["SUFIJO"];
                    $prox_cont = $datos_contador["CONTADORSIG"] + 1;
                    $status_update_cont = updateContador($bd_conn, $prox_cont, COD_CONTADOR);
                    $mostrar = $id_car . " - " . $marca . " - " . $modelo . " - " . $matricula;
                    $cod_carroceria = CORRECERIA_DEF;
                    $status_crea_car = createCar($bd_conn, $next_car_code, USUARIO_DEF, $tipo, $id_car, $codigo_marca, $codigo_modelo, $version, $mostrar, $matricula, $bastidor, $color, COD_CAR_ACTIVO, $notas, $codigo_combustible, $km, $codigo_caja_cambios, $fecha_matriculacion, $year_fab, $garantia, $precio_venta, $velocidades, $color_lit, COD_EXT_CLIENTE, $ownersvehicle_id, $codigo_stock, ESTADO, $codigo_dist_amb, $motor);
                    for ($x=0; $x < count($node->Fotos); $x++) { 
                        $replace = array('<![CDATA[', ']]>');
                        $string = str_replace($replace, '', $node->Fotos);
                        $replace = array(' ');
                        $string = str_replace($replace, '%', $string);
                        $array_fotos = explode(',', $string);
                        $posicion = 0;
                        foreach ($array_fotos as &$valor) {
                            $codigo_image = get_id_unico();
                            $tipo_link = TIPO_LINK_IMG;
                            $link_image = $valor;
                            $posicion ++;
                            $status_link_img = createLink($bd_conn, $codigo_image, $posicion, $next_car_code, $tipo_link, $link_image, COD_EXT_CLIENTE);
                        }
                    }
                    //EQUIPAMIENTO
                    $categoria = '0';
                    $climatizador = ($node->Climatizador == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Clinmatizador', $categoria) : '';
                    $TapiceriaCuero = ($node->TapiceriaCuero == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Tapiceria de Cuero', $categoria) : '';
                    $Elevalunas = ($node->Elevalunas == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Eleva Lunas', $categoria) : '';
                    $Navegador = ($node->Navegador == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Navegador', $categoria) : '';
                    $AsientosElectronicos = ($node->AsientosElectronicos == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Asientos Eléctricos', $categoria) : '';
                    $TechoCorredizo = ($node->TechoCorredizo == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Techo Corredizo', $categoria) : '';
                    $CalefaccionAsientos = ($node->CalefaccionAsientos == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Calefacción Asientos', $categoria) : '';
                    $RadioCD = ($node->RadioCD == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Radio CD', $categoria) : '';
                    $ABS = ($node->ABS == 1) ? createEquipamiento($bd_conn, $next_car_code, 'ABS', $categoria) : '';
                    $Airbag = ($node->Airbag == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Airbag', $categoria) : '';
                    $AirbagAcompanante = ($node->AirbagAcompanante == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Airbag Acompañante', $categoria) : '';
                    $AirbagLaterales = ($node->AirbagLaterales == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Airbag Laterales', $categoria) : '';
                    $Xenon = ($node->Xenon == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Xenons', $categoria) : '';
                    $CierreCentralizado = ($node->CierreCentralizado == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Cierre Centralizado', $categoria) : '';
                    $Alarma = ($node->Alarma == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Alarma', $categoria) : '';
                    $InmovilizadorMotor = ($node->InmovilizadorMotor == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Inmobilizador Motor', $categoria) : '';
                    $ControlTraccion = ($node->ControlTraccion == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Control Tracción', $categoria) : '';
                    $TraccionCuatroRuedas = ($node->TraccionCuatroRuedas == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Tracción en las 4 Ruedas', $categoria) : '';
                    $Tuning = ($node->Tuning == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Tuning', $categoria) : '';
                    $LlantasAluminio = ($node->LlantasAluminio == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Llantas Aluminio', $categoria) : '';
                    $Baca = ($node->Baca == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Baca', $categoria) : '';
                    $OrdenadorABordo = ($node->OrdenadorABordo == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Ordenador a Bordo', $categoria) : '';
                    $AsistenciaElectronicaAparcamiento = ($node->AsistenciaElectronicaAparcamiento == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Asistencia Eléctronica de Aparcamiento', $categoria) : '';
                    $FarosAntiniebla = ($node->FarosAntiniebla == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Faros Anti-Niebla', $categoria) : '';
                    $DireccionAsistida = ($node->DireccionAsistida == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Dirección Asistida', $categoria) : '';
                    $Radio = ($node->Radio == 1) ? createEquipamiento($bd_conn, $next_car_code, 'Radio', $categoria) : '';
                    createHistorial($bd_conn, $next_car_code, USUARIO_DEF, ACC_CREAR_HISTORIAL, ACC_CREAR_HISTORIAL_DTLLE, ORDENADOR_EXT, CODIGO_WEB);
                    //PUBLICO
                    createPublicacion($bd_conn, $next_car_code, COD_PORTAL, COD_CAR_ACTIVO, COD_XML);
                    //RESPONSE
                    $data[$id_car] = array ( 
                        "status" => "car Created",
                        "external_id" => trim($ownersvehicle_id),
                        "num_img" => $posicion
                    );
                }
            }  
               
        }
    }
}
//DESPUBLICO LOS COCHES RESTANTES =============================================================================
updatePublicacion($bd_conn, $codigo_stock);
//REGRESO LA RESPUESTA=======================================================
$reader->close();
header("Content-type: application/json; charset=utf-8");
echo json_encode($data);
?>