<?php
set_time_limit(0);
$start_time = @date("H:i");
$link =  mysqli_connect('localhost', 'digibyteconnect_site', '#.6~]2vddj)m','digibyteconnect_site');  

function httpsPost($Url, $strRequest){
	// Initialisation
	$ch=curl_init();
	// Set parameters
	curl_setopt($ch, CURLOPT_URL, $Url);
	// Return a variable instead of posting it directly
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_VERBOSE, true);
	// Active the POST method
	curl_setopt($ch, CURLOPT_POST, 1) ;
	// Request
	curl_setopt($ch, CURLOPT_POSTFIELDS, $strRequest);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$headers = array("Content-type: text/xml", "Content-length: " . strlen($strRequest), "Connection: close");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);	
	// execute the connexion
	$result = curl_exec($ch);
	// Close it
	curl_close($ch);
	return $result;
}

function getIngramPrice($products){
		$string = '<?xml version="1.0" encoding="ISO-8859-1"?><PNARequest><Version>2.0</Version>';
		$string.= '<TransactionHeader><SenderID>DIGIBYTE</SenderID>';
		$string.= '<ReceiverID>INGRAM MICRO</ReceiverID>';
		$string.= '<CountryCode>MX</CountryCode><LoginID>GoGoTe4gDd</LoginID><Password>SaLeS110718</Password>';
		$string.= '<TransactionID>{A0DEA52B-341F-40C3-9C80-77A4A84F9EB7}</TransactionID></TransactionHeader>';
		for($i=0;$i<sizeof($products);$i++){
			$string .= '<PNAInformation SKU="'.$products[$i]["sku"].'" Quantity="1" ReservedInventory="N"/>';
		}
		$string.= '<ShowDetail>0</ShowDetail></PNARequest>';
		$url = 'https://newport.ingrammicro.com/MUSTANG';

		$strRequest = utf8_encode($string);
		$Response = httpsPost($url, $strRequest);
		// validate xml response from pcg
		$doc1 = new DOMDocument();
		$doc1->loadXML($strRequest);
		$pnaRq = "PNAReq.xml";
		$doc1->save("$pnaRq");		

		$doc = new DOMDocument();
		$doc->loadXML($Response);
		$pnaResp = "PNAResponse.xml";
		$doc->save("$pnaResp");

		
		// loocking for errors
		$ErrorStatus = $doc->getElementsByTagName("ErrorStatus");
		$ErrorNumber = $ErrorStatus->item(0)->getAttribute("ErrorNumber");
		if(strlen($ErrorNumber)<=0){
			$productos =  array();
			$TotAvail = 0;
			// No errors
			$PriceAndAvailability = $doc->getElementsByTagName("PriceAndAvailability");
			  foreach( $PriceAndAvailability as $PriceAndAvailability ){
				  
				  
				  $Prices = $PriceAndAvailability->getElementsByTagName("Price");
				  $sku = $PriceAndAvailability->getAttribute("SKU");
				  $Price = $Prices->item(0)->nodeValue;
				  $Parts = $PriceAndAvailability->getElementsByTagName("ManufacturerPartNumber");
				  
				  $Branchs = $PriceAndAvailability->getElementsByTagName("Branch");
				  $Avails = $PriceAndAvailability->getElementsByTagName("Availability");
				  $disponibilidades = array();
				  for ($i = 0; $i < $Branchs->length; ++$i) {
				  	    $sucursal = $Branchs->item($i)->getAttribute('ID');
				  	    $total = $Avails->item($i)->nodeValue;
				  		$push = array('sucursal'=>$sucursal,'stock'=>$total);
				  		array_push($disponibilidades, $push);
						$TotAvail += $Avails->item($i)->nodeValue;
				  }
				  				  
				  $Price = str_replace(",",".",$Price);
				  // Agregamos el margen del producto
				  $FinalPrice = $Price;
				  //$id = getProductId($sku);
				 
				  //array_push($productos,array("id"=>$id,"sku"=>$sku,"precio"=>$Price,"disponibilidad"=>$disponibilidades,'total'=>$TotAvail));
				  array_push($productos,array("sku"=>$sku,"precio"=>$Price,"disponibilidad"=>$disponibilidades,'total'=>$TotAvail));
				  //unset($id);
				  unset($TotAvail);
				  unset($sku);
				  unset($disponibilidades);
			  } //for each
		}
		else{
 			$actividad = array('domain' => 'digibyte-connect.com','created_at' => @date("Y-m-d"),'task' => 'precios','start' => $start_time,'end' =>  @date("H:i"),'status' => 'error' );
        	httpsPost("https://digitalmedia-connect.com/monitor/activity", json_encode($actividad));
			die($ErrorStatus->item(0)->nodeValue);
		}
		return $productos;
}			
 			$result = $link->query("SELECT * FROM PricefileMumbai where isactive = 1");
			$productos = array();
			$total_productos = $result->num_rows;

			$numero_de_arreglos = ceil($total_productos/100);
			$time_start = microtime(true);
            while ($row = $result->fetch_assoc()) {

				//array_push($productos,array("id"=>$row["id"],"sku"=>$row["sku"]));
				array_push($productos,array("sku"=>$row["SKU"]));
            }
			$muchos = array_chunk($productos,100);

			for($j=0;$j<sizeof($muchos);$j++){
				
				
				$products_consultados = getIngramPrice($muchos[$j]);

				for($k=0;$k<=sizeof($products_consultados);$k++){

					$dispo = $products_consultados[$k]["disponibilidad"];
					$disponibilidad_10 = 0;
					$disponibilidad_20 = 0;
					$disponibilidad_30 = 0;
					$disponibilidad_40 = 0;
					$disponibilidad_50 = 0;
					$disponibilidad_55 = 0;
					$disponibilidad_60 = 0;
					$disponibilidad_70 = 0;
					$disponibilidad_80 = 0;
					for ($i=0; $i < sizeof($dispo); $i++) { 
						if ($dispo[$i]["sucursal"]=="10") {
							$disponibilidad_10 = $dispo[$i]["stock"];
						}
						if ($dispo[$i]["sucursal"]=="20") {
							$disponibilidad_20 = $dispo[$i]["stock"];
						}							
						if ($dispo[$i]["sucursal"]=="30") {
							$disponibilidad_30 = $dispo[$i]["stock"];
						}
						if ($dispo[$i]["sucursal"]=="40") {
							$disponibilidad_40 = $dispo[$i]["stock"];
						}
						if ($dispo[$i]["sucursal"]=="50") {
							$disponibilidad_50 = $dispo[$i]["stock"];
						}
						if ($dispo[$i]["sucursal"]=="55") {
							$disponibilidad_55 = $dispo[$i]["stock"];
						}
						if ($dispo[$i]["sucursal"]=="60") {
							$disponibilidad_60 = $dispo[$i]["stock"];
						}
						if ($dispo[$i]["sucursal"]=="70") {
							$disponibilidad_70 = $dispo[$i]["stock"];
						}					
						if ($dispo[$i]["sucursal"]=="80") {
							$disponibilidad_80 = $dispo[$i]["stock"];
						}			
					}

					if (!empty($products_consultados[$k]["precio"])) {
							$link->query("UPDATE PricefileMumbai 
											SET disponibilidad = ".$products_consultados[$k]['total'].", disponibilidad_10 = ".$disponibilidad_10.", 
											disponibilidad_20 = ".$disponibilidad_20.", 
											disponibilidad_30 = ".$disponibilidad_30.", 
											disponibilidad_40 = ".$disponibilidad_40.", 
											disponibilidad_50 = ".$disponibilidad_50.", 
											disponibilidad_55 = ".$disponibilidad_55.", 
											disponibilidad_60 = ".$disponibilidad_60.", 
											disponibilidad_70 = ".$disponibilidad_70.", 
											disponibilidad_80 = ".$disponibilidad_80.", 
											precio = ".$products_consultados[$k]["precio"].",
											isactive=1
											
											
											WHERE SKU = '".$products_consultados[$k]['sku']."'");
					}else{
							$link->query("UPDATE PricefileMumbai 
											SET disponibilidad = 0, disponibilidad_10 = 0, 
											disponibilidad_20 = 0, 
											disponibilidad_30 = 0, 
											disponibilidad_40 = 0, 
											disponibilidad_50 = 0, 
											disponibilidad_55 = 0, 
											disponibilidad_60 = 0, 
											disponibilidad_70 = 0, 
											disponibilidad_80 = 0, 
											precio = 0,
											isactive=0
											
											WHERE SKU = '".$products_consultados[$k]['sku']."'");
					}
				}
			}
 			$actividad = array('domain' => 'digibyte-connect.com','created_at' => @date("Y-m-d"),'task' => 'precios','start' => $start_time,'end' =>  @date("H:i"),'status' => 'success' );
        	httpsPost("https://digitalmedia-connect.com/monitor/activity", json_encode($actividad));
