Implement controller removeMenuItem()
This commit is contained in:
@@ -66,6 +66,45 @@ static restaurants::iterator pickRestaurantFromRestaurants(RestaurantOwner& rest
|
|||||||
return restaurantIterator;
|
return restaurantIterator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static menuItems::iterator pickMenuFromMenuItems(menuItems& restaurantMenuItems)
|
||||||
|
{
|
||||||
|
util::clear();
|
||||||
|
int menuItemIndex = 1, menuItemChoiceIndex;
|
||||||
|
if (restaurantMenuItems.empty())
|
||||||
|
{
|
||||||
|
std::cout << "Restaurant doesn't have any Menu Items!\n";
|
||||||
|
return restaurantMenuItems.end();
|
||||||
|
}
|
||||||
|
std::cout << "Pick a Menu Item\n";
|
||||||
|
std::cout << std::left << std::setw(8) << "Index"
|
||||||
|
<< std::left << std::setw(5) << "ID"
|
||||||
|
<< std::left << std::setw(25) << "Name"
|
||||||
|
<< std::left << std::setw(50) << "Description"
|
||||||
|
<< std::left << std::setw(5) << "Price"
|
||||||
|
<< "\n";
|
||||||
|
for (menuItems::iterator menuItemIterator = restaurantMenuItems.begin(); menuItemIterator != restaurantMenuItems.end(); menuItemIterator++, menuItemIndex++)
|
||||||
|
{
|
||||||
|
auto& menuItem = *(menuItemIterator->second);
|
||||||
|
std::cout
|
||||||
|
<< std::left << std::setw(8) << menuItemIndex
|
||||||
|
<< std::left << std::setw(5) << menuItem.getId()
|
||||||
|
<< std::left << std::setw(25) << menuItem.getName()
|
||||||
|
<< std::left << std::setw(50) << menuItem.getDescription()
|
||||||
|
<< std::left << std::setw(5) << menuItem.getPrice()
|
||||||
|
<< "\n";
|
||||||
|
}
|
||||||
|
std::cout << "\nSelect Index: ";
|
||||||
|
util::readValue<int>(menuItemChoiceIndex);
|
||||||
|
menuItemChoiceIndex--;
|
||||||
|
if (menuItemChoiceIndex < 0 || menuItemChoiceIndex >= restaurantMenuItems.size())
|
||||||
|
{
|
||||||
|
return restaurantMenuItems.end();
|
||||||
|
}
|
||||||
|
menuItems::iterator menuItemIterator = restaurantMenuItems.begin();
|
||||||
|
std::advance(menuItemIterator, menuItemChoiceIndex);
|
||||||
|
return menuItemIterator;
|
||||||
|
}
|
||||||
|
|
||||||
void FoodDeliveryController::run()
|
void FoodDeliveryController::run()
|
||||||
{
|
{
|
||||||
bool isMenuActive = true;
|
bool isMenuActive = true;
|
||||||
@@ -390,9 +429,41 @@ void FoodDeliveryController::addMenuItem() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FoodDeliveryController::removeMenuItem()
|
void FoodDeliveryController::removeMenuItem() const
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
util::clear();
|
||||||
|
if (!checkAccess(m_authenticatedUser, "RestaurantOwner"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RestaurantOwner& restaurantOwner = *(std::dynamic_pointer_cast<RestaurantOwner>(m_authenticatedUser));
|
||||||
|
restaurants::iterator restaurantIterator = pickRestaurantFromRestaurants(restaurantOwner);
|
||||||
|
if (restaurantIterator != restaurantOwner.getRestaurants().end())
|
||||||
|
{
|
||||||
|
menuItems& restaurantMenuItems = restaurantIterator->second->getMenuItems();
|
||||||
|
menuItems::iterator menuItemIterator = pickMenuFromMenuItems(restaurantMenuItems);
|
||||||
|
if (menuItemIterator != restaurantMenuItems.end())
|
||||||
|
{
|
||||||
|
restaurantMenuItems.erase(menuItemIterator);
|
||||||
|
std::cout << "Removed Menu Item successfully\n";
|
||||||
|
}
|
||||||
|
else if (!restaurantMenuItems.empty())
|
||||||
|
{
|
||||||
|
std::cout << "Invalid Index. Cannot remove Menu Item!\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!restaurantOwner.getRestaurants().empty())
|
||||||
|
{
|
||||||
|
std::cout << "Invalid Index. Cannot remove Menu Item!\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (const std::exception& e)
|
||||||
|
{
|
||||||
|
std::cout << "Exception: " << e.what() << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FoodDeliveryController::listCustomerOrders()
|
void FoodDeliveryController::listCustomerOrders()
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public:
|
|||||||
void markOrderReady();
|
void markOrderReady();
|
||||||
void listMenuItems() const;
|
void listMenuItems() const;
|
||||||
void addMenuItem() const;
|
void addMenuItem() const;
|
||||||
void removeMenuItem();
|
void removeMenuItem() const;
|
||||||
void listCustomerOrders();
|
void listCustomerOrders();
|
||||||
void placeOrder();
|
void placeOrder();
|
||||||
void cancelOrder();
|
void cancelOrder();
|
||||||
|
|||||||
Reference in New Issue
Block a user