"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); ?>