<?php
ini_set('display_errors', 1);

include "Thybag/SharePointAPI.php";
include "Thybag/Auth/SharePointOnlineAuth.php";
include "Thybag/Auth/SoapClientAuth.php";
include "Thybag/Auth/StreamWrapperHttpAuth.php";
include "Thybag/Service/ListService.php";
include "Thybag/Service/QueryObjectService.php";
use Thybag\SharePointAPI;


$ReturnTo = $_GET['ReturnTo'];

//Connectie maken met Sharepoint
//TODO: mijn persoonlijk account aanpassen naar het Serviceaccount van 't Saam
$sp = new SharePointAPI('jeroen.lauwyck@tsaam.be', 'Hoofdleider2018*', 'Thybag/Administratie.wsdl', 'SPONLINE');

//Connectie maken met SQL database van de website.
//Indien dit niet lukt, direct foutmelding tonen op het scherm.
$mysqli = new mysqli("localhost", "tsaambe_FormulierGegevens", "FormulierGegevens", "tsaambe_joom975");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$mysqli->set_charset("utf8mb4");

//Alle ID's opvragen van inschrijvingen
$sql = "SELECT id FROM `joshy_facileforms_records` where Name like 'Inschrijving_Intern' order by id desc";
$result = $mysqli->query($sql);

$aantalAanpassingen = 0;

//Deze resultaten allemaal overlopen.
$array = array();
while($row = $result->fetch_array(MYSQLI_NUM)){
    //één bepaalde waarde opvragen (status SP).
    $sql = "SELECT value FROM `joshy_facileforms_subrecords` WHERE record like '" . $row[0] . "' and title like 'status'";
    $subresult = $mysqli->query($sql);
	$value = $subresult->fetch_array(MYSQLI_NUM);
	
	//Indien status een bepaalde waarde heeft, is het nodig alles op te halen om dan naar Sharepoint door te sturen.
	if($value[0] == "Inschrijving aangemaakt"){
	    $aantalAanpassingen++;
        $sql = "SELECT Name, Value, type from `joshy_facileforms_subrecords` where record like '" . $row[0] . "' order by element";
    	$subarray = array();
    	$subresult = $mysqli->query($sql);
    	$subarray["SQLID"] = $row[0];
    	//Alle waarden indien nodig wat opschonen en nadit opslaan in subarray.
    	while($value = $subresult->fetch_array(MYSQLI_NUM)){
    		$sleutel = $value[0];
    		$waarde = $value[1];
    		if($value[2] == 'Checkbox' && $waarde == 'checked'){
    		    $waarde = 1;
    		}
    		elseif($value[2] == 'Checkbox'){
    		    $waarde = 0;
    		}
    		if($sleutel == '2Keuzepakket'){
    		    $sleutel = "_x0032_Keuzepakket";
    		}
    		if($sleutel == 'VoornaamLeerling'){
    		    $sleutel = "Title";
    		}
    		if($sleutel == 'AanvullendeInfo_ExterneBegeleiding'){
    		    $sleutel = 'AanvullendeInfo_ExterneBegeleidi';
    		}
    		if ($sleutel == 'OudeCampusWordtNietGebruikt' || $sleutel == 'Status' || $sleutel == 'VoorinschrijvingsID' || $sleutel == 'SharepointID' || $sleutel == 'Informat'){}
    		else{
    			$subarray[$sleutel] = $waarde;
    			$subarray[$sleutel] = trim(preg_replace('/\s+/', ' ', $subarray[$sleutel]));
    		}
    	}
    	//Datum waarop item werd gemaakt opvragen.
    	$sql = "SELECT submitted FROM `joshy_facileforms_records` WHERE id = '" . $row[0] . "'";
    	$subresult = $mysqli->query($sql);
    	while($value = $subresult->fetch_array(MYSQLI_NUM)){
    		$subarray["Inschrijvingstijdstip"] = $value[0];
    		$subarray["Inschrijvingstijdstip"] = trim(preg_replace('/\s+/', ' ', $subarray["Inschrijvingstijdstip"]));
    	}
    	$subarray["Status_inschrijving_verwerkt"] = 0;
    	$subarray["Mail_boeken"] = 0;
    	
    	//subarray opslaan in algemene array die info bevat van alle inschrijvingen.
    	$array[$row[0]] = $subarray;
	} else {
	    //Indien niet naar SP moet.
	    $array[$row[0]] = "Niet nodig";
	}
}



