<?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/WebServices.php');
include('../class/MotherCar.php');
include('../class/Bibliotecas.php');
include('../class/Static.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;


date_default_timezone_set('Europe/Madrid');
$date = date('Y-m-d H:i:s');

$Schema = new Schema($con);
$Bibliotecas = new Bibliotecas($con);
$ws = new WebServices($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'
];
$resultMAIN = $ws->curlPost($url, $dataMAIN, $headers);
$headers = [
    'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
    'client-id: ' . $client_id_api_p0,
    'p0-api-key: 876hbgyaa8356abc875x4712'
];
$app_cod_ext = $Bibliotecas->select_campo_tabla_parametros('BBDD_ALIAS', 'VALOR');

if(!empty($_POST['portal_publicar'])) {
    $random_string = strtoupper(str_split(str_shuffle($resultMAIN->servToken->client_token),3)[rand(0,10)]);
    $portal = Statics::SafeInput($con, $_POST['portal_publicar']);
    $car = $Schema->executeQuery('SELECT * FROM VEHICULOS WHERE CODIGO = ?', 'i', [$_SESSION['CODIGO_COCHE']])->fetch_array();
    $bastidor = !empty($car['BASTIDOR']) ? $car['BASTIDOR'] : '#' . $random_string . '# ';
    
    if($Bibliotecas->select_campo_tabla_parametros('BBDD_AUC', 'VALOR') == "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_venta_total'       =>      $car['VENTA_TOTAL'],
            'car_venta_base'        =>      $car['VENTA_BASE'],
            'car_venta_pff'         =>      $car['VENTA_PFF'],
            'car_venta_tipoiva'     =>      empty($car['VENTA_TIPOIVA']) ? 0 : Statics::getIvaValue($Schema, $car['VENTA_TIPOIVA']),
            'car_precio_compra'     =>      $car['COMPRA_TOTAL'],
            'car_compra_base'       =>      $car['COMPRA_BASE'],
            'car_compra_pff'        =>      $car['COMPRA_PFF'],
            '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;
            $key_portal = [];
            $sql_array = 'SELECT * FROM VEHICULOS_PORTALES';
            $res_array = $con->query($sql_array);
            while($row_array = $res_array->fetch_array()) {
                $key_portal[$row_array['ALIAS']] = [];
                array_push($key_portal[$row_array['ALIAS']], $row_array['CODIGO'], $row_array['DESCRIPCION']);
            }
            $Schema->executeQuery('INSERT INTO VEHICULOS_PUBLICACIONES(VEHICULO, PORTAL, INICIO, ACTIVO) VALUES(?, ?, ?, ?)', 'iisi', [$_SESSION['CODIGO_COCHE'], $key_portal[$portal][0], $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'        =>      $portal
        
            ];
            $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/" . $_SESSION['CODIGO_COCHE'] . '/';
                $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);

                $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, $_SESSION['CODIGO_COCHE'], $ESQUEMA, $GRUPOE_TIPO, $ETIQUETA, $ESQUEMA, $GRUPOE_PUBLICABLE, 1, 0]);
                if($res->num_rows) {


                    $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());
                    }
                    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());
                        }
                        $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 {
            
            $codigo_vehiculo = $_SESSION['CODIGO_COCHE'];
            $detalle .= $result[0]->message . ", ";
        } 
        
    } else {
        $headers = [
            'authorization-token: Bearer ' . $resultMAIN->servToken->client_token,
            'client-id: ' . $client_id_api_p0,
            'p0-api-key: 5396e8922cdccb1993i107s'
        ];
        $data = [
            'service'       =>      'servPostCarPortal',
            'key_car'       =>      $_SESSION['CODIGO_COCHE'],
            'portal'        =>      $portal
        ];
        $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/" . $_SESSION['CODIGO_COCHE'] . '/';
            $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);

            $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, $_SESSION['CODIGO_COCHE'], $ESQUEMA, $GRUPOE_TIPO, $ETIQUETA, $ESQUEMA, $GRUPOE_PUBLICABLE, 1, 0]);
            if($res->num_rows) {


                $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());
                }
                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 . '/' . $_SESSION['CODIGO_COCHE'] . '/' . 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());
                    }
                    $data = [
                        'service'           =>      'servPostCarBucket',
                        'key_car'           =>      $_SESSION['CODIGO_COCHE'],
                        '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';
        }
    }
    


} elseif(!empty($_POST['portal_quitar'])) {
    $portal = Statics::SafeInput($con, $_POST['portal_quitar']);
    $codigo_vehiculo = $_SESSION['CODIGO_COCHE'];

    $key_portal = [];
    $sql_array = 'SELECT * FROM VEHICULOS_PORTALES';
    $res_array = $con->query($sql_array);
    while($row_array = $res_array->fetch_array()) {
        $key_portal[$row_array['ALIAS']] = [];
        array_push($key_portal[$row_array['ALIAS']], $row_array['CODIGO'], $row_array['DESCRIPCION']);
    }

    if($Bibliotecas->select_campo_tabla_parametros('BBDD_AUC', 'VALOR') == "0" ) {
        $inicio = Statics::SafeInput($con, $_POST['inicio']);
        $Schema->executeQuery('UPDATE VEHICULOS_PUBLICACIONES SET ACTIVO = ?, FIN = ? WHERE INICIO = ? AND PORTAL = ? AND VEHICULO = ?', 'issii', [0, $date, $inicio, $key_portal[$portal][0], $codigo_vehiculo]);
        $unpublish = 'SECONDARY';
    } else {
        $unpublish = 'MAIN';
    }
    
    $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'        =>      $portal,
        'unpublish'     =>      $unpublish,
        'app_code_ext'  =>      $app_cod_ext
    ];

    $result = $ws->curlPost($url, $data, $headers);
    $portal_post = $key_portal[$portal][1];
    $detalle = $result->message;
    $_SESSION['MSG_INFO'] = 'PUBLICACION_QUITAR';
    
} else {
    $_SESSION['MSG_INFO'] = 'ERROR';
}
Statics::add_trace_history($con, $usuarioSession, $_SESSION['CODIGO_COCHE'], 14, $portal_post . ": " . $detalle);
header("Location:../multipublicacion-ficha.php");




?>