<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
date_default_timezone_set('Europe/Madrid');

// Parámetros
$discordchannel	= "883046233017552956";
$serverName 	= "localhost";
$connectionInfo = array( "Database"=>"ICF", "UID"=>"VAIO", "PWD"=>"VAIO");
// Parámetro que limita por fecha
$date = null;
if (isset($_GET['date']) && $_GET['date']!='')
	$date = str_replace('_',' ',$_GET['date']);

// Conexión con Navision
$connNavision=false;
$retries=0;
while(!$connNavision && $retries<3){
	$connNavision = sqlsrv_connect( $serverName, $connectionInfo);
	$retries++;
}

if( $connNavision ) {
	 //echo "Conexion establecida con Navision.\r\n";
}else{
	  file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": No se pudo establecer la conexion con Navision"));
	  echo json_encode(["result"=>-11 , "text"=>"No se pudo conectar con Navision"]);
	  die;
}

$result		= [];

// Obtención de los productos que han cambiado
$sql = "SELECT 
		accion,
		codigo_antiguo,
		codigo_nuevo
		FROM [navisionChanges]
		WHERE entidad='ITEM'".($date!=null?" AND fecha<=CAST('".$date."' AS datetime)":"")." 
		ORDER BY fecha asc OFFSET 0 ROWS FETCH FIRST 100 ROWS ONLY";

$stmt_changes = sqlsrv_query( $connNavision, $sql);
if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {
	echo json_encode(["result"=>-1, "text"=>"1 Ocurrio un error en la consulta SQL de Navision"]);
	file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": No se pudo obtener la lista de productos que han cambiado"));
	die;
}

if( $stmt_changes !== false) {
	$j =0;
	while($row = sqlsrv_fetch_array( $stmt_changes, SQLSRV_FETCH_ASSOC)){		
		$cambio_object=[];
		foreach($row as $key=>$object){
			$cambio_object[$key]=!is_object($object)?utf8_encode($object):$object;
		}		
		$cambio_object['accion'] = $cambio_object['accion'];
		$cambio_object['codigo_antiguo'] = trim($cambio_object['codigo_antiguo']);
		$cambio_object['codigo_nuevo'] = trim($cambio_object['codigo_nuevo']);
		$result[$j]=$cambio_object;
		
		// Obtención del producto
		$sql = 'SELECT 
				REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(i.[No.])), \' \',\'\'),\'\'\'\',\'\'), CHAR(9), \'\'), CHAR(10), \'\'), CHAR(13), \'\'), CHAR(160), \'\') code,
				REPLACE(CONCAT(i.[Description], i.[Description 2]), \'\n\', \'\') Description, 
				i.[Coste de Tarifa Compra] ShoppingPrice,
				i.[Vendor No.] Supplier, 
				i.[Gross Weight] Weight, 
				i.[Minimum Order Quantity] minimumquantityofbuy, 
				i.[Order Multiple] multiplicity, 
				i.[Include Inventory] rotation, 
				CONCAT(i.[Item Category Code], i.[Product Group Code]) category, 
				i.[Blocked],
				i.[Cod. Marca] Manufacturer,
				i.[ProductoWEB],
				i.[Unidad medida precio],
				u.[E-Mail] as mail
				FROM [ICF].[dbo].[Item] i
				LEFT JOIN [ICF].[dbo].[Ind. Campollano Ferretería S.L$User Setup] u ON u.[User ID]=i.[Usuario Creacion]				
				WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LTRIM(RTRIM(i.[No.])), \' \',\'\'),\'\'\'\',\'\'), CHAR(9), \'\'), CHAR(10), \'\'), CHAR(13), \'\'), CHAR(160), \'\') =\''.$cambio_object["codigo_nuevo"].'\'';			
		$stmt_producto = sqlsrv_query( $connNavision, $sql);
	
		//file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode($sql));
		//sleep(1);
		if(sqlsrv_errors(SQLSRV_ERR_ERRORS)!==NULL) {			
			echo json_encode(["result"=>-2, "text"=>"1 Ocurrio un error en la consulta SQL de Navision"]);
			file_get_contents("https://icfbot.ferreteriacampollano.com/message.php?channel=".$discordchannel."&msg=".urlencode(":sos:"."SCRIPT ".basename(__FILE__, '.php').": No se pudo obtener la informaciÃ³n de los productos "));
			die;
		}
		if( $stmt_producto !== false) {
			while($row = sqlsrv_fetch_array( $stmt_producto, SQLSRV_FETCH_ASSOC)){			
				$producto_object=[];
				foreach($row as $key=>$object){
					$producto_object[$key]=!is_object($object)?utf8_encode($object):$object;
				}			
				$result[$j]['producto']=$producto_object;
			}
		}
		$j++;
	}
}

header('Content-Type: application/json');
echo json_encode($result, JSON_PRETTY_PRINT);
?>
