#include "headers/Park_spot.h" // constructors Park_spot::Park_spot() : parked{nullptr}, id{auto_increment_db() + 1}, taken{false} { save_db(); } Park_spot::Park_spot(Customer* parked_, int id_, bool taken_) : parked{nullptr}, id{id_}, taken{taken_} // TODO: think about how init parked? {} Park_spot::~Park_spot() { update_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 = '';"; 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, to_string(id)); 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; }