<?php



function checkifimport($plaboratorio, $pmarca, $pcatname){
/**
 * 
***********************************************
*Funcion que llama al SP saber si la marca o el laboratario estan para insertar.
*************************************************
*/
    global $dbConn;
    // try {
    //     $consulta = 'call spfjchecklabymarca (?,?,?)';
    //     $sql = $dbConn->prepare($consulta);
    //     $sql->bindParam(1, $plaboratorio, PDO::PARAM_STR);
    //     $sql->bindParam(2, $pmarca, PDO::PARAM_STR);
    //     $sql->bindParam(3, $pcatname, PDO::PARAM_STR);
    //     if ($sql->execute()) {
    //         $resultado = $sql->fetch();
    //         return $resultado['Importar'];
    //     } else {
    //         $errorregistro['0'] = -5;
    //         return $errorregistro;
    //     }
    // } catch (PDOException $exception) {
    //     erroresPDO($exception);
    // }
    return true;
}

function checkcataliadas($pidcat){
    /**
     * 
    ***********************************************
    *Funcion que llama al SP para saber si la categoria del producto debe ser importada segun categorias de Aliadas.
    *Devuelve true si hay insertar o false en caso contrario
    *************************************************
    */
    global $dbConn;
    // try {
    //     $consulta = 'call spfjcheckcataliadas (?)';
    //     $sql = $dbConn->prepare($consulta);
    //     $sql->bindParam(1, $pidcat, PDO::PARAM_INT);
    //     if ($sql->execute()) {
    //         $resultado = $sql->fetch();
    //         return $resultado['Resultado'];
    //     } else {
    //         $errorregistro['0'] = -5;
    //         return $errorregistro;
    //     }
    // } catch (PDOException $exception) {
    //     erroresPDO($exception);
    // }
    return true;
}

function altamodfjmarcas($pid, $pbrand, $plogo, $pcode, $plaboratorio)
{
/**
 * 
***********************************************
*Funcion que llama al SP para el alta o modificacion de las marcas que devuelve la API 
*Lo hace sin importar si el producto se importara o no. es solo para tener todas las marcas de FJ
*************************************************
*/
    global $dbConn;
    try {
        $consulta = 'call spaltamodfjmarcas (?,?,?,?,?)';
        $sql = $dbConn->prepare($consulta);
        $sql->bindParam(1, $pid, PDO::PARAM_INT);
        $sql->bindParam(2, $pbrand, PDO::PARAM_STR);
        $sql->bindParam(3, $plogo, PDO::PARAM_STR);
        $sql->bindParam(4, $pcode, PDO::PARAM_STR);
        $sql->bindParam(5, $plaboratorio, PDO::PARAM_INT);
        if ($sql->execute()) {
            return $sql->fetch();
        } else {
            $errorregistro['0'] = -5;
            return $errorregistro;
        }
    } catch (PDOException $exception) {
        erroresPDO($exception);
    }
}


function altamodfjlaboratorios($manufacturer)
{
/**
 * 
***********************************************
*Funcion que llama al SP para el alta o modificacion de los laboratorios que devuelve la API. 
*Lo hace sin importar si el producto se importara o no. es solo para tener todas los laboratorios de FJ
*************************************************
*/
    global $dbConn;
    try {
        $consulta = 'call spaltamodfjlaboratorios (?)';
        $sql = $dbConn->prepare($consulta);
        $sql->bindParam(1, $manufacturer, PDO::PARAM_STR);
        if ($sql->execute()) {
            $resultado = $sql->fetch();
            return $resultado['Resultado'];
        } else {
            $errorregistro['0'] = -5;
            return $errorregistro;
        }
    } catch (PDOException $exception) {
        erroresPDO($exception);
    }
}

