<?php

include "functions.php";
include "header.php";
include "headerline.php";
include "nav.php";



?>
<!-- Banner -->
	<section id="banner">
		<div class="content">

<?php
if(checkKaffeelisteAdmin($conn, $mailadress)){


// Funktion zum Überprüfen, ob der Mitarbeiter in der Tabelle vorhanden ist
function isMitarbeiterExist($conn, $name)
{
    $sql = "SELECT MitarbeiterID FROM kl_Mitarbeiter WHERE Name = ?";
    $params = array($name);
    $stmt = sqlsrv_query($conn, $sql, $params);

    if ($stmt === false) {
        die(print_r(sqlsrv_errors(), true));
    }

    $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);

    return ($row !== false);
}

// Funktion zum Überprüfen, ob ein identischer Eintrag bereits vorhanden ist
function isDuplicateEntry($conn, $mitarbeiterID, $betrag, $datum)
{
    // Um nur den gleichen Tag zu vergleichen, konvertieren wir den Datum-String zu einem DateTime-Objekt und verwenden die Funktion CONVERT
    $convertedDatum = date_format(date_create($datum), 'Y-m-d');
	
    #$sql = "SELECT count FROM dbo.kl_Einzahlungen WHERE MitarbeiterID = ? AND Betrag = ? AND CONVERT(VARCHAR, Datum, 23) = ?";
	$sql = "SELECT * FROM dbo.kl_Einzahlungen WHERE MitarbeiterID = ? AND Betrag = ? AND CONVERT(VARCHAR, Datum, 23) = ?";
	$params = array($mitarbeiterID, $betrag, $convertedDatum);
	$stmt = sqlsrv_query($conn, $sql, $params);

    if ($stmt === false) {
        die(print_r(sqlsrv_errors(), true));
    }

    $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);

    return ($row['MitarbeiterID'] > 0);
}

// Funktion zum Verarbeiten der CSV-Datei und Rückgabe der Ergebnisse
function processCSV($conn, $file)
{
    $handle = fopen($file, "r");
    $success_entries = [];
    $failed_entries = [];

    // Überspringe die erste Zeile (Header) der CSV-Datei
    fgetcsv($handle);

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $name = $data[3]; // Index 3 entspricht dem "Name"-Feld in der CSV
        $betrag = $data[7]; // Index 7 entspricht dem "Brutto"-Feld in der CSV
		$betrag = str_replace(",", ".", $betrag);
		#echo "<br>";
		#$Ausgabe = array($data[0], $data[3], $data[7]);
        // Überprüfen, ob der Mitarbeiter existiert und der Betrag positiv ist
        if (isMitarbeiterExist($conn, $name) && $betrag > 0) {
		
            $mitarbeiterID = getMitarbeiterID($conn, $name);
            $datum = $data[0]; // Index 0 entspricht dem "Datum"-Feld in der CSV
			
			// Überprüfen, ob ein identischer Eintrag bereits vorhanden ist
            if (!isDuplicateEntry($conn, $mitarbeiterID, $betrag, $datum)) {
			
				// Eintrag in die Tabelle dbo.kl_Einzahlungen einfügen
				$sql = "INSERT INTO kl_Einzahlungen (MitarbeiterID, Betrag, Datum) VALUES (?, ?, ?)";
				$params = array($mitarbeiterID, $betrag, $datum);
				$stmt = sqlsrv_query($conn, $sql, $params);

				if ($stmt) {
					$success_entries[] = array($data[0], $data[3], $data[7], 0);
				} else {
					$failed_entries[] = array($data[0], $data[3], $data[7], 1);
					#die(print_r(sqlsrv_errors(), true));
				}
			}else {
				#echo "Eintrag bereits vorhanden: " . print_r($data, true) . "\n";
				$failed_entries[] = array($data[0], $data[3], $data[7], 2);
			}

        } else {
            $failed_entries[] = array($data[0], $data[3], $data[7], 3);
        }
		
    }

    fclose($handle);

    return ['success' => $success_entries, 'failed' => $failed_entries];
}

// Funktion zum Abrufen der MitarbeiterID
function getMitarbeiterID($conn, $name)
{
    $sql = "SELECT MitarbeiterID FROM kl_Mitarbeiter WHERE Name = ? or paypalname = ?";
	$params = array($name);
    $stmt = sqlsrv_query($conn, $sql, $params);


    if ($stmt === false) {
        die(print_r(sqlsrv_errors(), true));
    }

	while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))  
	{  
		  return $row['MitarbeiterID'];  
	}
	#echo $mitarbeiterid;
	
}

// Überprüfen, ob das Formular abgeschickt wurde
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Überprüfen, ob eine Datei hochgeladen wurde
    if (isset($_FILES["csv_file"]) && $_FILES["csv_file"]["error"] == 0) {
        $file_name = $_FILES["csv_file"]["name"];
        $file_tmp = $_FILES["csv_file"]["tmp_name"];

        // Datei in den Upload-Ordner verschieben
        move_uploaded_file($file_tmp, "uploads/" . $file_name);

        // CSV-Datei verarbeiten
        $result = processCSV($conn, "uploads/" . $file_name);

        echo "CSV-Datei erfolgreich verarbeitet.\n";

		echo "<h3>Auswertung</h3>";
		echo "<table>

		<tr>
			<th>Name</th>
			<th>Datum</th>
			<th>Betrag</th>
			<th>Ergebnis</th>
		</tr>";

		foreach ($result['success'] as $eintrag){
		echo "<tr>
			 <td>$eintrag[0]</td>
			 <td>$eintrag[1]</td>
			 <td>$eintrag[2]</td>
			  <td>Erfolgreich gespeichert</td>
			  </tr>";
		}
		foreach ($result['failed'] as $eintrag){ 
		echo "<tr>
			 <td>$eintrag[0]</td>
			 <td>$eintrag[1]</td>
			 <td>$eintrag[2]</td>
			  <td>";
			  if($eintrag[3] == 1){
				echo "SQL Fehler";
			  }elseif($eintrag[3] == 2){
				echo "Eintrag schon vorhanden";
			  }elseif($eintrag[3] == 3){
				echo "Benutzer nicht gefunden";
			  }
			  
			  echo "</td>
			  </tr>";
		} 
		echo "</table>";

    } else {
        echo "Fehler beim Hochladen der Datei.";
    }
}


?>

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSV Verarbeitung</title>
</head>
<body>
    <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
        <label for="csv_file">CSV-Datei auswählen:</label>
        <input type="file" name="csv_file" accept=".csv" required>
        <button type="submit">Datei hochladen</button>
    </form>
</body>
</html>

<?php




}else{
	echo "<h2>Kein Zugriff</h2>";
	
}
?>

</div>
</section>


<?php include "footer.php"; ?>