<?php
declare(strict_types=1);
include "functions.php";
include "header.php";
include "headerline.php";
include "nav.php";


?>

<!-- Banner -->
	<section id="banner">
		<div class="content">
<style>
  /* Hartes Reset für Inputs nur im Umfrage-Formular */
  html body form#coffeeSurvey input[type="checkbox"],
  html body form#coffeeSurvey input[type="radio"]{
    all: revert !important;            /* setzt ALLES zurück */
    appearance: auto !important;
    -webkit-appearance: auto !important;

    display: inline-block !important;
    position: static !important;
    opacity: 1 !important;
    visibility: visible !important;

    width: 16px !important;
    height: 16px !important;
    margin: 0 6px 0 0 !important;
    transform: none !important;
  }

  html body form#coffeeSurvey label{
    display: inline-block;
    cursor: pointer;
  }
</style>
<?php

$geschlossen = true;

if(checkKaffeelisteAccess($conn, $mailadress)){

	echo "<h2>Kaffeeliste</h2>";
	echo "Hallo " . getUserName($conn,$mailadress) . "!<br><br>";


// Beispiel: falls $conn nicht global ist, musst du es wie in deiner Seite erzeugen.
if (!isset($conn)) {
    die("DB Verbindung (\$conn) fehlt.");
}

function h($s) { return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); }

$errors = [];
$success = false;

$emailNorm = mb_strtolower(trim((string)$mailadress));
if ($emailNorm === '' || !filter_var($emailNorm, FILTER_VALIDATE_EMAIL)) {
    $errors[] = "Keine gültige E-Mail im System gefunden (Variable \$mailadress).";
}

// Options
$drinks = [
    'espresso' => 'Espresso',
    'crema' => 'Café Crema',
    'cappuccino' => 'Cappuccino',
    'latte' => 'Latte Macchiato',
    'americano' => 'Americano',
    'decaf' => 'Entkoffeiniert',
    'other' => 'Andere',
];

$problems = [
    'forget' => 'Vergesse Eintrag',
    'empty' => 'Kaffee leer',
    'water' => 'Wasser auffüllen',
    'too_little' => 'zu wenig Kaffeeausgabe',
    'too_much' => 'zu viel Kaffeeausgabe',
    'none' => 'Kein Problem',
    'other' => 'Sonstiges',
];

$improvements = [
    'easier_entry' => 'Einfacherer Eintrag',
    'overview' => 'Übersicht über Kosten/Verbrauch',
    'more_mails' => 'Mehr Info-Mails',
    'adjust_amount' => 'Menge der Kaffeeausgabe anpassen',
    'other' => 'Sonstiges',
];

function post($k, $def='') { return $_POST[$k] ?? $def; }
function postArr($k) { $v = $_POST[$k] ?? []; return is_array($v) ? $v : []; }

// Schon abgestimmt?
$alreadyVoted = true;
if (!$errors) {
    $sqlChk = "SELECT 1 FROM dbo.CoffeeSurveyVotedEmails WHERE EmailNorm = ?";
    $stmtChk = sqlsrv_query($conn, $sqlChk, [$emailNorm]);
    if ($stmtChk === false) {
        $errors[] = "DB-Fehler (Vote-Check): " . print_r(sqlsrv_errors(), true);
    } else {
        $alreadyVoted = (sqlsrv_fetch_array($stmtChk, SQLSRV_FETCH_NUMERIC) !== null);
    }
}