function altalanzamientos($ptitulo, $pcategorias, $pcodigo, $pbajada, $pdescripcion, $pvideo, $plink, $ptags, $pnotas_viejas, $pidentificador, $pestado, $pfecha){
/**
 * 
***********************************************
*Funcion que llama al SP para su alta o modificacion de lanzamientos
*limpia algunos campos. La decision de dar de alta o no ya esta dada en otras instancias. Aca solo da de alta el lanzamiento. 
*Entre los datos devueltos esta el valor del iden, que se usa despues para dar de alta las imagenes asociadas al lanzamiento. 
*************************************************
*/
    global $dbConn;
    $nada = 0;
    try {
        if ($pbajada == "") $pbajada = " " ;
        if ($pdescripcion == "") $pdescripcion = " ";
        if ($pvideo == "") $pvideo = " ";
        if ($plink == "") $plink = " ";
        if ($ptags == "") $ptags = " ";
        if ($pnotas_viejas == "") $pnotas_viejas = " ";
        if ($pdescripcion =="") $pdescripcion = " ";

        $consulta = 'call spfjaltalanzamientos (?,?,?,?,?,?,?,?,?,?,?,?)';
        $sql = $dbConn->prepare($consulta);
        $sql->bindParam(1, $ptitulo, PDO::PARAM_STR);
        $sql->bindParam(2, $pcategorias, PDO::PARAM_STR);
        $sql->bindParam(3, $pcodigo, PDO::PARAM_STR);
        $sql->bindParam(4, $pbajada, PDO::PARAM_STR);
        $sql->bindParam(5, $pdescripcion, PDO::PARAM_STR);
        $sql->bindParam(6, $pvideo, PDO::PARAM_STR);
        $sql->bindParam(7, $plink, PDO::PARAM_STR);
        $sql->bindParam(8, $ptags, PDO::PARAM_STR);
        $sql->bindParam(9, $pnotas_viejas, PDO::PARAM_STR);
        $sql->bindParam(10, $pidentificador, PDO::PARAM_STR);
        $sql->bindParam(11, $pestado, PDO::PARAM_STR);
        $sql->bindParam(12, $pfecha, PDO::PARAM_STR);


        if ($sql->execute()) {
            $resultado = $sql->fetch();
            return $resultado;
        } else {
            $errorregistro['0'] = -5;
            return $errorregistro;
        }
    } catch (PDOException $exception) {
        erroresPDO($exception);
    }
}

function insertarimagen($pnombrefoto, $pidentificador, $pnombrearchivofoto, $pposicion, $pfechaproceso, $porden){
/**
 * 
***********************************************
*Funcion que llama al SP para el alta de los registros de imagenes asociadas al lanzamientos.  
*************************************************
*/
    global $dbConn;
    try {
        $tipo = "";
        $orden = $porden;
        $consulta = 'call spfjinsertarimagen (?,?,?,?,?,?,?)';
        $sql = $dbConn->prepare($consulta);
        $sql->bindParam(1, $pnombrefoto, PDO::PARAM_STR);
        $sql->bindParam(2, $pidentificador, PDO::PARAM_STR);
        $sql->bindParam(3, $pnombrearchivofoto, PDO::PARAM_STR);
        $sql->bindParam(4, $pposicion, PDO::PARAM_STR);
        $sql->bindParam(5, $tipo, PDO::PARAM_STR);
        $sql->bindParam(6, $orden, PDO::PARAM_INT);
        $sql->bindParam(7, $pfechaproceso, PDO::PARAM_STR);

        if ($sql->execute()) {
            return $sql->fetch();
        } else {
            $errorregistro['0'] = -5;
            return $errorregistro;
        }
    } catch (PDOException $exception) {
        erroresPDO($exception);
    }

}
function altamodfjcategorias($pid, $pparent, $pcode, $pname, $ppath)
{
/**
 * 
***********************************************
*Funcion que llama al SP para el alta o modificacion de las categorias que devuelve la API. 
*Lo hace sin importar si el producto se importara o no. es solo para tener todas las categorias de FJ
*************************************************
*/
    global $dbConn;
    try {
        $consulta = 'call spaltamodjfcategorias (?,?,?,?,?)';
        $sql = $dbConn->prepare($consulta);
        $sql->bindParam(1, $pid, PDO::PARAM_INT);
        $sql->bindParam(2, $pparent, PDO::PARAM_STR);
        $sql->bindParam(3, $pcode, PDO::PARAM_STR);
        $sql->bindParam(4, $pname, PDO::PARAM_STR);
        $sql->bindParam(5, $ppath, PDO::PARAM_INT);
        if ($sql->execute()) {
            return $sql->fetch();
        } else {
            $errorregistro['0'] = -5;
            return $errorregistro;
        }
    } catch (PDOException $exception) {
        erroresPDO($exception);
    }

}

