diff --git a/headerline.php b/headerline.php new file mode 100644 index 0000000..06d7405 Binary files /dev/null and b/headerline.php differ diff --git a/hinweise.php b/hinweise.php new file mode 100644 index 0000000..8b4b4a5 --- /dev/null +++ b/hinweise.php @@ -0,0 +1,95 @@ + + + + + + + + \ No newline at end of file diff --git a/index.php b/index.php index e69de29..e643852 100644 --- a/index.php +++ b/index.php @@ -0,0 +1,241 @@ + + + + + + + + \ No newline at end of file diff --git a/jahresauswertung.php b/jahresauswertung.php new file mode 100644 index 0000000..1a98f71 --- /dev/null +++ b/jahresauswertung.php @@ -0,0 +1,177 @@ + "Automatisierungsclient", + "Uid" => "ac_admin", + "PWD" => "allacc3ssPW", + "TrustServerCertificate"=>true +); + +$stricheAnzupassen = 490; // Anzahl der neuen Striche +$betragProStrich = 0.20; // Betrag pro Strich in Euro + +// Testmodus aktivieren +$testmodus = false; + + + +use PHPMailer\PHPMailer\PHPMailer; +use PHPMailer\PHPMailer\SMTP; +use PHPMailer\PHPMailer\Exception; + +require 'PHPMailer/src/Exception.php'; +require 'PHPMailer/src/PHPMailer.php'; +require 'PHPMailer/src/SMTP.php'; + +// PHPMailer konfigurieren +function sendeMail($empfaenger, $betreff, $inhalt, $testmodus) +{ + $mail = new PHPMailer(true); + + try { + // Server-Einstellungen + $mail->isSMTP(); + $mail->Host = 'smtpv.aoknds.aok'; // SMTP-Server + $mail->Timeout = 180; + $mail->SMTPAuth = false; + $mail->Port = 25; + + // Absender + $mail->setFrom('kaffeelistesb3@nds.aok.de', 'Kaffeeliste'); + + // Empfänger + if ($testmodus) { + $mail->addAddress('kaffeelistesb3@nds.aok.de'); // Testadresse + } else { + $mail->addAddress($empfaenger); // Tatsächlicher Empfänger + } + + // Inhalt + $mail->isHTML(true); + $mail->Subject = $betreff; + $mail->Body = utf8_decode($inhalt); + + // Senden + $mail->send(); + echo "E-Mail erfolgreich gesendet an: " . ($testmodus ? 'kaffeelistesb3@nds.aok.de' : $empfaenger) . "\n"; + } catch (Exception $e) { + echo "E-Mail konnte nicht gesendet werden. Fehler: {$mail->ErrorInfo}\n"; + } +} + +// Verbindung herstellen +$conn = sqlsrv_connect($serverName, $connectionOptions); +if ($conn === false) { + die(print_r(sqlsrv_errors(), true)); +} + +// Aktuelles Jahr ermitteln +$currentYear = date("Y"); + +// SQL-Abfrage: Gesamtanzahl der Striche pro Mitarbeiter im aktuellen Jahr mit Namen und E-Mail +$sql = " + SELECT + m.MitarbeiterID, + m.Name, + m.Email, + SUM(v.AnzahlStriche) AS GesamtStriche + FROM kl_Kaffeeverbrauch v + JOIN kl_Mitarbeiter m ON v.MitarbeiterID = m.MitarbeiterID + WHERE YEAR(v.Datum) = ? AND m.aktiv = 1 + GROUP BY m.MitarbeiterID, m.Name, m.Email +"; +$params = [$currentYear]; +$stmt = sqlsrv_query($conn, $sql, $params); + +if ($stmt === false) { + die(print_r(sqlsrv_errors(), true)); +} + +// Ergebnisse verarbeiten +$mitarbeiterDaten = []; +$gesamtStriche = 0; + +while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + $mitarbeiterDaten[] = $row; + $gesamtStriche += $row['GesamtStriche']; +} + +echo $gesamtStriche; + +// Neue Striche proportional verteilen +$verteilung = []; + +foreach ($mitarbeiterDaten as $mitarbeiter) { + $mitarbeiterID = $mitarbeiter['MitarbeiterID']; + $anteil = $mitarbeiter['GesamtStriche'] / $gesamtStriche; + $neueStriche = round($anteil * $stricheAnzupassen); + $betrag = $neueStriche * $betragProStrich; + + $verteilung[] = [ + 'MitarbeiterID' => $mitarbeiterID, + 'Name' => $mitarbeiter['Name'], + 'Email' => $mitarbeiter['Email'], + 'JahrStriche' => $mitarbeiter['GesamtStriche'], + 'NeueStriche' => $neueStriche, + 'Betrag' => $betrag + ]; + + // SQL-Befehl vorbereiten + $insertSql = " + INSERT INTO kl_Einzahlungen (MitarbeiterID, Betrag, Datum) + VALUES (?, ?, GETDATE()) + "; + $insertParams = [$mitarbeiterID, $betrag]; + + if ($testmodus) { + // SQL-Befehl und Parameter anzeigen + echo "SQL-Befehl: $insertSql\n"; + echo "Parameter: " . json_encode($insertParams) . "\n"; + // E-Mail vorbereiten + + } else { + // SQL-Befehl ausführen + $insertStmt = sqlsrv_query($conn, $insertSql, $insertParams); + if ($insertStmt === false) { + die(print_r(sqlsrv_errors(), true)); + } + // E-Mail vorbereiten + + } + + + + $betreff = "Kaffeeliste - Weihnachten"; + $inhalt = " +

Hallo {$mitarbeiter['Name']},

+

vielen Dank für deine Nutzung der Kaffeeliste in diesem Jahr!

+

Du hast dieses Jahr {$mitarbeiter['GesamtStriche']} Kaffee bezogen.

+

Deswegen wurden dir $betrag Euro auf deinem Konto gutgeschrieben.

+

+

Wir wünschen dir eine frohe Weihnachtszeit und einen guten Rutsch ins neue Jahr.

+

Deine ARGE Kaffeeliste

+ "; + $empfaenger = $mitarbeiter['Email']; + // E-Mail senden + sendeMail($empfaenger, $betreff, $inhalt, $testmodus); + + +} + + + +// Sortiere die Verteilung nach JahrStriche (absteigend) +usort($verteilung, function ($a, $b) { + return $b['JahrStriche'] <=> $a['JahrStriche']; +}); + +// Ergebnisse ausgeben +header('Content-Type: application/json'); +#echo json_encode($verteilung, JSON_PRETTY_PRINT); + +// Verbindung schließen +sqlsrv_close($conn); +?> +