fix: Do not remove a menuItem from the database

- Do not remove a menuItem from the database
    - Set the removed MenuItem status to not available
    - In List Menu Items, list status of availability
    - In pickItemFromMenu, only display available MenuItems
This commit is contained in:
Joel Thomas
2026-02-23 15:08:46 +05:30
parent d6a22948b6
commit 914924a3a4
4 changed files with 194 additions and 169 deletions
@@ -85,9 +85,13 @@ static menuItems::iterator pickItemFromMenu(menuItems& restaurantMenuItems)
<< std::left << std::setw(50) << "Description"
<< std::left << std::setw(5) << "Price"
<< "\n";
for (menuItems::iterator menuItemIterator = restaurantMenuItems.begin(); menuItemIterator != restaurantMenuItems.end(); menuItemIterator++, menuItemIndex++)
std::map<int, menuItems::iterator> availableItems;
for (menuItems::iterator menuItemIterator = restaurantMenuItems.begin(); menuItemIterator != restaurantMenuItems.end(); menuItemIterator++)
{
auto& menuItem = *(menuItemIterator->second);
if (menuItem.isAvailable())
{
availableItems[menuItemIndex] = menuItemIterator;
std::cout
<< std::left << std::setw(8) << menuItemIndex
<< std::left << std::setw(5) << menuItem.getId()
@@ -95,17 +99,16 @@ static menuItems::iterator pickItemFromMenu(menuItems& restaurantMenuItems)
<< std::left << std::setw(50) << menuItem.getDescription()
<< std::left << std::setw(5) << menuItem.getPrice()
<< "\n";
menuItemIndex++;
}
}
std::cout << "\nSelect Index: ";
util::readValue<int>(menuItemChoiceIndex);
menuItemChoiceIndex--;
if (menuItemChoiceIndex < 0 || menuItemChoiceIndex >= restaurantMenuItems.size())
if (menuItemChoiceIndex < 1 || menuItemChoiceIndex > availableItems.size())
{
return restaurantMenuItems.end();
}
menuItems::iterator menuItemIterator = restaurantMenuItems.begin();
std::advance(menuItemIterator, menuItemChoiceIndex);
return menuItemIterator;
return availableItems[menuItemChoiceIndex];
}
static std::string getOrderStatusString(const OrderStatus& orderStatus)
@@ -766,14 +769,16 @@ void FoodDeliveryController::listMenuItems() const
std::cout << std::left << std::setw(5) << "ID"
<< std::left << std::setw(25) << "Name"
<< std::left << std::setw(50) << "Description"
<< std::left << std::setw(5) << "Price"
<< std::left << std::setw(10) << "Price"
<< std::left << std::setw(20) << "Status"
<< "\n";
for (auto& menuItemPointer : restaurantMenuItems)
{
std::cout << std::left << std::setw(5) << menuItemPointer.second->getId()
<< std::left << std::setw(25) << menuItemPointer.second->getName()
<< std::left << std::setw(50) << menuItemPointer.second->getDescription()
<< std::left << std::setw(5) << menuItemPointer.second->getPrice()
<< std::left << std::setw(10) << menuItemPointer.second->getPrice()
<< std::left << std::setw(10) << (menuItemPointer.second->isAvailable() ? "Available" : "Not Available")
<< "\n";
}
}
@@ -844,7 +849,7 @@ void FoodDeliveryController::removeMenuItem() const
menuItems::iterator menuItemIterator = pickItemFromMenu(restaurantMenuItems);
if (menuItemIterator != restaurantMenuItems.end())
{
restaurantMenuItems.erase(menuItemIterator);
menuItemIterator->second->makeUnavailable();
std::cout << "Removed Menu Item successfully\n";
}
else if (!restaurantMenuItems.empty())
@@ -10,11 +10,12 @@ Date: 18-02-2026
int MenuItem::m_uid = 0;
MenuItem::MenuItem(int id, const std::string& name, const std::string& description, double price, int restaurantId):
MenuItem::MenuItem(int id, const std::string& name, const std::string& description, double price, bool isAvailable, int restaurantId):
m_id(id),
m_name(name),
m_description(description),
m_price(price),
m_isAvailable(isAvailable),
m_restaurantId(restaurantId)
{
if (id > m_uid)
@@ -58,6 +59,16 @@ int MenuItem::getRestaurantId() const
return m_restaurantId;
}
bool MenuItem::isAvailable() const
{
return m_isAvailable;
}
void MenuItem::makeUnavailable()
{
m_isAvailable = false;
}
std::string MenuItem::serialize() const
{
std::ostringstream serializedMenuItem;
@@ -65,6 +76,7 @@ std::string MenuItem::serialize() const
<< m_name << '|'
<< m_description << '|'
<< m_price << '|'
<< (m_isAvailable ? '1' : '0') << '|'
<< m_restaurantId;
return serializedMenuItem.str();
}
@@ -73,6 +85,7 @@ std::shared_ptr<MenuItem> MenuItem::deserialize(const std::string& record)
{
int id, restaurantId;
double price;
bool isAvailable;
std::string name, description, token;
std::istringstream serializedMenuItem(record);
getline(serializedMenuItem, token, '|');
@@ -92,11 +105,13 @@ std::shared_ptr<MenuItem> MenuItem::deserialize(const std::string& record)
throw std::runtime_error("Invalid Price for MenuItem in snapshot");
}
getline(serializedMenuItem, token, '|');
isAvailable = ((token == "1") ? true : false);
getline(serializedMenuItem, token, '|');
try {
restaurantId = std::stoi(token);
}
catch (...) {
throw std::runtime_error("Invalid Restaurant ID for MenuItem in snapshot");
}
return std::make_shared<MenuItem>(id, name, description, price, restaurantId);
return std::make_shared<MenuItem>(id, name, description, price, isAvailable, restaurantId);
}
@@ -15,6 +15,7 @@ private:
std::string m_name;
std::string m_description;
double m_price;
bool m_isAvailable;
int m_restaurantId;
public:
MenuItem():
@@ -22,6 +23,7 @@ public:
m_name(""),
m_description(""),
m_price(0),
m_isAvailable(true),
m_restaurantId(0)
{}
MenuItem(const std::string& name, const std::string& description, double price, int restaurantId):
@@ -29,15 +31,18 @@ public:
m_name(name),
m_description(description),
m_price(price),
m_isAvailable(true),
m_restaurantId(restaurantId)
{}
MenuItem(int, const std::string&, const std::string&, double, int);
MenuItem(int, const std::string&, const std::string&, double, bool, int);
int getId() const;
std::string getName() const;
std::string getDescription() const;
double getPrice() const;
void setPrice(double);
int getRestaurantId() const;
bool isAvailable() const;
void makeUnavailable();
std::string serialize() const;
static std::shared_ptr<MenuItem> deserialize(const std::string&);
};
@@ -1,150 +1,150 @@
1|Grilled Chicken|Classic grilled chicken|12.5|1
2|Veg Burger|Vegetable patty burger|8|1
3|Cheese Burger|Beef burger with cheese|10|1
4|French Fries|Crispy fries|4.5|1
5|Grilled Sandwich|Toasted sandwich|6|1
6|Chicken Wrap|Grilled chicken wrap|9|1
7|Veg Wrap|Vegetable wrap|7.5|1
8|Cola|Chilled soft drink|2|1
9|Iced Tea|Cold brewed tea|2.5|1
10|Brownie|Chocolate brownie|5|1
11|Pasta Alfredo|Creamy pasta|11|2
12|Pasta Marinara|Tomato pasta|10|2
13|Garlic Bread|Toasted garlic bread|4|2
14|Caesar Salad|Fresh salad|7.5|2
15|Grilled Veggies|Seasonal vegetables|6.5|2
16|Chicken Pasta|Pasta with chicken|12.5|2
17|Soup of the Day|Daily soup|5|2
18|Coffee|Hot brewed coffee|3|2
19|Tea|Hot tea|2.5|2
20|Cheesecake|Classic cheesecake|6|2
21|Veg Bowl|Healthy veg bowl|9|3
22|Chicken Bowl|Protein chicken bowl|11.5|3
23|Quinoa Salad|Quinoa mixed salad|10|3
24|Fruit Salad|Fresh fruit mix|6|3
25|Avocado Toast|Toasted avocado bread|7.5|3
26|Smoothie|Fruit smoothie|5.5|3
27|Grilled Tofu|Tofu with herbs|9.5|3
28|Veg Soup|Warm vegetable soup|5|3
29|Green Juice|Fresh juice|4.5|3
30|Yogurt Cup|Chilled yogurt|3.5|3
31|Chicken Wings|Spicy wings|10.5|4
32|Veg Nuggets|Crispy nuggets|7|4
33|Loaded Fries|Fries with toppings|8.5|4
34|Chicken Burger|Burger with chicken|9.5|4
35|Veg Burger|Classic veg burger|8|4
36|Onion Rings|Crispy onion rings|5|4
37|Hot Dog|Grilled hot dog|6.5|4
38|Milkshake|Vanilla milkshake|4.5|4
39|Soda|Carbonated drink|2|4
40|Ice Cream|Vanilla scoop|3.5|4
41|Breakfast Combo|Eggs and toast|8|5
42|Pancakes|Fluffy pancakes|6.5|5
43|Omelette|Cheese omelette|5.5|5
44|Toast Butter|Buttered toast|3|5
45|Fruit Plate|Seasonal fruits|4.5|5
46|Lunch Plate|Daily lunch meal|10|5
47|Veg Curry|Mixed veg curry|8.5|5
48|Rice Bowl|Steamed rice|4|5
49|Tea|Hot tea|2|5
50|Coffee|Fresh coffee|3|5
51|Chicken Rice|Rice with chicken|11|6
52|Veg Rice|Rice with vegetables|9|6
53|Noodles|Stir fried noodles|8.5|6
54|Veg Manchurian|Veg balls in sauce|9.5|6
55|Chicken Manchurian|Chicken in sauce|11.5|6
56|Spring Rolls|Crispy rolls|6|6
57|Fried Rice|Classic fried rice|8|6
58|Hot Soup|Soup bowl|4.5|6
59|Cold Drink|Chilled beverage|2.5|6
60|Ice Cream|Chocolate scoop|3.5|6
61|Chicken Sandwich|Grilled sandwich|8.5|7
62|Veg Sandwich|Vegetable sandwich|7|7
63|Club Sandwich|Triple layer sandwich|9.5|7
64|French Fries|Crispy fries|4|7
65|Cheese Toast|Toasted cheese|5|7
66|Soup|Daily soup|4.5|7
67|Salad|Fresh salad|6|7
68|Cold Coffee|Iced coffee|3.5|7
69|Tea|Hot tea|2|7
70|Brownie|Chocolate brownie|5.5|7
71|Steak|Grilled steak|15|8
72|Chicken Steak|Chicken fillet|13|8
73|Veg Steak|Grilled veg steak|11|8
74|Mashed Potato|Creamy potato|5.5|8
75|Grilled Veggies|Mixed vegetables|6.5|8
76|Soup|Chef special soup|5|8
77|Garlic Bread|Toasted bread|4.5|8
78|Soft Drink|Cold beverage|2.5|8
79|Dessert|Daily dessert|6|8
80|Ice Cream|Vanilla ice cream|3.5|8
81|Chicken Pizza|Thin crust pizza|12|9
82|Veg Pizza|Vegetable pizza|10|9
83|Cheese Pizza|Cheesy pizza|11|9
84|Garlic Bread|Garlic breadsticks|4.5|9
85|Pasta|Italian pasta|9.5|9
86|Salad|Side salad|5|9
87|Chicken Wings|Spicy wings|8.5|9
88|Cola|Cold cola|2|9
89|Brownie|Chocolate brownie|5.5|9
90|Ice Cream|Vanilla scoop|3.5|9
91|Soup Bowl|Warm soup|5|10
92|Veg Curry|Vegetable curry|8.5|10
93|Chicken Curry|Spicy chicken curry|10.5|10
94|Rice|Steamed rice|4|10
95|Flatbread|Soft flatbread|3|10
96|Salad|Fresh salad|6|10
97|Dessert|Sweet dessert|5.5|10
98|Tea|Hot tea|2|10
99|Coffee|Fresh coffee|3|10
100|Ice Cream|Chocolate scoop|3.5|10
101|Veg Bowl|Healthy veg bowl|9|11
102|Tofu Stir Fry|Tofu with veggies|10.5|11
103|Green Salad|Fresh greens|7|11
104|Veg Soup|Warm soup|5|11
105|Smoothie|Fruit smoothie|5.5|11
106|Grilled Veg|Grilled vegetables|8.5|11
107|Rice Bowl|Steamed rice|4|11
108|Juice|Fresh juice|4.5|11
109|Tea|Herbal tea|2.5|11
110|Fruit Cup|Mixed fruits|3.5|11
111|BBQ Chicken|Grilled BBQ chicken|13|12
112|BBQ Veg|Grilled veg platter|11|12
113|Roasted Potatoes|Herb potatoes|6|12
114|Grilled Corn|Butter corn|5.5|12
115|Chicken Skewers|Skewered chicken|12|12
116|Veg Skewers|Vegetable skewers|9.5|12
117|Soup|Hot soup|4.5|12
118|Soft Drink|Cold drink|2.5|12
119|Dessert|Sweet dish|5.5|12
120|Ice Cream|Vanilla ice cream|3.5|12
121|Chicken Burger|Fast chicken burger|9.5|13
122|Veg Burger|Quick veg burger|8|13
123|French Fries|Golden fries|4|13
124|Chicken Nuggets|Crispy nuggets|7|13
125|Veg Nuggets|Veg nuggets|6.5|13
126|Wrap|Quick wrap|7.5|13
127|Soft Drink|Cold beverage|2.5|13
128|Milkshake|Chocolate shake|4.5|13
129|Ice Cream|Vanilla scoop|3.5|13
130|Cookie|Choco cookie|2.5|13
131|Veg Platter|Mixed veg platter|10|14
132|Chicken Platter|Chicken platter|12.5|14
133|Soup|Warm soup|5|14
134|Salad|Fresh salad|6|14
135|Rice Bowl|Rice bowl|4.5|14
136|Flatbread|Soft bread|3|14
137|Dessert|Sweet dessert|5.5|14
138|Tea|Hot tea|2|14
139|Coffee|Fresh coffee|3|14
140|Ice Cream|Vanilla ice cream|3.5|14
141|Chicken Wrap|Spicy chicken wrap|9.5|15
142|Veg Wrap|Veggie wrap|8|15
143|Rice Bowl|Rice bowl|4.5|15
144|Noodles|Stir noodles|8.5|15
145|Soup|Hot soup|5|15
146|Grilled Chicken|Herb grilled chicken|12|15
147|Salad|Fresh salad|6|15
148|Soft Drink|Cold drink|2.5|15
149|Dessert|Sweet dessert|5.5|15
150|Ice Cream|Chocolate ice cream|3.5|15
1|Grilled Chicken|Classic grilled chicken|12.5|0|1
2|Veg Burger|Vegetable patty burger|8|1|1
3|Cheese Burger|Beef burger with cheese|10|1|1
4|French Fries|Crispy fries|4.5|1|1
5|Grilled Sandwich|Toasted sandwich|6|1|1
6|Chicken Wrap|Grilled chicken wrap|9|1|1
7|Veg Wrap|Vegetable wrap|7.5|1|1
8|Cola|Chilled soft drink|2|1|1
9|Iced Tea|Cold brewed tea|2.5|1|1
10|Brownie|Chocolate brownie|5|1|1
11|Pasta Alfredo|Creamy pasta|11|1|2
12|Pasta Marinara|Tomato pasta|10|1|2
13|Garlic Bread|Toasted garlic bread|4|1|2
14|Caesar Salad|Fresh salad|7.5|1|2
15|Grilled Veggies|Seasonal vegetables|6.5|1|2
16|Chicken Pasta|Pasta with chicken|12.5|1|2
17|Soup of the Day|Daily soup|5|1|2
18|Coffee|Hot brewed coffee|3|1|2
19|Tea|Hot tea|2.5|1|2
20|Cheesecake|Classic cheesecake|6|1|2
21|Veg Bowl|Healthy veg bowl|9|1|3
22|Chicken Bowl|Protein chicken bowl|11.5|1|3
23|Quinoa Salad|Quinoa mixed salad|10|1|3
24|Fruit Salad|Fresh fruit mix|6|1|3
25|Avocado Toast|Toasted avocado bread|7.5|1|3
26|Smoothie|Fruit smoothie|5.5|1|3
27|Grilled Tofu|Tofu with herbs|9.5|1|3
28|Veg Soup|Warm vegetable soup|5|1|3
29|Green Juice|Fresh juice|4.5|1|3
30|Yogurt Cup|Chilled yogurt|3.5|1|3
31|Chicken Wings|Spicy wings|10.5|1|4
32|Veg Nuggets|Crispy nuggets|7|1|4
33|Loaded Fries|Fries with toppings|8.5|1|4
34|Chicken Burger|Burger with chicken|9.5|1|4
35|Veg Burger|Classic veg burger|8|1|4
36|Onion Rings|Crispy onion rings|5|1|4
37|Hot Dog|Grilled hot dog|6.5|1|4
38|Milkshake|Vanilla milkshake|4.5|1|4
39|Soda|Carbonated drink|2|1|4
40|Ice Cream|Vanilla scoop|3.5|1|4
41|Breakfast Combo|Eggs and toast|8|1|5
42|Pancakes|Fluffy pancakes|6.5|1|5
43|Omelette|Cheese omelette|5.5|1|5
44|Toast Butter|Buttered toast|3|1|5
45|Fruit Plate|Seasonal fruits|4.5|1|5
46|Lunch Plate|Daily lunch meal|10|1|5
47|Veg Curry|Mixed veg curry|8.5|1|5
48|Rice Bowl|Steamed rice|4|1|5
49|Tea|Hot tea|2|1|5
50|Coffee|Fresh coffee|3|1|5
51|Chicken Rice|Rice with chicken|11|1|6
52|Veg Rice|Rice with vegetables|9|1|6
53|Noodles|Stir fried noodles|8.5|1|6
54|Veg Manchurian|Veg balls in sauce|9.5|1|6
55|Chicken Manchurian|Chicken in sauce|11.5|1|6
56|Spring Rolls|Crispy rolls|6|1|6
57|Fried Rice|Classic fried rice|8|1|6
58|Hot Soup|Soup bowl|4.5|1|6
59|Cold Drink|Chilled beverage|2.5|1|6
60|Ice Cream|Chocolate scoop|3.5|1|6
61|Chicken Sandwich|Grilled sandwich|8.5|1|7
62|Veg Sandwich|Vegetable sandwich|7|1|7
63|Club Sandwich|Triple layer sandwich|9.5|1|7
64|French Fries|Crispy fries|4|1|7
65|Cheese Toast|Toasted cheese|5|1|7
66|Soup|Daily soup|4.5|1|7
67|Salad|Fresh salad|6|1|7
68|Cold Coffee|Iced coffee|3.5|1|7
69|Tea|Hot tea|2|1|7
70|Brownie|Chocolate brownie|5.5|1|7
71|Steak|Grilled steak|15|1|8
72|Chicken Steak|Chicken fillet|13|1|8
73|Veg Steak|Grilled veg steak|11|1|8
74|Mashed Potato|Creamy potato|5.5|1|8
75|Grilled Veggies|Mixed vegetables|6.5|1|8
76|Soup|Chef special soup|5|1|8
77|Garlic Bread|Toasted bread|4.5|1|8
78|Soft Drink|Cold beverage|2.5|1|8
79|Dessert|Daily dessert|6|1|8
80|Ice Cream|Vanilla ice cream|3.5|1|8
81|Chicken Pizza|Thin crust pizza|12|1|9
82|Veg Pizza|Vegetable pizza|10|1|9
83|Cheese Pizza|Cheesy pizza|11|1|9
84|Garlic Bread|Garlic breadsticks|4.5|1|9
85|Pasta|Italian pasta|9.5|1|9
86|Salad|Side salad|5|1|9
87|Chicken Wings|Spicy wings|8.5|1|9
88|Cola|Cold cola|2|1|9
89|Brownie|Chocolate brownie|5.5|1|9
90|Ice Cream|Vanilla scoop|3.5|1|9
91|Soup Bowl|Warm soup|5|1|10
92|Veg Curry|Vegetable curry|8.5|1|10
93|Chicken Curry|Spicy chicken curry|10.5|1|10
94|Rice|Steamed rice|4|1|10
95|Flatbread|Soft flatbread|3|1|10
96|Salad|Fresh salad|6|1|10
97|Dessert|Sweet dessert|5.5|1|10
98|Tea|Hot tea|2|1|10
99|Coffee|Fresh coffee|3|1|10
100|Ice Cream|Chocolate scoop|3.5|1|10
101|Veg Bowl|Healthy veg bowl|9|1|11
102|Tofu Stir Fry|Tofu with veggies|10.5|1|11
103|Green Salad|Fresh greens|7|1|11
104|Veg Soup|Warm soup|5|1|11
105|Smoothie|Fruit smoothie|5.5|1|11
106|Grilled Veg|Grilled vegetables|8.5|1|11
107|Rice Bowl|Steamed rice|4|1|11
108|Juice|Fresh juice|4.5|1|11
109|Tea|Herbal tea|2.5|1|11
110|Fruit Cup|Mixed fruits|3.5|1|11
111|BBQ Chicken|Grilled BBQ chicken|13|1|12
112|BBQ Veg|Grilled veg platter|11|1|12
113|Roasted Potatoes|Herb potatoes|6|1|12
114|Grilled Corn|Butter corn|5.5|1|12
115|Chicken Skewers|Skewered chicken|12|1|12
116|Veg Skewers|Vegetable skewers|9.5|1|12
117|Soup|Hot soup|4.5|1|12
118|Soft Drink|Cold drink|2.5|1|12
119|Dessert|Sweet dish|5.5|1|12
120|Ice Cream|Vanilla ice cream|3.5|1|12
121|Chicken Burger|Fast chicken burger|9.5|1|13
122|Veg Burger|Quick veg burger|8|1|13
123|French Fries|Golden fries|4|1|13
124|Chicken Nuggets|Crispy nuggets|7|1|13
125|Veg Nuggets|Veg nuggets|6.5|1|13
126|Wrap|Quick wrap|7.5|1|13
127|Soft Drink|Cold beverage|2.5|1|13
128|Milkshake|Chocolate shake|4.5|1|13
129|Ice Cream|Vanilla scoop|3.5|1|13
130|Cookie|Choco cookie|2.5|1|13
131|Veg Platter|Mixed veg platter|10|1|14
132|Chicken Platter|Chicken platter|12.5|1|14
133|Soup|Warm soup|5|1|14
134|Salad|Fresh salad|6|1|14
135|Rice Bowl|Rice bowl|4.5|1|14
136|Flatbread|Soft bread|3|1|14
137|Dessert|Sweet dessert|5.5|1|14
138|Tea|Hot tea|2|1|14
139|Coffee|Fresh coffee|3|1|14
140|Ice Cream|Vanilla ice cream|3.5|1|14
141|Chicken Wrap|Spicy chicken wrap|9.5|1|15
142|Veg Wrap|Veggie wrap|8|1|15
143|Rice Bowl|Rice bowl|4.5|1|15
144|Noodles|Stir noodles|8.5|1|15
145|Soup|Hot soup|5|1|15
146|Grilled Chicken|Herb grilled chicken|12|1|15
147|Salad|Fresh salad|6|1|15
148|Soft Drink|Cold drink|2.5|1|15
149|Dessert|Sweet dessert|5.5|1|15
150|Ice Cream|Chocolate ice cream|3.5|1|15