// POST Handling
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !$errors) {
    if ($alreadyVoted) {
        $errors[] = "Du hast bereits abgestimmt.";
    } else {

        $q1 = (int)post('q1_listease', 0);   // 1 sehr einfach .. 5 sehr schwierig
        $q2 = (int)post('q2_listsat', 0);    // 1 sehr zufrieden .. 5 sehr unzufrieden
        $q3 = (int)post('q3_quality', 0);
        $q4 = (int)post('q4_websat', 0);

        $q5 = postArr('q5_drinks');          // array
        $q5_other = trim((string)post('q5_drinks_other',''));

        $q6 = trim((string)post('q6_newvarieties',''));

        $q7 = (string)post('q7_problem','');
        $q7_other = trim((string)post('q7_problem_other',''));

        $q8 = postArr('q8_improvements');
        $q8_other = trim((string)post('q8_improvements_other',''));

        $q9 = trim((string)post('q9_betterideas',''));

        // Validate scales
        foreach ([1=>$q1,2=>$q2,3=>$q3,4=>$q4] as $idx=>$val) {
            if ($val < 1 || $val > 5) $errors[] = "Bitte bei Frage {$idx} einen Wert von 1 bis 5 wählen.";
        }

        // Validate drinks
        $allowedDrinks = array_keys($drinks);
        $q5 = array_values(array_unique(array_filter($q5, fn($v)=>in_array($v,$allowedDrinks,true))));
        if (count($q5) === 0) $errors[] = "Bitte bei Frage 5 mindestens eine Kaffeesorte auswählen.";
        if (in_array('other',$q5,true) && $q5_other === '') $errors[] = "Bitte bei Frage 5 'Andere' kurz beschreiben.";

        // Validate problem
        if (!array_key_exists($q7, $problems)) $errors[] = "Bitte bei Frage 7 eine Option wählen.";
        if ($q7 === 'other' && $q7_other === '') $errors[] = "Bitte bei Frage 7 'Sonstiges' kurz beschreiben.";

        // Validate improvements
        $allowedImp = array_keys($improvements);
        $q8 = array_values(array_unique(array_filter($q8, fn($v)=>in_array($v,$allowedImp,true))));
        if (count($q8) === 0) $errors[] = "Bitte bei Frage 8 mindestens eine Verbesserung auswählen.";
        if (in_array('other',$q8,true) && $q8_other === '') $errors[] = "Bitte bei Frage 8 'Sonstiges' kurz beschreiben.";

        if (!$errors) {
            $q5_csv = implode(',', $q5);
            $q8_csv = implode(',', $q8);

            // Transaction (sqlsrv)
            sqlsrv_begin_transaction($conn);

            // 1) Sperre (E-Mail) eintragen
            $sqlEmail = "INSERT INTO dbo.CoffeeSurveyVotedEmails (EmailNorm) VALUES (?)";
            $stmtEmail = sqlsrv_query($conn, $sqlEmail, [$emailNorm]);

            if ($stmtEmail === false) {
                sqlsrv_rollback($conn);
                $errors[] = "Speichern fehlgeschlagen (E-Mail-Sperre). " . print_r(sqlsrv_errors(), true);
            } else {
                // 2) Antworten speichern (ohne E-Mail)
                $sqlIns = "
                    INSERT INTO dbo.CoffeeSurveyResponses
                    (Q1_ListEase, Q2_ListSatisfaction, Q3_CoffeeQuality, Q4_WebsiteSatisfaction,
                     Q5_Drinks, Q5_DrinksOther, Q6_NewVarieties,
                     Q7_ListProblem, Q7_ListProblemOther,
                     Q8_Improvements, Q8_ImprovementsOther,
                     Q9_BetterIdeas)
                    VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
                ";
                $params = [
                    $q1, $q2, $q3, $q4,
                    $q5_csv, ($q5_other !== '' ? $q5_other : null), ($q6 !== '' ? $q6 : null),
                    $q7, ($q7_other !== '' ? $q7_other : null),
                    $q8_csv, ($q8_other !== '' ? $q8_other : null),
                    ($q9 !== '' ? $q9 : null),
                ];

                $stmtIns = sqlsrv_query($conn, $sqlIns, $params);

                if ($stmtIns === false) {
                    sqlsrv_rollback($conn);
                    $errors[] = "Speichern fehlgeschlagen (Antworten). " . print_r(sqlsrv_errors(), true);
                } else {
                    sqlsrv_commit($conn);
                    $success = true;
                    $alreadyVoted = true;
                }
            }
        }
    }
}
?>

<?php if ($success): ?>
    <p><b>Danke!</b> Deine Antwort wurde gespeichert.</p>
<?php endif; ?>

<?php if ($alreadyVoted && !$success && !$errors): ?>
    <p><h2><b>Hinweis:</b> Du hast bereits abgestimmt.</h2></p>
<?php endif; ?>

<?php if ($errors): ?>
    <div style="border:1px solid #cc0000; padding:10px; margin:10px 0;">
        <b>Bitte korrigieren:</b>
        <ul>
            <?php foreach ($errors as $e): ?>
                <li><?php echo h($e); ?></li>
            <?php endforeach; ?>
        </ul>
    </div>
<?php endif;?>

<?php if ($geschlossen): 
		echo "<p><b>Danke!</b> Umfrage abgeschlossen.</p>";

	else:
