#include "headers/Interface.h" // I added it to pass spots, because the parking options need it to check where // is free parking_spots is declared in main, and if i declare it // liberal use of // cin.ignore(10000, '\n'); // so it skips to the next newline, in essence clearing the cin buffer void interface(vector& spots) { /* string introduction = "P A R K M A N N E"; //logo animation, disable during testing text_animation(introduction, 50); */ cout << "\nWelcome to the parking system. Please login.."; int id; string password; cout << "\nEnter your id: "; cin >> id; cin.ignore(10000, '\n'); Customer c = query_customer_with_id(id); cout << "\nEnter your password: "; std::getline(cin, password); while (!(verify_password(c.password, password))) { cout << "ERROR: wrong password. Please retype your password:\n"; std::getline(cin, password); } if(query_role_customer(id)==1){ interface_admin(spots); } else if(query_role_customer(id)==0){ interface_member(spots, c); } else { cout << "ERROR ROLE_INVALID.."; } } void interface_member(vector& spots,Customer& c) { cout << "Logged in succesfully\n"; cout << "select an option\n [1] Parking options\n[2]monthy report\n"; int option; cin >> option; cin.ignore(10000, '\n'); switch (option) { case 1: { park(c, spots); break; } case 2: { cout << "Has not been implemented yet\n"; break; } default: break; } } void interface_admin(vector& spots) { cout << "Welcome to the admin interface. It is not completely ready yet.\n"; cout << "[1] See monthly report of ALL parking spots\n"; cout << "[2] See weekly report of ALL parking spots\n"; cout << "[3] See monthly report of a specific parking spot\n"; cout << "[4] See weekly report of a specific parking spot\n"; cout << "[5] See current status of parking spots\n"; cout << "[6] Make new customer\n"; cout << "[7] Make new admin\n"; cout << "[8] Make new parking spot\n"; cout << "option[1-8]:"; int option; cin >> option; cin.ignore(10000, '\n'); switch (option) { case 1: { reports_from_allparkspots(); break; } case 2: { reports_from_allparkspots(true); break; } case 3: { cout << "Which parking spot would you like a report on?\nID:"; int spotid; cin >> spotid; cin.ignore(10000, '\n'); reports_from_parkspot(spotid); break; } case 4: { cout << "Which parking spot would you like a report on?\nID:"; int spotid; cin >> spotid; cin.ignore(10000, '\n'); reports_from_parkspot(spotid, true); break; } case 5: { current_status_parkspots(spots); break; } case 6: { new_customer(); break; } case 7: { new_admin(); } case 8: { new_parkspot(spots); break; } default: break; } } // --------- individual things. void park(Customer& c, vector& spots) { cout << "You have selected parking option"; if (!(c.parked())) { cout << "The following spots[which can fit your vehicle] are " "available: "; for (Park_spot i : spots) { if (i.v_type == c.vehicle) { cout << i.id << ", "; } } cout << "where do you want to park?"; int parkid; cin >> parkid; cin.ignore(10000, '\n'); for (Park_spot& i : spots) { if (i.id == parkid) { i.clock(c); cout << "You have parked sucessfully"; } } } else { cout << "You are parked at spot " << c.parked_at() << ", do you want to clock out?\n enter [1] for yes and [0] for no"; int answer = 0; cin >> answer; cin.ignore(10000, '\n'); if (answer) { query_parkspot_with_id(c.parked_at(), spots).clock(c); cout << "You have sucessfully clocked out."; } else { cout << "OK, have a nice day"; } } } void new_customer() { int vtype; string name; string password; string telephone; int role = 0; cout << "What's the name of the customer? "; std::getline(cin, name); cout << "What's the vehicle type? [1]twoweeler, [2] fourweeler: "; cin >> vtype; cin.ignore(10000, '\n'); cout << "What's the telephone number? "; std::getline(cin, telephone); cout << "What's the password?"; std::getline(cin, password); Customer newcustomer{name, password, Vehicle_type(vtype), telephone, role}; cout << "New customer sucessfully created\n"; newcustomer.update_db(); } void new_admin() { int vtype = 2; //revision required! string name; string password; string telephone; int role = 1; cout << "What's the name of the admin? "; std::getline(cin, name); cout << "What's the telephone number? "; std::getline(cin, telephone); cout << "What's the password?"; std::getline(cin, password); Customer newcustomer{name, password, Vehicle_type(vtype), telephone, role}; cout << "New customer sucessfully created\n"; newcustomer.update_db(); } void new_parkspot(vector& spots) { cout << "What type of parking spot? [1] twoweeler, [2] fourweeler: "; int vtype; cin >> vtype; cin.ignore(10000, '\n'); Park_spot newspot{Vehicle_type(vtype)}; spots.push_back(newspot); cout << "new parking spot sucessfully created.\n"; }