<?php
session_start();
$usuarioSession = $_SESSION['USUARIO'];
$grupo = $_SESSION['GRUPO'];
$contacto = $_SESSION['CONTACTO'];
$awa_session_id = $_SESSION['AWA_SESION_ID'];
include('../includes/conex.php');
include('../includes/eat.php');
include('../includes/historial.php');
include('../includes/functions.php');
include('../includes/esquemas.php');
include('../class/Schema.php');
include('../class/MotherCar.php');
include('../class/Expediente.php');
include('../class/Bibliotecas.php');
include('../class/Static.php');
include('../class/WebServices.php');
include('../lg/config_vo.php');
if(!isset($usuarioSession) OR $awa_session_id != $awa_id) {
    eatCookies();
    header('Location:../index.php');
}
if(isset($_COOKIE['usuario']) AND $_COOKIE['usuario'] != $staticUsu ) {
    eatCookies();
    header('Loction:../index.php');
}
if (isset($_COOKIE['idioma'])) {
    include('../lg/LG_' . $_COOKIE['idioma'] . '.php');
} else {
    include('../lg/LG_SP.php');
}
include_once("../assets/aws/aws-autoloader.php"); 
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$port = Statics::SafeInput($con, $_POST['p']);

if(!empty($_POST['codigos'])) {
    
    date_default_timezone_set('Europe/Madrid');
    $date = date('Y-m-d H:i:s');

    $bucketName = 'dealerbest.adoptauncoche.images';
    $IAM_KEY = 'AKIAUMTBLDLCFVNVNTOR';
    $IAM_SECRET = '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';
    try {
        $s3 = S3Client::factory(
            array(
                'credentials'   => array(
                    'key'       =>  $IAM_KEY,
                    'secret'    =>  $IAM_SECRET
                ),
                'version' => 'latest',
                'region'  => 'eu-west-3'
            )
        );
    } catch (Exception $e) {
        die("Error: " . $e->getMessage());
    }

    $Schema = new Schema($con);
    $ws = new WebServices($con);
    $Bibliotecas = new Bibliotecas($con);
    $url = $url_api_p0;
    $detalle = '';
    $headers = [];
    $dataMAIN = [
        'grant_type'        =>      'client_credentials',
        'client_secret'     =>      $client_secret_api_p0,
        'client_id'         =>      $client_id_api_p0,
        'service'           =>      'servToken',
        'code'              =>      '8356e8922cdccb82gh538fu2'
    ];
    $app_cod_ext = $Bibliotecas->select_campo_tabla_parametros('BBDD_ALIAS', 'VALOR');
    $aucDDBB = $Bibliotecas->select_campo_tabla_parametros('BBDD_AUC', 'VALOR');

    $ESQUEMA = $Schema->select_esquema_o_esquema_estructura(TRUE); 
    $GRUPO = $Schema->select_esquema_o_esquema_estructura(); 
    $GRUPOE_TIPO = $Schema->select_esquema_estructura_valores('TIPO', $ESQUEMA);
    $LISTA = $Schema->select_esquema_estructura_valores('TIPO', $ESQUEMA, 'LISTA');
    $sql_codigo_etiqueta = "SELECT CODIGO FROM ETIQUETAS WHERE GRUPO = $LISTA AND DESCRIPCION = 'FOTO'";
    $res_codigo_etiqueta = $con->query($sql_codigo_etiqueta);
    $row_codigo_etiqueta = $res_codigo_etiqueta->fetch_array(); 
    $ETIQUETA = $row_codigo_etiqueta['CODIGO'];
    $GRUPOE_PUBLICABLE = $Schema->select_esquema_estructura_valores('PUBLICABLE', $ESQUEMA);

    $portal = $Schema->executeQuery('SELECT * FROM VEHICULOS_PORTALES WHERE CODIGO = ?', 'i', [$port])->fetch_array();
    $p = $portal['ALIAS'];

    $resultMAIN = $ws->curlPost($url, $dataMAIN, $headers);
    $headers = [
        'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
        'client-id: ' . $client_id_api_p0,
        'p0-api-key: 876hbgyaa8356abc875x4712'
    ];


    foreach($_POST['codigos'] as $c) {
        $c = Statics::SafeInput($con, $c);

        $res_1 = $Schema->executeQuery('SELECT VEHICULO FROM VEHICULOS_PUBLICACIONES WHERE ACTIVO = ? AND PORTAL = ? AND VEHICULO = ?', 'iii', [1, $p, $c]);
        if($res_1->num_rows == 0) {
            $random_string = strtoupper(str_split(str_shuffle($resultMAIN->servToken->client_token),3)[rand(0,10)]);
            $car = $Schema->executeQuery('SELECT * FROM VEHICULOS WHERE CODIGO = ?', 'i', [$c])->fetch_array();
            $bastidor = !empty($car['BASTIDOR']) ? $car['BASTIDOR'] : '#' . $random_string . '# ';

            if($aucDDBB == "0" ) {
                $data = [
                    'service'               =>      'servUpdateCarPost',
                    'car_tipo'              =>      'VO',
                    'car_bastidor'          =>      $bastidor,
                    'car_id_ext'            =>      $_SESSION['CODIGO_COCHE'],
                    'app_cod_ext'           =>      $app_cod_ext,
                    'car_marca'             =>      $car['MARCA'],
                    'car_modelo'            =>      $car['MODELO'],
                    'car_version'           =>      $car['VERSION'],
                    'car_gama'              =>      $car['GAMA'],
                    'car_matricula'         =>      $car['MATRICULA'],
                    'car_color'             =>      $car['COLORPRI_LIT'],
                    'car_notas'             =>      $car['NOTAS'],
                    'car_km'                =>      empty($car['KM']) ? 0 : $car['KM'],
                    'car_year'              =>      $car['ANO_FAB'],
                    'car_precio_venta'      =>      $car['VENTA_TOTALSINDTO'],
                    'car_venta_base'        =>      $car['VENTA_BASE'],
                    'car_venta_tipoiva'     =>      empty($car['COMPRA_TIPOIVA']) ? 0 : Statics::getIvaValue($Schema, $car['VENTA_TIPOIVA']),
                    'car_precio_compra'     =>      $car['COMPRA_TOTAL'],
                    'car_compra_base'       =>      $car['COMPRA_BASE'],
                    'car_compra_tipoiva'    =>      empty($car['COMPRA_TIPOIVA']) ? 0 : Statics::getIvaValue($Schema, $car['COMPRA_TIPOIVA']),
                    'car_estado'            =>      'STK'
                ];
                $result = $ws->curlPost($url, $data, $headers);

                if(!empty($result[0]->cod_vehiculo)) {
                    $codigo_vehiculo = $result[0]->cod_vehiculo;
                    
                    $Schema->executeQuery('INSERT INTO VEHICULOS_PUBLICACIONES(VEHICULO, PORTAL, INICIO, ACTIVO) VALUES(?, ?, ?, ?)', 'iisi', [$c, $portal['CODIGO'], $date, 1]);
                    $detalle .= $result[0]->message . ", ";
                    
                    $headers = [
                        'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
                        'client-id: ' . $client_id_api_p0,
                        'p0-api-key: 5396e8922cdccb1993i107s'
                    ];
                    $data = [
                        'service'       =>      'servPostCarPortal',
                        'key_car'       =>      $codigo_vehiculo,
                        'portal'        =>      $p
                
                    ];
                    $result = $ws->curlPost($url, $data, $headers);
                    $portal_post = $result->portal;

                    if($result->status == 'Successful') {
                        $detalle .= $result->message . ", ";
                        $headers = [
                            'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
                            'client-id: ' . $client_id_api_p0,
                            'p0-api-key: 4d3s21p22571rO45p75372h3h4'
                        ];

                        $TMP_FILE = "../tmp_img/" . $c . '/';
                        $sql = "SELECT E.CLAVE, E.NOMBRE, E.SUFIJO, E.PARTES, E.POS
                        FROM BIBLIOTECA_ELEMENTOS E INNER JOIN BIBLIOTECA_ETIQUETAS T1 ON E.CLAVE = T1.CLAVE
                        INNER JOIN BIBLIOTECA_ETIQUETAS T2 ON E.CLAVE = T2.CLAVE
                        INNER JOIN BIBLIOTECA_ETIQUETAS T3 ON E.CLAVE = T3.CLAVE
                        WHERE T1.ESQUEMA = ? AND T1.GRUPOE = ? AND T1.ETIQUETA = ?
                        AND T2.ESQUEMA = ? AND T2.GRUPOE = ? AND T2.ETIQUETA = ?
                        AND T3.ESQUEMA = ? AND T3.GRUPOE = ? AND T3.ETIQUETA = ?
                        AND E.PAPELERA = ?
                        AND E.CLAVE NOT IN (SELECT DOCUMENTO FROM VEHICULOS_TASACIONES_DOCS) ORDER BY E.POS ASC";
                        $res = $Schema->executeQuery($sql, 'iiiiiiiiii', [$ESQUEMA, $GRUPO, $c, $ESQUEMA, $GRUPOE_TIPO, $ETIQUETA, $ESQUEMA, $GRUPOE_PUBLICABLE, 1, 0]);
                        if($res->num_rows) {
                            
                            if(!file_exists($TMP_FILE)) {
                                mkdir($TMP_FILE, 0755, true);
                            }

                            while($row = $res->fetch_array()) { 
                                $name = $row['POS'] == 1 ? '00MAIN00_' . $row['NOMBRE'] : $row['NOMBRE'];
                                $ruta_y_nombre = $TMP_FILE . $name;
                                $Schema->create_file($ruta_y_nombre, $row['PARTES'], $row['SUFIJO'], $row['CLAVE']);
                                $pathInS3 = $aws_enviorment_api_p0 . '/' . $codigo_vehiculo . '/' . basename($ruta_y_nombre);
        
                                try {
                                    $s3->putObject(
                                        array(
                                            'Bucket'        =>      $bucketName,
                                            'Key'           =>      $pathInS3,
                                            'SourceFile'    =>      $ruta_y_nombre,
                                            'StorageClass'  =>      'REDUCED_REDUNDANCY',
                                            'ACL'           =>      'public-read'
                                        )
                                    );
                                } catch (S3Exception $e) {
                                    die('Error:' . $e->getMessage());
                                } catch (Exception $e) {
                                    die('Error:' . $e->getMessage());
                                }
                                $headers = [
                                    'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
                                    'client-id: ' . $client_id_api_p0,
                                    'p0-api-key: 4d3s21p22571rO45p75372h3h4'
                                ];
                                $data = [
                                    'service'           =>      'servPostCarBucket',
                                    'key_car'           =>      $codigo_vehiculo,
                                    'file_name'         =>      basename($ruta_y_nombre),
                                    'position'          =>      $row['POS'],
                                    'id_origin'         =>      $app_cod_ext
                                ];
                                $result = $ws->curlPost($url, $data, $headers);
                            }
                            gc_collect_cycles();
                            Statics::delete_files($TMP_FILE);
        
        
                            $detalle .= $result->message;
                            $_SESSION['MSG_INFO'] = 'PUBLICACION';
                            
                        } else {
                            $detalle .= 'ERROR IMG';
                            $_SESSION['MSG_INFO'] = 'ERROR_IMG';
                        }
                    }
                } else {
                    $detalle .= $result->message;
                    $_SESSION['MSG_INFO'] = 'VEHICULO_PORTAL_EXISTENTE';
                }
            
            } else {
                $headers = [
                    'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
                    'client-id: ' . $client_id_api_p0,
                    'p0-api-key: 5396e8922cdccb1993i107s'
                ];
                $data = [
                    'service'       =>      'servPostCarPortal',
                    'key_car'       =>      $c,
                    'portal'        =>      $p
            
                ];
                $result = $ws->curlPost($url, $data, $headers);
                $portal_post = $result->portal;
                
                if($result->status == 'Successful') {
                    $TMP_FILE = "../tmp_img/" . $c . '/';
                    $sql = "SELECT E.CLAVE, E.NOMBRE, E.SUFIJO, E.PARTES, E.POS
                    FROM BIBLIOTECA_ELEMENTOS E INNER JOIN BIBLIOTECA_ETIQUETAS T1 ON E.CLAVE = T1.CLAVE
                    INNER JOIN BIBLIOTECA_ETIQUETAS T2 ON E.CLAVE = T2.CLAVE
                    INNER JOIN BIBLIOTECA_ETIQUETAS T3 ON E.CLAVE = T3.CLAVE
                    WHERE T1.ESQUEMA = ? AND T1.GRUPOE = ? AND T1.ETIQUETA = ?
                    AND T2.ESQUEMA = ? AND T2.GRUPOE = ? AND T2.ETIQUETA = ?
                    AND T3.ESQUEMA = ? AND T3.GRUPOE = ? AND T3.ETIQUETA = ?
                    AND E.PAPELERA = ?
                    AND E.CLAVE NOT IN (SELECT DOCUMENTO FROM VEHICULOS_TASACIONES_DOCS) ORDER BY E.POS ASC";
                    $res = $Schema->executeQuery($sql, 'iiiiiiiiii', [$ESQUEMA, $GRUPO, $c, $ESQUEMA, $GRUPOE_TIPO, $ETIQUETA, $ESQUEMA, $GRUPOE_PUBLICABLE, 1, 0]);
                    if($res->num_rows) {
                        if(!file_exists($TMP_FILE)) {
                            mkdir($TMP_FILE, 0755, true);
                        }
                        while($row = $res->fetch_array()) { 
                            $name = $row['POS'] == 1 ? '00MAIN00_' . $row['NOMBRE'] : $row['NOMBRE'];
                            $ruta_y_nombre = $TMP_FILE . $name;
                            $Schema->create_file($ruta_y_nombre, $row['PARTES'], $row['SUFIJO'], $row['CLAVE']);
                            $pathInS3 = $aws_enviorment_api_p0 . '/' . $c . '/' . basename($ruta_y_nombre);
    
                            try {
                                $s3->putObject(
                                    array(
                                        'Bucket'        =>      $bucketName,
                                        'Key'           =>      $pathInS3,
                                        'SourceFile'    =>      $ruta_y_nombre,
                                        'StorageClass'  =>      'REDUCED_REDUNDANCY',
                                        'ACL'           =>      'public-read'
                                    )
                                );
                            } catch (S3Exception $e) {
                                die('Error:' . $e->getMessage());
                            } catch (Exception $e) {
                                die('Error:' . $e->getMessage());
                            }
                            $headers = [
                                'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
                                'client-id: API-ESMDD_dev',
                                'p0-api-key: 4d3s21p22571rO45p75372h3h4'
                            ];
                            $data = [
                                'service'           =>      'servPostCarBucket',
                                'key_car'           =>      $c,
                                'file_name'         =>      basename($ruta_y_nombre),
                                'position'          =>      $row['POS'],
                                'id_origin'         =>      $app_cod_ext
                            ];
                            $result = $ws->curlPost($url, $data, $headers);
                        }
                        gc_collect_cycles();
                        Statics::delete_files($TMP_FILE);


                        $detalle .= $result->message;
                        $_SESSION['MSG_INFO'] = 'PUBLICACION';
                    } else {
                        $detalle .= 'ERROR IMG';
                        $_SESSION['MSG_INFO'] = 'ERROR_IMG';
                    }
                } else {
                    $detalle .= $result->message;
                    $_SESSION['MSG_INFO'] = 'VEHICULO_PORTAL_EXISTENTE';
                }
            }
        }
        
        $nombre_portal = $Schema->executeQuery('SELECT DESCRIPCION FROM VEHICULOS_PORTALES WHERE ALIAS = ?', 's', [$p])->fetch_array();
        Statics::add_trace_history($con, $usuarioSession, $c, 14, $prepublicacion_lg . ": " . $nombre_portal['DESCRIPCION']);
    }
    $_SESSION['MSG_INFO'] = 'PUBLICACION';
} else {
    $_SESSION['MSG_INFO'] = 'ERROR';
}
echo 'ok';

?>