//Alle SP items opvragen om hashmap te kunnen aanleggen van SQLID gekoppeld aan SPID.
$sharepointwaarden = array();
$sharepointitem = $sp->read('Inschrijvingen 2020');
foreach($sharepointitem as $column){
    $sqlid = '';
    $spid = '';
    foreach($column as $columnsleutel => $columnwaarde){
        if($columnsleutel == 'sqlid'){
            $sqlid = $columnwaarde;
        } else if($columnsleutel == 'id'){
            $spid = $columnwaarde;
        }
    }
    $sqlidaangepast = preg_replace("/\.0+/", "", $sqlid);
    //echo "Nieuwe methode: $sqlidaangepast<br/>";
    $sharepointwaarden[$sqlidaangepast] = $spid;
}


if(empty($_GET)){
    
    echo '<table style="width:100%"><tr><th>SQLID</th><th>SPID</th><th>Bewerkingslink</th><th>Melding</th><th>Commentaar</th></tr>';
    
    //Alle Inschrijvingen terug overlopen om nodige stappen uit te voeren en uit te printen op het scherm.
    foreach($array as $key => $value){
        echo "<tr>";
        echo '<td style="text-align:center">'.$key.'</td><td style="text-align:center">'.$sharepointwaarden[$key].'</td>';
        echo '<td style="text-align:center"><a href="https://tsaam.sharepoint.com/sites/Administratie/Lists/Inschrijvingen%202020/EditForm.aspx?ID='.$sharepointwaarden[$key].'">Link om te bewerken</a></td>';
    
        $melding = "Gelukt";
        $message = "";
        
        //Indien item nog naar SP moet doorgestuurd worden
        if($value != "Niet nodig"){
            //Effectief doorsturen naar Sharepoint
            $return = $sp->add('Inschrijvingen 2020', $value);
            //Returnwaarde ontleden en juist interpreteren.
            foreach($return as $lol){
                if(is_array($lol)){
                    $melding = "Gelukt";
                }
                else{
                    if( $lol != 'No data returned.'){
                        $xmlLol = '<?xml version="1.0"?>' . $lol;
                        $Results = simplexml_load_string ($xmlLol) or die("Error: xml aanmaken mislukt");
                        if($Results->Result[0]->ErrorCode[0] == "0x810200bf"){
                            $melding = "Gelukt";
                        }
                        else if($Results->Result[0]->ErrorCode[0] == "0x8102001c"){
                            $melding = "Aanpassen";
                        }
                        else{
                            $melding = "Fout";
                            $message = $message . $Results->Result[0]->ErrorText[0];
                        }
                    }
                }
            }
        }else{
            $melding = "Niet nodig";
        }
        
        echo '<td style="text-align:center">'.$melding.'</td>';
        
        $comment = "";
        
        
        //Gelukt om SQL in SP te plaatsen, nu nog extra zaken insteken.
        if($melding == "Gelukt"){
            $comment .= '<div style="background-color: rgb(127, 255, 0); color: rgb(31, 45, 61); font-weight: bold;">Het opslaan van de gegevens in Sharepoint is gelukt!';
            //eerste todo is om het sql-veld status aan te passen.
            $sql = "UPDATE `joshy_facileforms_subrecords` SET `value`='In SP' WHERE record like '" . $key . "' and title like 'status'";
            if($mysqli->query($sql)){
                $comment .= '<br/>status successvol aangepast!</div>';
            } else{
                $comment .= '</div><div style="background-color: rgb(139, 0, 0); color: rgb(255, 255, 255); font-weight: bold;">Probleem met status updaten!</div>';
            }
            
            
        }//Standaard gedrag (aka alles was in orde) 
        else if($melding == "Niet nodig"){
            /*$sql = "INSERT INTO `joshy_facileforms_subrecords`(`id`, `record`, `element`, `title`, `name`, `type`, `value`) VALUES (" . $count . ",'" . $key . "','1531','SharepointID','SharepointID','Text','" . $sharepointwaarden[$key] . "')";
            echo $sql . '<br/>';
            $count++;
            if($mysqli->query($sql)){
                echo 'SQL inserted successfully!</div><br/>';
            } else{
                echo '</div style="background-color: rgb(139, 0, 0); color: rgb(255, 255, 255); font-weight: bold;">SQL invoegen niet gelukt!<br/>';
            }*/
            //één bepaalde waarde opvragen (SPID).
            $sql = "SELECT value FROM `joshy_facileforms_subrecords` WHERE record like '" . $key . "' and title like 'SharepointID'";
            $subresult = $mysqli->query($sql);
        	$value = $subresult->fetch_array(MYSQLI_NUM);
        	
        	//Indien status een bepaalde waarde heeft, is het nodig alles op te halen om dan naar Sharepoint door te sturen.
        	if(!($value[0] == $sharepointwaarden[$key])){
        	    //tweede todo is om de SPID op te slaan in de SQL.
                $sql = "UPDATE `joshy_facileforms_subrecords` SET `value`='" . $sharepointwaarden[$key] . "' WHERE record like '" . $key . "' and title like 'SharepointID'";
                if($mysqli->query($sql)){
                    $comment .= '<div style="background-color: rgb(127, 255, 0); color: rgb(31, 45, 61); font-weight: bold;">SPID succesvol aangepast!</div>';
                } else{
                    $comment .= '<div style="background-color: rgb(139, 0, 0); color: rgb(255, 255, 255); font-weight: bold;">Probleem met SPID updaten!</div>';
                }
        	}
            $comment .= '<div style="background-color: rgb(127, 255, 0); color: rgb(31, 45, 61); font-weight: bold;">Het opslaan van de gegevens in Sharepoint was niet nodig aangezien de gegevens al aanwezig waren.</div>';
        }//Fout aangetroffen met een van de velden in de SQL
        else if($melding == "Aanpassen"){
            $comment .= '<div style="background-color: rgb(255, 162, 0); color: rgb(255, 255, 255); font-weight: bold;">Het opslaan van de gegevens in Sharepoint is niet gelukt. Gelieve de geboortedatum te controlen op het juiste formaat.<br/><a href="https://www.tsaam.be/resultaten-inschrijvingen/edit/1/' . $key . '">Klik hier om dit item aan te passen.</a></div>';
        }//Andere algemene fout tegengekomen
        else{
            $comment .= '<div style="background-color: rgb(139, 0, 0); color: rgb(255, 255, 255); font-weight: bold;">Het opslaan van de gegevens in Sharepoint is niet gelukt. Gelieve contact op te nemen met <a style="color= #FAF0E6;" href="mailto:jeroen.lauwyck@tsaam.be">Jeroen Lauwyck</a> met vermelding van volgende foutcode:<br/>'.$message.'</div>';
        }
        
        echo '<td style="text-align:center">'.$comment.'</td>';
        echo "</tr>";
    }
    echo "</table>";
    echo '
    <style>
    table, th, td {
      border: 1px solid black;
      border-collapse: collapse;
    }
    th, td {
      padding: 15px;
    }
    </style>';
    /*
    echo '<br/><br/>';
    $listContents = $sp->read('Inschrijvingen 2020');
    foreach($listContents as $item)
    {
        var_dump($item);
    }
    */
}

if (!empty($_GET)) {
    // no data passed by get
    header('Location: https://www.tsaam.be/' . $ReturnTo); // redirect to the real file to be downloaded
}

?>