Dateien nach "/" hochladen
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
<?php
|
||||
// Einstellungen
|
||||
// Verbindung zur Datenbank herstellen (ersetze die Platzhalter durch deine Daten)
|
||||
$serverName = "sql-nds-autoclient-prod.aoknds.aok";
|
||||
$connectionOptions = array(
|
||||
"Database" => "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 = "
|
||||
<p>Hallo {$mitarbeiter['Name']},</p>
|
||||
<p>vielen Dank für deine Nutzung der Kaffeeliste in diesem Jahr!</p>
|
||||
<p>Du hast dieses Jahr {$mitarbeiter['GesamtStriche']} Kaffee bezogen.</p>
|
||||
<p>Deswegen wurden dir $betrag Euro auf deinem Konto gutgeschrieben.</p>
|
||||
<br><br>
|
||||
<p>Wir wünschen dir eine frohe Weihnachtszeit und einen guten Rutsch ins neue Jahr.</p>
|
||||
<p>Deine ARGE Kaffeeliste</p>
|
||||
";
|
||||
$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);
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user