Remove hardcorded User Types and improve code readability

This commit is contained in:
Joel Thomas
2026-02-24 20:38:59 +05:30
parent 1263e0ebe1
commit b616c6490e
8 changed files with 31 additions and 21 deletions
@@ -1,5 +1,7 @@
#include "Customer.h" #include "Customer.h"
const std::string Customer::TYPE = "Customer";
void Customer::addOrder(std::shared_ptr<Order> orderPointer) void Customer::addOrder(std::shared_ptr<Order> orderPointer)
{ {
m_orders[orderPointer->getId()] = orderPointer; m_orders[orderPointer->getId()] = orderPointer;
@@ -12,5 +14,5 @@ orders& Customer::getOrders()
std::string Customer::getType() const std::string Customer::getType() const
{ {
return "Customer"; return TYPE;
} }
@@ -17,6 +17,7 @@ class Customer : public User
private: private:
orders m_orders; orders m_orders;
public: public:
static const std::string TYPE;
Customer(const std::string& username, Customer(const std::string& username,
const std::string& name, const std::string& name,
const std::string& phone, const std::string& phone,
@@ -5,6 +5,8 @@ Date: 18-02-2026
#include "DeliveryPartner.h" #include "DeliveryPartner.h"
const std::string DeliveryPartner::TYPE = "DeliveryPartner";
void DeliveryPartner::acceptDeliveryAssignment(std::shared_ptr<DeliveryAssignment> deliveryAssignmentPointer) void DeliveryPartner::acceptDeliveryAssignment(std::shared_ptr<DeliveryAssignment> deliveryAssignmentPointer)
{ {
m_deliveryAssignments[deliveryAssignmentPointer->getId()] = deliveryAssignmentPointer; m_deliveryAssignments[deliveryAssignmentPointer->getId()] = deliveryAssignmentPointer;
@@ -17,5 +19,5 @@ deliveryAssignments& DeliveryPartner::getAssignedDeliveries()
std::string DeliveryPartner::getType() const std::string DeliveryPartner::getType() const
{ {
return "DeliveryPartner"; return TYPE;
} }
@@ -17,6 +17,7 @@ class DeliveryPartner : public User
private: private:
deliveryAssignments m_deliveryAssignments; deliveryAssignments m_deliveryAssignments;
public: public:
static const std::string TYPE;
DeliveryPartner(const std::string& username, DeliveryPartner(const std::string& username,
const std::string& name, const std::string& name,
const std::string& phone, const std::string& phone,
@@ -10,6 +10,7 @@ Date: 22-12-2026
#include<fstream> #include<fstream>
#include<string> #include<string>
#include<stdexcept> #include<stdexcept>
template <typename T> using objects = std::map<int, std::shared_ptr<T>>; template <typename T> using objects = std::map<int, std::shared_ptr<T>>;
template <typename T> template <typename T>
@@ -448,15 +448,15 @@ void FoodDeliveryController::login()
std::unique_ptr<Menu> menu; std::unique_ptr<Menu> menu;
if (user.login(password)) if (user.login(password))
{ {
if (user.getType() == "RestaurantOwner") if (user.getType() == RestaurantOwner::TYPE)
{ {
menu = std::make_unique<RestaurantOwnerMenu>(*this, user.getName()); menu = std::make_unique<RestaurantOwnerMenu>(*this, user.getName());
} }
else if (user.getType() == "Customer") else if (user.getType() == Customer::TYPE)
{ {
menu = std::make_unique<CustomerMenu>(*this, user.getName()); menu = std::make_unique<CustomerMenu>(*this, user.getName());
} }
else if (user.getType() == "DeliveryPartner") else if (user.getType() == DeliveryPartner::TYPE)
{ {
menu = std::make_unique<DeliveryPartnerMenu>(*this, user.getName()); menu = std::make_unique<DeliveryPartnerMenu>(*this, user.getName());
} }
@@ -557,7 +557,7 @@ void FoodDeliveryController::registerUser()
void FoodDeliveryController::listRestaurants() const void FoodDeliveryController::listRestaurants() const
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -587,7 +587,7 @@ void FoodDeliveryController::addNewRestaurant()
{ {
std::string name; std::string name;
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -605,7 +605,7 @@ void FoodDeliveryController::updateRestaurantStatus() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -641,7 +641,7 @@ void FoodDeliveryController::listRestaurantOrders() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -704,7 +704,7 @@ void FoodDeliveryController::setOrderReady()
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -757,7 +757,7 @@ void FoodDeliveryController::listMenuItems() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -806,7 +806,7 @@ void FoodDeliveryController::addMenuItem() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -844,7 +844,7 @@ void FoodDeliveryController::removeMenuItem() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "RestaurantOwner")) if (!checkAccess(m_authenticatedUser, RestaurantOwner::TYPE))
{ {
return; return;
} }
@@ -881,7 +881,7 @@ void FoodDeliveryController::listCustomerOrders() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "Customer")) if (!checkAccess(m_authenticatedUser, Customer::TYPE))
{ {
return; return;
} }
@@ -940,7 +940,7 @@ void FoodDeliveryController::placeOrder()
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "Customer")) if (!checkAccess(m_authenticatedUser, Customer::TYPE))
{ {
return; return;
} }
@@ -1030,7 +1030,7 @@ void FoodDeliveryController::cancelOrder() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "Customer")) if (!checkAccess(m_authenticatedUser, Customer::TYPE))
{ {
return; return;
} }
@@ -1076,7 +1076,7 @@ void FoodDeliveryController::listDeliveryAssignments()
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "DeliveryPartner")) if (!checkAccess(m_authenticatedUser, DeliveryPartner::TYPE))
{ {
return; return;
} }
@@ -1122,7 +1122,7 @@ void FoodDeliveryController::acceptDeliveryAssignment()
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "DeliveryPartner")) if (!checkAccess(m_authenticatedUser, DeliveryPartner::TYPE))
{ {
return; return;
} }
@@ -1169,7 +1169,7 @@ void FoodDeliveryController::confirmDeliveryAssignment() const
try try
{ {
util::clear(); util::clear();
if (!checkAccess(m_authenticatedUser, "DeliveryPartner")) if (!checkAccess(m_authenticatedUser, DeliveryPartner::TYPE))
{ {
return; return;
} }
@@ -5,6 +5,8 @@ Date: 18-02-2026
#include "RestaurantOwner.h" #include "RestaurantOwner.h"
const std::string RestaurantOwner::TYPE = "RestaurantOwner";
void RestaurantOwner::addRestaurant(std::shared_ptr<Restaurant> restaurantPointer) void RestaurantOwner::addRestaurant(std::shared_ptr<Restaurant> restaurantPointer)
{ {
m_restaurants[restaurantPointer->getId()] = restaurantPointer; m_restaurants[restaurantPointer->getId()] = restaurantPointer;
@@ -17,5 +19,5 @@ restaurants& RestaurantOwner::getRestaurants()
std::string RestaurantOwner::getType() const std::string RestaurantOwner::getType() const
{ {
return "RestaurantOwner"; return TYPE;
} }
@@ -16,8 +16,9 @@ using restaurants = std::map<int, std::shared_ptr<Restaurant>>;
class RestaurantOwner : public User class RestaurantOwner : public User
{ {
private: private:
restaurants m_restaurants; restaurants m_restaurants;
public: public:
static const std::string TYPE;
RestaurantOwner(const std::string& username, RestaurantOwner(const std::string& username,
const std::string& name, const std::string& name,
const std::string& phone, const std::string& phone,