#include "headers/Park_spot.h" // constructors Park_spot::Park_spot(){ parked = nullptr; id = auto_increment_db() + 1; taken = false; save_db(); } // clock in en out, calls de juist(in/out) van de customer aan de hand van internal state van taken void Park_spot::clock(Customer* c_customer){ if (!taken){ parked = c_customer; taken = true; parked->clock_in(id); update_db(); } else{ taken = false; parked->clock_out(id); parked = nullptr; update_db(); } } // --------------------- db functs void Park_spot::update_db() { string statement = "UPDATE Park_spot SET taken = '', customer_id = '' where id = '';"; // 29, 48, 62 statement.insert(63, to_string(id)); if (taken){ statement.insert(49, to_string(parked->id)); statement.insert(30, "true"); } else { statement.insert(49, "NULL"); statement.insert(30, "false"); } data::db.exec(statement); } void Park_spot::save_db() { //(int id, bool taken, int customer_id) string statement{"insert into Park_spot values ( , , );"}; // after ( = 28) statement.insert(34, "NULL"); statement.insert(32, "false"); statement.insert(30, to_string(id)); SQLite::Transaction transaction(data::db); data::db.exec(statement); transaction.commit(); } void Park_spot::delete_db() { string statement = "delete from Park_spot where id= ;"; statement.insert(statement.length() - 2, std::to_string(id)); // std::cout << statement; SQLite::Transaction transaction(data::db); data::db.exec(statement); transaction.commit(); } int Park_spot::auto_increment_db() { SQLite::Statement max_id(data::db, "select max(id) from Park_spot;"); int id = 0; max_id.executeStep(); id = max_id.getColumn(0); max_id.reset(); return id; }