function traerlaboratorios(){
    global $db;
    try {
        $conect= new PDO("mysql:host={$db['DB_HOST']};port={$db['DB_PORT']};dbname={$db['DB_DATABASE']};charset=utf8", $db['DB_USERNAME'], $db['DB_PASSWORD']);
        $consulta = 'select * from fjlaboratorios ';
        $sql = $conect->prepare($consulta, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
        $sql->execute();
        while ($mio = $sql->fetchObject()){
            $resultado2[] = json_decode(json_encode($mio), true);
        }
        return $resultado2;
    } catch (PDOException $exception) {
        erroresPDO($exception);
    }
}

/**
 * 
***********************************************
*Funcion que llama al SP para devolver un listado de imagenes no asociadas a ningun lanzamiento.
*devulve el listado, pero el sp ya borra los resgistros. el listado es para poder borrar las imagenes del disco.  
*************************************************
*/
function imagenesaborrar(){
    global $dbConn;
    try {
        
        $consulta = 'call spfjborrarimglanzhuerfanas()';
        $sql = $dbConn->prepare($consulta, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
        $sql->fetch(PDO::FETCH_ASSOC);
        $sql->execute();
        while ($mio = $sql->fetchObject()){
            //$resultado2 = $mio->idfjlaboratorios;
            $resultado2[] = json_decode(json_encode($mio), true);
        }
        if (isset($resultado2)){
            return $resultado2;
        }else {
            return [];
        }

    } catch (PDOException $exception) {
        erroresPDO($exception);
        
    }
}

function borrarlanzamientos($pdiasaborrar){
/**
 * 
***********************************************
*Funcion que llama al SP para borrar lanzamientos viejos segun parametro. 
*solo borra los registros de lanzamientos. Las imagenes y demas tablas asociadas seran depuradas por otros procesos. 
*************************************************
*/    
    global $dbConn;
    try {
        $consulta = 'call spfjeliminarlanzviejos(' . $pdiasaborrar .')';
        $sql = $dbConn->prepare($consulta, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
        $sql->fetch(PDO::FETCH_ASSOC);
        if ($sql->execute()) {
            return $sql->fetch();
        } else {
            $errorregistro['0'] = -5;
            return $errorregistro;
        }
    } catch (PDOException $exception) {
        erroresPDO($exception);
        
    }
}
function ocultarlanzamientos($pdiasaocultar){
/**
 * 
***********************************************
*Funcion que llama al SP para ocultar lanzamientos cuya fecha de importacion sea aterior al parametro. 
*solo lo hace para lanzamientos importados automaticamente y estado visible automatico. (visible = 2)
*si se modifico el estado de visualizacion, sera ignoradoa por este proceso. 
*************************************************
*/
    global $dbConn;
    try {
        $consulta = 'call spfjocultarlanzamientosviejos(?)';
        $sql = $dbConn->prepare($consulta);
        $sql->bindParam(1, $pdiasaocultar, PDO::PARAM_INT);
        if ($sql->execute()) {
            return $sql->fetch();
        } else {
            $errorregistro['0'] = -5;
            return $errorregistro;
        }
    } catch (PDOException $exception) {
        erroresPDO($exception);
    }
}


function setLanzamientosPostId($pidLanzamientos, $pidPost){
    /**
     * 
    ***********************************************
    *Funcion que llama al SP para ocultar lanzamientos cuya fecha de importacion sea aterior al parametro. 
    *solo lo hace para lanzamientos importados automaticamente y estado visible automatico. (visible = 2)
    *si se modifico el estado de visualizacion, sera ignoradoa por este proceso. 
    *************************************************
    */
        global $dbConn;
        try {
            $consulta = 'call spfjlanzamientossetpostid(?,?)';
            $sql = $dbConn->prepare($consulta);
            $sql->bindParam(1, $pidLanzamientos, PDO::PARAM_INT);
            $sql->bindParam(2, $pidPost, PDO::PARAM_INT);
            if ($sql->execute()) {
                return $sql->fetch();
            } else {
                $errorregistro['0'] = -5;
                return $errorregistro;
            }
        } catch (PDOException $exception) {
            erroresPDO($exception);
        }
    }
function insertarPost($pTitulo, $pSKU){
    $title = $pTitulo;
    $content = '';
    $user_id = 1;
    $my_post = array(
        'post_title'    => $title,
        'post_content'  => $content,
        'post_status'   => 'publish',
        'post_author'   => $user_id,
        'post_type'     => 'releases',
        'post_name'     => $pSKU,
      );
    
    $id = wp_insert_post($my_post,true);
return $id;
}

