aboutsummaryrefslogtreecommitdiffstats
path: root/src/Utilities/GetEssen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Utilities/GetEssen.cpp')
-rw-r--r--src/Utilities/GetEssen.cpp250
1 files changed, 0 insertions, 250 deletions
diff --git a/src/Utilities/GetEssen.cpp b/src/Utilities/GetEssen.cpp
deleted file mode 100644
index 56742cc..0000000
--- a/src/Utilities/GetEssen.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-//
-// Created by max on 18.12.18.
-//
-
-#include "Utilities/GetEssen.hpp"
-
-
-using namespace boost::posix_time;
-
-void returnEssen(Mongoose::Request &request, Mongoose::JsonResponse &response){
- std::cout << "mensa was called\n";
- mensa Mensa_ID;
- std::string mensa_name = request.get("argument1", "adlershof");
- std::string offset_request = request.get("argument2", "0");
-
-
- if(mensa_name == "adlershof"){
- Mensa_ID = mensa::Adlershof;
- } else if(mensa_name == "nord"){
- Mensa_ID = mensa::Nord;
- }else if (mensa_name == "sued" || mensa_name == "süd"){
- Mensa_ID = mensa::Sued;
- }
-
- int offset = std::stoi(offset_request);
-
-
- response["success"] = "1";
- response["session"] = "NULL";
- response["text"] = getEssen(Mensa_ID, offset);
-
-
-}
-
-bool db_update_mensa_message(const int& mensaID, const ptime& mensaDatum, const string& message){
- sqdb::Db db("../main.sqlite");
- string newTime = to_simple_string(ptime(second_clock::local_time()));
- string mensaDatumString = to_string(mensaDatum.date().year()) + "-" + mensaDatum.date().month().as_short_string() + "-" + to_string(mensaDatum.date().day().as_number());
- sqdb::QueryStr str;
- db.Query(str.Format(SQDB_MAKE_TEXT("update mensa set Message = '%s', LastModified = '%s' where ID = %i and Datum = '%s';"), message.c_str(), newTime.c_str(), mensaID, mensaDatumString.c_str())).Next();
- return true;
-}
-
-bool db_insert_mensa_message(const int& mensaID, const ptime& mensaDatum, const string& message){
- sqdb::Db db("../main.sqlite");
- string newTime = to_simple_string(ptime(second_clock::local_time()));
- string mensaDatumString = to_string(mensaDatum.date().year()) + "-" + mensaDatum.date().month().as_short_string() + "-" + to_string(mensaDatum.date().day().as_number());
- sqdb::QueryStr str;
- db.Query(str.Format(SQDB_MAKE_TEXT("insert into mensa values(%i, '%s', '%s', '%s');"), mensaID, message.c_str(), mensaDatumString.c_str(), newTime.c_str())).Next();
- return true;
-}
-
-Mensa_Essen db_get_mensa_message(const int& mensaID, const ptime& mensaDatum) {
- Mensa_Essen out;
- sqdb::Db db("../main.sqlite");
-
- sqdb::QueryStr str;
- string mensaDatumString = to_string(mensaDatum.date().year()) + "-" + mensaDatum.date().month().as_short_string() + "-" + to_string(mensaDatum.date().day().as_number());
- sqdb::Statement s = db.Query(str.Format(SQDB_MAKE_TEXT("SELECT * from mensa WHERE Datum = '%s' AND ID = %i;"), mensaDatumString.c_str(), mensaID ));
-
- try {
- if(s.Next()) {
- int ID = s.GetField(0);
- string Message = s.GetField(1);
- string Datum = s.GetField(2);
- string LastModified = s.GetField(3);
-
-
- ptime LMDate(time_from_string(LastModified));
-
- out.ID = ID;
- out.Message = Message;
- out.Datum = mensaDatum;
- out.LastModified = LMDate;
- return out;
- }
- } catch (sqdb::Exception &exception){
- log("Error code: " + to_string(exception.GetErrorCode()) + " Error Message: " + exception.GetErrorMsg() + "\n");
- }
- out.ID = -2;
- return out;
-
-}
-
-string getEssen(const int mensa_ID, const int offset) {
- Mensa_Essen Essen;
- if (offset >= 0) {
-
- if (offset > 28) {
- return "Ich fühle mich geschmeichelt, dass du denkst, dass ich so weit in die Zukunft gucken kann (0 bis 28 Tage)";
- }
-
- ptime datumNow = second_clock::local_time();
- ptime datumEssen = datumNow + (boost::gregorian::days(offset));
-
- Essen = db_get_mensa_message(mensa_ID, datumEssen);
- if (Essen.ID == -2) { // SQL got nothing back :/
- //log("sql got nothing back!");
- if (downloadMensaFile(mensa_ID, datumEssen) != CURLE_OK){
- log("Error downloading file");
- return "Error downloading file!";
- }
- db_insert_mensa_message(mensa_ID, datumEssen, read_mensa_message_from_file(mensa_ID));
- Essen = db_get_mensa_message(mensa_ID, datumEssen);
-
- string out;
- switch (Essen.ID) {
- case mensa::Adlershof :
- out = "<b>Mensa Adlershof</b> am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
- case mensa ::Nord:
- out = "<b>Mensa Nord</b> am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
- case mensa::Sued :
- out = "<b>Mensa Sued</b> am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
- default:
- out = "Mensa Unbekannt am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
-
- }
- out += Essen.Message;
- out += "\n (Stand: " + to_simple_string(Essen.LastModified) + ")\n";
-
- return out;
- }
-
- if (Essen.LastModified + hours(2) < datumNow) { //LastModified is more than 2 hours old
- if (downloadMensaFile(mensa_ID, datumEssen) != CURLE_OK) {
- return "Error downloading file!";
- }
-
- db_update_mensa_message(mensa_ID, datumEssen, read_mensa_message_from_file(mensa_ID));
- Essen = db_get_mensa_message(mensa_ID, datumEssen);
- }
- string out;
- switch (Essen.ID) {
- case mensa::Adlershof :
- out = "<b>Mensa Adlershof</b> am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
- case mensa::Nord :
- out = "<b>Mensa Nord</b> am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
- case mensa::Sued :
- out = "<b>Mensa Sued</b> am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
- default:
- out = "Mensa Unbekannt am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":";
- break;
-
- }
- out += Essen.Message;
- out += "\n (Stand: " + to_simple_string(Essen.LastModified) + ")\n";
- return out;
- } else return "Wer denkst du bin ich? Ein Zeitreisender?\nIch kann zwar in die Zukunft gucken, aber nur 28 Tage";
-
-}
-
-string read_mensa_message_from_file(const int& mensa_id_file) {
- string s;
- string out;
- bool serious = false;
-
- std::ifstream inFile(std::to_string(mensa_id_file));
- while (std::getline(inFile, s)) {
- //out += mensa;
- if (s.find("15.png") != string::npos && serious) {
- string vegan;
-
- int vegan_byte[4] = {0xF0, 0x9F, 0x8C, 0xB1};
- for (int i : vegan_byte) {
- vegan += (char) i;
- }
-
- out += vegan;
- }
-
- if (s.find("1.png") != string::npos && serious) {
- string vegetarian;
-
- int vegetarian_byte[4] = {0xF0, 0x9F, 0x8C, 0xBD};
- for (int i : vegetarian_byte) {
- vegetarian += (char) i;
- }
-
- out += vegetarian;
- }
- if (s.find("splIcon") != string::npos && serious && s.find("1.png") == string::npos &&
- s.find("15.png") == string::npos) {
- string emptyEmoji;
- int emptyEmoji_byte[6] = {0xE2, 0x98, 0xA3, 0xEF, 0xB8, 0x8F};
- for (int i : emptyEmoji_byte) {
- emptyEmoji += (char) i;
- }
-
- out += emptyEmoji;
- }
-
- if (s.find("splGroup\"") != string::npos) { //Getting the Category of the Meal
- for (int i = 0, j = 0; (unsigned) i < s.length(); ++i) {
- if (s.at(i) == '>') {
- j = i + 1;
- }
- if (s.at(i) == '<' && j != 0) {
- s = s.substr(j, i - j);
- j = 0;
- }
-
- }
- serious = (s == "Aktionen" || s == "Essen" || s == "Beilagen");
- if (serious) {
- out += "\n<b>" + s + "</b>\n";
- }
- }
- if (s.find("class=\"bold\"") != string::npos && serious) { //Getting the Meal
- for (int i = 0, j = 0; (unsigned) i < s.length(); ++i) {
- if (s.at(i) == '>') {
- j = i + 1;
- //logStatus("Zeichen > gefunden in Position" + std::to_string(i));
- }
- if (s.at(i) == '<' && j != 0) {
- s = s.substr(j, i - j);
- j = 0;
- }
-
- }
-
- out += "\t" + s;
- }
-
- if (s.find("euro;") != string::npos && serious) { //geting the price of each Meal
- for (int i = 0, j = 0; (unsigned) i < s.length(); ++i) {
- if (s.at(i) == ';') {
- j = i + 1;
- }
- if (s.at(i) == '/') {
- s = s.substr(j, i - j);
- j = 0;
- }
- }
- out += "\t<b>" + s + "</b>€\n";
- }
- }
-
- if (out.empty()) {
- return "Heute kein Essen";
- }
- return out;
-
-}