Update DBPlan.cpp
This commit is contained in:
@@ -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( );
|
||||||
|
|||||||
Reference in New Issue
Block a user