<?php

include("ApiGlobalFunctions.php");

$usuario=$_POST['uid'];
$password=$_POST['key'];
$url=$_POST['url'];
$invenriowsid=diccionario($url,'Inventario');
$inventarioid=$invenriowsid.$_POST['InventarioID'];
$inventario=$_POST['container'];
$include=includec($url);
include ($include);

/*$inventario="C13
60946
60920
61027
61946
62034";*/

error_log("Usuario: ".$usuario."Password: ".$password." URL: ".$urul." InventarioWSID: ".$invenriowsid." inventarioid: ".$inventarioid." Contenido: ".$inventario."\n", 3, "php.log");


$lines_arr = preg_split('/\n|\r/',$inventario);
$num_newlines = count($lines_arr); 
//echo $num_newlines."<br>";
//print_r($lines_arr);
//echo "<br><br><br><br>";

$z=0;
$y=0;

$Resultado = []; 
while ($z<$num_newlines) {
    //echo "<br> POSICION z: ".$z."<br>";
    $slot=CheckSlotInv($lines_arr[$z]);//Verifica si es un Slot 
    //echo "slot".$slot."<br>";;
    $slotcode=$lines_arr[$z];
    $productoslot=ChechSlotExist($slotcode,$url);//Traer el producto del slot
    //echo "producto".$productoslot."<br>";
    if ($slot==1) {
        //echo '<br>SLOT VALIDO  '.$slotcode.' con producto '.$productoslot.'<br>';
        $z++;
        $producto=CheckSlotInv($lines_arr[$z]);//Verifica SI la linea es n producto  
        //echo "Verifica SI la linea es n producto  ".$producto."<br>";
       // error_log("Z: ".$z."PRODUCTO: ".$producto."\n", 3, "php.log");
        if($producto==2){                
            $Resultado[1]["Estado"]="Err";
            $Resultado[1]["Slot"]=$slotcode;
            $Resultado[1]["Producto"]="";
            $Resultado[1]["ProductoCode"]="";
            $Resultado[1]["Cantidad"]="0";   
                  //  print_r($Resultado);
        }
        while ($producto==0){
        $productinv=SearchProductInv($lines_arr[$z],$url);// Guarda el id del producto inventariado  
        error_log("Z: ".$z."PRODUCTO: ".$producto."PRODUCTOINV: ".$productinv."\n", 3, "php.log");
        $productcode=$lines_arr[$z];
        //echo "<br> Producto inventariado ".$productinv."<br>";
        //echo "Producto Slot ".$productoslot."<br>";
            if (1==1) {
                //echo "EMPIEZ INVENTARIO ".$productinv." es igual<br>";
                error_log("FUNCION BUSCAR ARRAY : ".$slotcode."-- ".$productinv." -- ".$Resultado."\n", 3, "php.log");
                $buscar=BuscarArray($slotcode,$productinv,$Resultado);
                $buscar=explode("--", $buscar);
                $posicion=$buscar[0];
                $cantidad=$buscar[1];
                error_log("RESULTADO BUSCAR ARRAY : ".$productinv."-- ".$posicion." -- ".$cantidad."\n", 3, "php.log");
                $CantPrin=count($Resultado)+1;
                if (empty($cantidad)) {
                    //echo "Producto  NO esta en array<br><br>";
                    error_log("SLOT: ".$slotcode." producto: ".$productinv." productcode: ".$productcode."\n", 3, "php.log");
                    $Resultado[$CantPrin]["Estado"]="Ok";
                    $Resultado[$CantPrin]["Slot"]=$slotcode;
                    $Resultado[$CantPrin]["Producto"]=$productinv;
                    $Resultado[$CantPrin]["ProductoCode"]=$productcode;
                    $Resultado[$CantPrin]["Cantidad"]= 1;   
                    //print_r($Resultado);
                    //echo "<br><br>";
                }else{
                    //echo "Producto  SI esta en array con cantidad ".$cantidad." y Posicion ".$posicion."<br><br>";
                    $Resultado[$posicion]["Cantidad"]= $cantidad+1; 
                    //print_r($Resultado);
                    //echo "<br><br>";
                }
            }
            $z++;
            $producto=CheckSlotInv($lines_arr[$z]);  
            $y++;       
        }   

    }else{
          $Resultado[1]["Estado"]="Err";
            $Resultado[1]["Slot"]=$slotcode;
            $Resultado[1]["Producto"]="";
            $Resultado[1]["ProductoCode"]="";
            $Resultado[1]["Cantidad"]="0";  
            $z++;
    }
}

