diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/controllers/Controller.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/controllers/Controller.cpp index ddf5354..d536e8a 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/controllers/Controller.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/controllers/Controller.cpp @@ -32,10 +32,12 @@ void Controller::updateUserDetails(const std::string& email, const std::string& util::Map Controller::getServices() { + return util::Map(); } util::Map Controller::getComboPackages() { + return util::Map(); } void Controller::purchaseService(const util::Vector& serviceIDs, const std::string& vehicleNumber, const std::string& vehicleBrand, const std::string& vehicleModel) @@ -48,6 +50,7 @@ void Controller::purchaseComboPackage(const std::string& comboPackageID, const s util::Map Controller::getInventoryItems() { + return util::Map(); } const InventoryItem* Controller::getInventoryItem(const std::string& inventoryItemID) @@ -65,18 +68,22 @@ void Controller::removeInventoryItem(const std::string& inventoryItemID) util::Map Controller::getServiceBookings() { + return util::Map(); } util::Map Controller::getServiceBookingsByUser(const std::string userID) { + return util::Map(); } util::Map Controller::getUsers() { + return util::Map(); } util::Map Controller::getUsers(util::UserType userType) { + return util::Map(); } void Controller::createJobCard(const std::string& bookingID, const std::string& technicianID, const std::string& serviceID) @@ -123,6 +130,7 @@ void Controller::completePayment(const std::string& invoiceID, util::PaymentMode util::Vector Controller::getNotifications() { + return util::Vector(); } void Controller::deleteNotification(const std::string& notificationID) diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.cpp index 300ebfc..6216922 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.cpp @@ -4,12 +4,14 @@ int ComboPackage::m_uid = 0; ComboPackage::ComboPackage() : m_id("CMP" + std::to_string(++m_uid)), + m_status(util::State::ACTIVE), m_discountPercentage(0.0) {} ComboPackage::ComboPackage(const std::string& packageName, double discountPercentage, const util::Map& services) : m_id("CMP" + std::to_string(++m_uid)), m_packageName(packageName), m_discountPercentage(discountPercentage), + m_status(util::State::ACTIVE), m_services(services) {} const std::string& ComboPackage::getId() const @@ -27,6 +29,11 @@ double ComboPackage::getDiscountPercentage() const return m_discountPercentage; } +util::State ComboPackage::getState() const +{ + return m_status; +} + const util::Map& ComboPackage::getServices() const { return m_services; @@ -50,4 +57,9 @@ void ComboPackage::setDiscountPercentage(double discountPercentage) void ComboPackage::setServices(const util::Map& services) { m_services = services; -} \ No newline at end of file +} + +void ComboPackage::setState(util::State status) +{ + m_status = status; +} diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.h index 38a04a1..4b28d54 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/ComboPackage.h @@ -1,6 +1,7 @@ #pragma once #include #include "Map.h" +#include "Enums.h" class Service; @@ -12,6 +13,7 @@ private: std::string m_packageName; double m_discountPercentage; util::Map m_services; + util::State m_status; public: ComboPackage(); ComboPackage(const std::string& packageName, double discountPercentage, const util::Map& services); @@ -19,8 +21,10 @@ public: const std::string& getPackageName() const; double getDiscountPercentage() const; const util::Map& getServices() const; + util::State getState() const; void setId(const std::string& id); void setPackageName(const std::string& packageName); void setDiscountPercentage(double discountPercentage); void setServices(const util::Map& services); + void setState(util::State status); }; \ No newline at end of file diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.cpp index 8a0f367..c3dbbaa 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.cpp @@ -5,12 +5,14 @@ int InventoryItem::m_uid = 0; InventoryItem::InventoryItem() : m_id("IIM" + std::to_string(++m_uid)), m_quantity(0), + m_status(util::State::ACTIVE), m_price(0.0) {} InventoryItem::InventoryItem(const std::string& partName, int quantity, double price) : m_id("IIM" + std::to_string(++m_uid)), m_partName(partName), m_quantity(quantity), + m_status(util::State::ACTIVE), m_price(price) {} const std::string& InventoryItem::getId() const @@ -33,6 +35,11 @@ double InventoryItem::getPrice() const return m_price; } +util::State InventoryItem::getState() const +{ + return m_status; +} + void InventoryItem::setId(const std::string& id) { m_id = id; @@ -51,4 +58,9 @@ void InventoryItem::setQuantity(int quantity) void InventoryItem::setPrice(double price) { m_price = price; +} + +void InventoryItem::setState(util::State status) +{ + m_status = status; } \ No newline at end of file diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.h index 9c23e04..d9618bc 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/InventoryItem.h @@ -1,5 +1,6 @@ #pragma once #include +#include "Enums.h" class InventoryItem { @@ -9,6 +10,7 @@ private: std::string m_partName; int m_quantity; double m_price; + util::State m_status; public: InventoryItem(); InventoryItem(const std::string& partName, int quantity, double price); @@ -16,8 +18,10 @@ public: const std::string& getPartName() const; int getQuantity() const; double getPrice() const; + util::State getState() const; void setId(const std::string& id); void setPartName(const std::string& partName); void setQuantity(int quantity); void setPrice(double price); + void setState(util::State status); }; \ No newline at end of file diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/Service.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/Service.cpp index c49b2e4..fa7f509 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/Service.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/Service.cpp @@ -4,12 +4,14 @@ int Service::m_uid = 0; Service::Service() : m_id("SRV" + std::to_string(++m_uid)), + m_status(util::State::ACTIVE), m_laborCost(0.0) {} Service::Service(const std::string& name, const util::Map& requiredInventoryItems, double laborCost) : m_id("SRV" + std::to_string(++m_uid)), m_name(name), m_requiredInventoryItems(requiredInventoryItems), + m_status(util::State::ACTIVE), m_laborCost(laborCost) {} const std::string& Service::getId() const @@ -32,6 +34,11 @@ double Service::getLaborCost() const return m_laborCost; } +util::State Service::getState() const +{ + return m_status; +} + void Service::setId(const std::string& id) { m_id = id; @@ -50,4 +57,9 @@ void Service::setRequiredInventoryItems(const util::Map #include "Map.h" +#include "Enums.h" class InventoryItem; @@ -12,6 +13,7 @@ private: std::string m_name; util::Map m_requiredInventoryItems; double m_laborCost; + util::State m_status; public: Service(); Service(const std::string& name, const util::Map& requiredInventoryItems, double laborCost); @@ -19,8 +21,10 @@ public: const std::string& getName() const; const util::Map& getRequiredInventoryItems() const; double getLaborCost() const; + util::State getState() const; void setId(const std::string& id); void setName(const std::string& name); void setRequiredInventoryItems(const util::Map& requiredInventoryItems); void setLaborCost(double laborCost); + void setState(util::State status); }; \ No newline at end of file diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.cpp index 4ac1ce6..70d1ec8 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.cpp @@ -6,7 +6,8 @@ int User::m_uid = 0; User::User() : m_id("USR" + std::to_string(++m_uid)), - m_type(util::UserType()) {} + m_type(util::UserType::CUSTOMER), + m_status(util::State::ACTIVE) {} User::User(const std::string& userName, const std::string& password, const std::string& name, const std::string& phone, const std::string& email, util::UserType role) : m_id("USR" + std::to_string(++m_uid)), @@ -15,7 +16,8 @@ User::User(const std::string& userName, const std::string& password, const std:: m_name(name), m_phone(phone), m_email(email), - m_type(role) {} + m_type(role), + m_status(util::State::ACTIVE) {} User::~User() { @@ -65,6 +67,11 @@ util::UserType User::getUserType() const return m_type; } +util::State User::getState() const +{ + return m_status; +} + void User::setId(const std::string& id) { m_id = id; @@ -103,4 +110,9 @@ void User::addNotification(Notification* notification) void User::setRole(util::UserType role) { m_type = role; -} \ No newline at end of file +} + +void User::setState(util::State status) +{ + m_status = status; +} diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.h index 9bc848c..b03fc81 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/models/User.h @@ -18,6 +18,7 @@ private: std::string m_email; util::Map m_notifications; util::UserType m_type; + util::State m_status; public: User(); User(const std::string& userName, const std::string& password, const std::string& name, const std::string& phone, const std::string& email, util::UserType role); @@ -30,6 +31,7 @@ public: const std::string& getEmail() const; util::Map& getNotifications(); util::UserType getUserType() const; + util::State getState() const; void setId(const std::string& id); void setUserName(const std::string& userName); void setPassword(const std::string& password); @@ -38,4 +40,5 @@ public: void setEmail(const std::string& email); void addNotification(Notification* notification); void setRole(util::UserType role); + void setState(util::State status); }; diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Enums.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Enums.h index a9eb8e5..24bbdcd 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Enums.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Enums.h @@ -28,6 +28,12 @@ namespace util COMPLETED }; + enum class State + { + ACTIVE, + INACTIVE + }; + inline std::string getUserTypeString(UserType type) { switch (type) @@ -135,4 +141,29 @@ namespace util } throw std::invalid_argument("Invalid ServiceJobStatus string"); } + + inline std::string getStateString(State status) + { + switch (status) + { + case State::ACTIVE: + return "STARTED"; + case State::INACTIVE: + return "COMPLETED"; + } + throw std::invalid_argument("Invalid State"); + } + + inline State getState(const std::string& value) + { + if (value == "ACTIVE") + { + return State::ACTIVE; + } + if (value == "COMPLETED") + { + return State::INACTIVE; + } + throw std::invalid_argument("Invalid State string"); + } } diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/CustomerMenu.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/CustomerMenu.cpp index c9cc854..047f471 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/CustomerMenu.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/CustomerMenu.cpp @@ -1,7 +1,29 @@ #include "CustomerMenu.h" +#include "InputHelper.h" +#include "OutputHelper.h" void CustomerMenu::showMenu() { + bool isMenuActive = true; + while (isMenuActive) + { + try + { + int choice; + util::clear(); + std::cout << "" << std::endl; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } } bool CustomerMenu::handleOperation(int choice) diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/TechnicianMenu.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/TechnicianMenu.cpp index 91b2a14..d6c4d57 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/TechnicianMenu.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/TechnicianMenu.cpp @@ -4,6 +4,26 @@ void TechnicianMenu::showMenu() { + bool isMenuActive = true; + while (isMenuActive) + { + try + { + int choice; + util::clear(); + std::cout << "" << std::endl; + util::read(choice); + if (!handleOperation(choice)) + { + isMenuActive = false; + } + } + catch (const std::exception& e) + { + std::cout << "Exception: " << e.what() << std::endl; + util::pressEnter(); + } + } } bool TechnicianMenu::handleOperation(int choice)