Update DBPlan.cpp

This commit is contained in:
Chris-bot374
2024-07-07 22:04:41 +02:00
committed by GitHub
parent babbf65e07
commit 66cd03b957

View File

@@ -10,55 +10,116 @@ void DBPlan::vertretung(std::string tag, std::string stunde) {
std::string nextStunde; std::string nextStunde;
std::string nextTag = tag; std::string nextTag = tag;
std::string prevTag = tag; std::string prevTag = tag;
(dauer == "4") ? nextStunde = std::to_string(std::stoi(stunde) + 2) : if (dauer == "4") {
nextStunde = std::to_string(std::stoi(stunde) + 2);
}
else {
nextStunde = std::to_string(std::stoi(stunde) + 1); nextStunde = std::to_string(std::stoi(stunde) + 1);
}
if (prevStunde == "0") { if (prevStunde == "0") {
prevStunde = "5"; prevStunde = "5";
prevTag = std::to_string(std::stoi(tag) - 1); prevTag = std::to_string(std::stoi(tag) - 1);
if (prevTag == "0") if (prevTag == "0") {
prevTag = "5"; prevTag = "5";
} }
}
if (nextStunde == "6") { if (nextStunde == "6") {
nextStunde = "1"; nextStunde = "1";
nextTag = std::to_string(std::stoi(tag) + 1); nextTag = std::to_string(std::stoi(tag)+1);
if (nextTag == "6") if (nextTag == "6") {
nextTag = "1"; nextTag = "1";
} }
}
pqxx::work worker(connectionObject); pqxx::work worker(connectionObject);
pqxx::result response;
int i = 1;
while (i != 0) {
std::string query0 =
R"(SELECT Veranstalter_ID FROM Veranstalter_Veranstaltung_Uhrzeit WHERE veranstalter_ID IS NOT NULL AND uhrzeit_id = $1 AND tag = $2;)";
response = worker.exec_params(query0, prevStunde, prevTag);
worker.commit();
std::cout << response.size() << std::endl;
if (response.size() != 0) {
i = 0;
break;
}
prevStunde = std::to_string(std::stoi(prevStunde) - 1);
if (prevStunde == "0") {
prevStunde = "5";
prevTag = std::to_string(std::stoi(prevTag) - 1);
if (prevTag == "0") {
prevTag = "5";
}
}
}
pqxx::result res;
i = 1;
while (i != 0) {
std::string query00 =
R"(SELECT Veranstalter_ID FROM Veranstalter_Veranstaltung_Uhrzeit WHERE veranstalter_ID IS NOT NULL AND uhrzeit_id = $1 AND tag = $2;)";
res = worker.exec_params(query00, nextStunde, nextTag);
worker.commit();
if (response.size() != 0) {
i = 0;
break;
}
nextStunde = std::to_string(std::stoi(nextStunde) + 1);
if (nextStunde == "6") {
nextStunde = "1";
nextTag = std::to_string(std::stoi(nextTag) + 1);
if (nextTag == "6") {
nextTag = "1";
}
}
}
std::string query = std::string query =
R"(UPDATE Veranstalter_Veranstaltung_Uhrzeit SET Veranstalter_ID = R"(UPDATE Veranstalter_Veranstaltung_Uhrzeit SET Veranstalter_ID =
(SELECT ID FROM Veranstalter WHERE ID != (SELECT Veranstalter_ID FROM Veranstalter_Veranstaltung_Uhrzeit WHERE uhrzeit_id = $1 AND tag = $2 LIMIT 1) (SELECT ID FROM Veranstalter WHERE ID != (SELECT Veranstalter_ID FROM Veranstalter_Veranstaltung_Uhrzeit WHERE uhrzeit_id = $1 AND tag = $2 LIMIT 1)
AND ID != (SELECT Veranstalter_ID FROM Veranstalter_Veranstaltung_Uhrzeit WHERE uhrzeit_id = $3 AND tag = $4 LIMIT 1) AND ID != (SELECT Veranstalter_ID FROM Veranstalter_Veranstaltung_Uhrzeit WHERE uhrzeit_id = $3 AND tag = $4 LIMIT 1)
AND ID IN (SELECT ID FROM Veranstalter WHERE ID != $5 AND ID != $6 LIMIT 1)) AND uhrzeit_id != $5 AND tag != $6 LIMIT 1) WHERE uhrzeit_id = $7 AND tag = $8;)";
WHERE uhrzeit_id = $7 AND tag = $8;)";
pqxx::result response = worker.exec_params(query, prevStunde, prevTag, nextStunde, nextTag, stunde, tag, stunde, tag); response = worker.exec_params(query, prevStunde, prevTag, nextStunde, nextTag, stunde, tag, stunde, tag);
worker.commit( ); worker.commit();
if (response.affected_rows( ) == 0) {
if (response.affected_rows() == 0) {
meldeGesund(tag, stunde);
std::string query2 = std::string query2 =
"DELETE FROM Veranstalter_Veranstaltung_Uhrzeit WHERE tag = $1 and uhrzeit_id = $2"; "DELETE FROM Veranstalter_Veranstaltung_Uhrzeit WHERE tag = $1 AND uhrzeit_id = $2";
worker.exec_params(query2, tag, stunde); worker.exec_params(query2, tag, stunde);
worker.commit( ); worker.commit();
if (dauer == "4") { if (dauer == "4") {
std::string query3 = std::string query3 =
"DELETE FROM Veranstalter_Veranstaltung_Uhrzeit WHERE tag = $1 and uhrzeit_id = $2"; "DELETE FROM Veranstalter_Veranstaltung_Uhrzeit WHERE tag = $1 AND uhrzeit_id = $2";
worker.exec_params(query3, tag, nextStunde); worker.exec_params(query3, tag, nextStunde);
worker.commit( ); worker.commit();
} }
} else { }
else {
incarbeitszeit(tag, stunde, dauer); incarbeitszeit(tag, stunde, dauer);
if (dauer == "4") if (dauer == "4") {
upperHour(tag, stunde); upperHour(tag, stunde);
} }
} }
}
catch (const std::exception& e) { catch (const std::exception& e) {
fmt::println(e.what( )); fmt::println(e.what( ));
} }
} }
@@ -68,7 +129,7 @@ void DBPlan::meldeKrank(std::string id, std::string tag, std::string stunde) {
std::string query = std::string query =
"UPDATE Veranstalter SET krank = TRUE, tag = $1, uhrzeit_id = $2 WHERE ID = $3;"; "UPDATE Veranstalter SET krank = TRUE, tag = $1, uhrzeit_id = $2 WHERE ID = $3;";
pqxx::result response = worker.exec_params(query, tag, stunde, id); worker.exec_params(query, tag, stunde, id);
worker.commit( ); worker.commit( );
vertretung(tag, stunde); vertretung(tag, stunde);
@@ -79,10 +140,10 @@ void DBPlan::meldeKrank(std::string id, std::string tag, std::string stunde) {
} }
} }
void DBPlan::meldeGesund(std::string id) { void DBPlan::meldeGesund(std::string tag, std::string stunde) {
try { try {
pqxx::work worker(connectionObject); pqxx::work worker(connectionObject);
std::string query = "UPDATE Veranstalter SET krank = FALSE WHERE ID = $1;"; std::string query = "UPDATE Veranstalter SET krank = FALSE, uhrzeit_ID = 0, tag = 0 WHERE tag = $1 AND uhrzeit_id = $2;";
worker.exec_params(query, id); worker.exec_params(query, id);
worker.commit( ); worker.commit( );