?>
	<form id="coffeeSurvey" method="post" action="<?php echo h($_SERVER["PHP_SELF"]); ?>">

		<label for="q1_listease">Wie einfach ist die Kaffeeliste für dich zu benutzen?</label><br>
		<select name="q1_listease" id="q1_listease" required>
			<option value="">Bitte wählen</option>
			<?php for ($i=1;$i<=5;$i++): ?>
				<?php
				  $text = ($i===1) ? "1 (sehr einfach)" : (($i===5) ? "5 (sehr schwierig)" : (string)$i);
				  $sel = ((string)post('q1_listease','') === (string)$i) ? "selected" : "";
				?>
				<option value="<?php echo $i; ?>" <?php echo $sel; ?>><?php echo h($text); ?></option>
			<?php endfor; ?>
		</select>
		<br><br>

		<label for="q2_listsat">Wie zufrieden bist du mit der Kaffeeliste insgesamt?</label><br>
		<select name="q2_listsat" id="q2_listsat" required>
			<option value="">Bitte wählen</option>
			<?php for ($i=1;$i<=5;$i++): ?>
				<?php
				  $text = ($i===1) ? "1 (sehr zufrieden)" : (($i===5) ? "5 (sehr unzufrieden)" : (string)$i);
				  $sel = ((string)post('q2_listsat','') === (string)$i) ? "selected" : "";
				?>
				<option value="<?php echo $i; ?>" <?php echo $sel; ?>><?php echo h($text); ?></option>
			<?php endfor; ?>
		</select>
		<br><br>

		<label for="q3_quality">Wie zufrieden bist du mit der Kaffeequalität insgesamt?</label><br>
		<select name="q3_quality" id="q3_quality" required>
			<option value="">Bitte wählen</option>
			<?php for ($i=1;$i<=5;$i++): ?>
				<?php
				  $text = ($i===1) ? "1 (sehr zufrieden)" : (($i===5) ? "5 (sehr unzufrieden)" : (string)$i);
				  $sel = ((string)post('q3_quality','') === (string)$i) ? "selected" : "";
				?>
				<option value="<?php echo $i; ?>" <?php echo $sel; ?>><?php echo h($text); ?></option>
			<?php endfor; ?>
		</select>
		<br><br>

		<label for="q4_websat">Wie zufrieden bist du mit der Webseite der Kaffeeliste insgesamt?</label><br>
		<select name="q4_websat" id="q4_websat" required>
			<option value="">Bitte wählen</option>
			<?php for ($i=1;$i<=5;$i++): ?>
				<?php
				  $text = ($i===1) ? "1 (sehr zufrieden)" : (($i===5) ? "5 (sehr unzufrieden)" : (string)$i);
				  $sel = ((string)post('q4_websat','') === (string)$i) ? "selected" : "";
				?>
				<option value="<?php echo $i; ?>" <?php echo $sel; ?>><?php echo h($text); ?></option>
			<?php endfor; ?>
		</select>
		<br><br>

		<label>Welche Kaffeearten/Sorten trinkst du am häufigsten? (Mehrfachauswahl)</label><br>
		<?php foreach ($drinks as $val => $label): ?>
			<?php $checked = in_array($val, postArr('q5_drinks'), true) ? "checked" : ""; ?>
			<input type="checkbox" name="q5_drinks[]" value="<?php echo h($val); ?>" <?php echo $checked; ?>>
			<?php echo h($label); ?><br>
		<?php endforeach; ?>
		<br>
		<label for="q5_drinks_other">Andere (Text):</label><br>
		<input type="text" name="q5_drinks_other" id="q5_drinks_other" value="<?php echo h((string)post('q5_drinks_other','')); ?>">
		<br><br>

		<label for="q6_newvarieties">Welche zusätzlichen Sorten würdest du dir wünschen? (Freitext)</label><br>
		<textarea name="q6_newvarieties" id="q6_newvarieties" rows="3"><?php echo h((string)post('q6_newvarieties','')); ?></textarea>
		<br><br>

		<label for="q7_problem">Was ist dein häufigstes Problem mit der Kaffeeliste?</label><br>
		<select name="q7_problem" id="q7_problem" required>
			<option value="">Bitte wählen</option>
			<?php foreach ($problems as $val => $label): ?>
				<?php $sel = ((string)post('q7_problem','') === (string)$val) ? "selected" : ""; ?>
				<option value="<?php echo h($val); ?>" <?php echo $sel; ?>><?php echo h($label); ?></option>
			<?php endforeach; ?>
		</select>
		<br><br>

		<label for="q7_problem_other">Sonstiges (Text):</label><br>
		<input type="text" name="q7_problem_other" id="q7_problem_other" value="<?php echo h((string)post('q7_problem_other','')); ?>">
		<br><br>

		<label>Welche Verbesserungen wünschst du dir für die Kaffeeliste? (Mehrfachauswahl)</label><br>
		<?php foreach ($improvements as $val => $label): ?>
			<?php $checked = in_array($val, postArr('q8_improvements'), true) ? "checked" : ""; ?>
			<input type="checkbox" name="q8_improvements[]" value="<?php echo h($val); ?>" <?php echo $checked; ?>>
			<?php echo h($label); ?><br>
		<?php endforeach; ?>
		<br>
		<label for="q8_improvements_other">Sonstiges (Text):</label><br>
		<input type="text" name="q8_improvements_other" id="q8_improvements_other" value="<?php echo h((string)post('q8_improvements_other','')); ?>">
		<br><br>


		<label for="q9_betterideas">Was kann die Kaffeeliste noch besser machen? (Freitext)</label><br>
		<textarea name="q9_betterideas" id="q9_betterideas" rows="4"><?php echo h((string)post('q9_betterideas','')); ?></textarea>
		<br><br>

		<input type="hidden" name="aktion" value="umfrage_absenden">
		<button type="submit" <?php echo $alreadyVoted ? 'disabled' : ''; ?>>Umfrage absenden</button>
	</form>
<?php
 endif;?>

<?php

}else{
	echo "<h2>Sie haben keine Zugang zu dieser Webseite</h2>";
}
?>

    </div>
</section>

<?php include "footer.php"; 

?>