//error_log("Lineas".$num_newlines."Slot: ".$slotcode." Producto: ".$productinv."Estado ".$Resultado[1]["Estado"]."Slot ".$Resultado[1]["Slot"]."Producto ".$Resultado[1]["Producto"]."Qty ".$Resultado[1]["Cantidad"]."\n", 3, "php.log");



function BuscarArray($slot,$producto,$Resultado){
    $a=1;
    foreach ($Resultado as $data){
        if ($data['Slot'] == $slot && $data['Producto'] == $producto){
            return $a."--".$data['Cantidad'];
        }
        $a++;
    }    
}
//echo "<br><br>ARRAY PRODUCTOS<br><br>";
//print_r($Resultado);echo "<br><br>";
$a=0;
foreach ($Resultado as $data) {    
    error_log("ESTADO : ".$$data['Estado']." SLOT: ".$$data['Slot']." Producto: ".$data['ProductoCode']."\n", 3, "php.log");
    $resultado2[$a]=array('Estado'=>$data['Estado'],"Slot"=>$data['Slot'],"Producto"=>$data['ProductoCode'],"Cantidad"=>$data['Cantidad']);    
    $a++;
}


$includenat=includenative($usuario,$password,$url);
chdir($includenat);
$username=username($usuario,$url);
include_once 'vtwsclib/Vtiger/WSClient.php';
$userws=diccionario($url,'userws');
$passws=diccionario($url,'keyws');
$user = $userws;
$key  = $passws;
$url  = $url;
$client = new Vtiger_WSClient($url);
$login = $client->doLogin($user, $key);
$asignado="19x".$usuario;
$campo1=diccionario($url,'Resultadori');
    
foreach ($resultado2 as $row) {
    $estado=$row['Estado'];    
    if($estado=="Ok" || $estado=="Offside"){
        if ($estado=="Ok"){
            $estado="Correcto";
        }        
        $resultfuncionprod=SearchProduct($row['Producto'],$url);
        $resultfuncionprod=explode("--", $resultfuncionprod);
        $productoid=$resultfuncionprod[0];
        $productcode=$resultfuncionprod[1];
        $asset=$resultfuncionprod[2];
        $resultado=inventarioasset($asset,$row['Cantidad'],$url);
        //echo "<br>".$productoid."---".$row['Slot']."---".$row['Producto']."---".$row['Cantidad']."<br>";        
        $resultadocampo=diccionario($url,'Resultadori');
        $RegInvAsset=diccionario($url,'RegInvAsset');
        //$record=$client->doCreate('Registrosinventario',array('registrosinventario_tks_invent'=>$inventarioid,'registrosinventario_tks_produc'=>$productoid,'registrosinventario_tks_codigo'=>$productcode,'registrosinventario_tks_cantid'=>$row['Cantidad'],'registrosinventario_tks_slot'=>$row['Slot'] ,$campo1=>$estado,'assigned_user_id'=>$asignado,$resultado=>$resultado,$RegInvAsset=>$asset));                
        $record=$client->doCreate('Registrosinventario',array('registrosinventario_tks_invent'=>$inventarioid,'registrosinventario_tks_produc'=>$productoid,'registrosinventario_tks_codigo'=>$productcode,'registrosinventario_tks_cantid'=>$row['Cantidad'],'registrosinventario_tks_slot'=>$row['Slot'] ,$campo1=>$estado,'assigned_user_id'=>$asignado,$resultado=>$resultadocampo,$RegInvAsset=>$asset));                
        if ($record) {
            $recordid = $client->getRecordId($record['id']);
            $asset=explode("x", $asset);
            $assetsid=$asset[1];
            //echo "<br>RESULTADO: ".$recordid."--".$asset."--".$assetsid."<br>";
            //echo "<br>UPDATE vtiger_assets SET cf_1898='$recordid' WHERE assetsid='$assetsid'<br>"; 
            $date=date('Y-m-d');
            mysqli_query($link,"UPDATE vtiger_slots SET slots_tks_fechaultimoinventari='$date' WHERE slotsid='$slotid' ");
            $docs[0]=array('Result'=>'1', 'id'=>$recordid);
            //echo json_encode($docs);
        }else{
            $error=$client->lastError();
            $docs[0]=array('Result'=>'0', 'id'=>$error);
            //echo json_encode($docs);
        }        
    }   
}

echo json_encode($resultado2);

function CheckSlotInv($slot){
    if(!empty($slot)){
        if ((strpos($slot, 'A') !== false) || (strpos($slot, 'B') !== false) || (strpos($slot, 'C') !== false)) {
            return 1;
        }else{
            return 0;
        }
    }else{
        return 2;
    }   

}

function ChechSlotExist($codslot,$url){
    $include=includec($url);
    include ($include);
    $query=mysqli_query($link,"SELECT *
        FROM vtiger_slots 
        INNER JOIN vtiger_slotscf ON vtiger_slotscf.slotsid=vtiger_slots.slotsid 
        WHERE slots_tks_codigo='$codslot' ");
    $num=mysqli_num_rows($query);
    if($num>0){
        $data=mysqli_fetch_array($query);
        $producto=$data['slots_tks_producto'];
        return $producto;   
    }else{
        return $num;
    }
}


function SearchProduct($producto,$url){
    $include=includec($url);
    include ($include);
    $campo=diccionario($url,'codproduct');
    $query=mysqli_query($link,"SELECT vtiger_products.productid, assetsid,serialnumber,".$campo." as prodcod
    FROM vtiger_products 
    INNER JOIN vtiger_assets ON vtiger_assets.product=vtiger_products.productid
    INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_products.productid  
    INNER JOIN vtiger_productcf ON vtiger_productcf.productid=vtiger_products.productid 
    WHERE deleted='0'  AND serialnumber='$producto'");
    $data=mysqli_fetch_array($query);
    $productid=$data['productid'];
    $assetsid=$data['assetsid'];
    $prodcod=$data['prodcod'];
    $producto="14x".$productid;
    $baseins="28x".$assetsid;
    $return=$producto."--".$prodcod."--".$baseins;
    return $return;
}

function SearchProductInv($producto,$url){
    $include=includec($url);
    include ($include);
    $campo=diccionario($url,'codproduct');
    $query=mysqli_query($link,"SELECT vtiger_products.productid, assetsid,serialnumber,".$campo." as prodcod
    FROM vtiger_products 
    INNER JOIN vtiger_assets ON vtiger_assets.product=vtiger_products.productid
    INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_products.productid  
    INNER JOIN vtiger_productcf ON vtiger_productcf.productid=vtiger_products.productid 
    WHERE deleted='0'  AND serialnumber='$producto'");
    $data=mysqli_fetch_array($query);
    $producto=$data[1];
    return $producto;
}
  
function inventarioasset($asset,$cantidad,$url){
    $include=includec($url);
    include ($include);
    $asset=explode("x", $asset);
    $assetsid=$asset[1];
    $QtyAsset=diccionario($url,'QtyAsset');
    $queryr=mysqli_query($link,"SELECT ".$QtyAsset." as cantidadasset FROM vtiger_assetscf WHERE assetsid='$assetsid'");
    $datar=mysqli_fetch_array($queryr);
    $qtyasset=$datar['cantidadasset'];
    if($cantidad==$qtyasset){
        $resultado='Correcto';
    }else{
    $resultado='Desigual';
    }
    return $resultado;
}


?>