From 7d98ad508ad682cccbfb89e5712602d2dd141120 Mon Sep 17 00:00:00 2001 From: Joel Thomas <1914@trenser.com> Date: Thu, 19 Feb 2026 21:16:04 +0530 Subject: [PATCH] Add private Controller helper method getRestaurantFromRestaurants() --- .../FoodDeliveryController.cpp | 89 +++++++++++-------- 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/Trenser.FoodDeliveryApp/Trenser.FoodDeliveryApp/FoodDeliveryController.cpp b/Trenser.FoodDeliveryApp/Trenser.FoodDeliveryApp/FoodDeliveryController.cpp index da3f9ec..103242a 100644 --- a/Trenser.FoodDeliveryApp/Trenser.FoodDeliveryApp/FoodDeliveryController.cpp +++ b/Trenser.FoodDeliveryApp/Trenser.FoodDeliveryApp/FoodDeliveryController.cpp @@ -28,6 +28,44 @@ bool checkAccess(std::shared_ptr user, const std::string& userWithAccess) return true; } +restaurants::iterator pickRestaurantFromRestaurants(RestaurantOwner& restaurantOwner) +{ + util::clear(); + int restaurantIndex = 1, restaurantChoiceIndex; + restaurants& ownerRestaurants = restaurantOwner.getRestaurants(); + if (ownerRestaurants.empty()) + { + std::cout << "You do not own any Restaurants!\n"; + return ownerRestaurants.end(); + } + std::cout << "Pick a Restaurant\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(10) << "Status" + << "\n"; + for (restaurants::iterator restaurantIterator = ownerRestaurants.begin(); restaurantIterator != ownerRestaurants.end(); restaurantIterator++, restaurantIndex++) + { + auto& restaurant = *(restaurantIterator->second); + std::cout + << std::left << std::setw(8) << restaurantIndex + << std::left << std::setw(5) << restaurant.getId() + << std::left << std::setw(25) << restaurant.getName() + << std::left << std::setw(10) << (restaurant.getStatus() ? "Open" : "Closed") + << "\n"; + } + std::cout << "\nSelect Index: "; + util::readValue(restaurantChoiceIndex); + restaurantChoiceIndex--; + if (restaurantChoiceIndex < 0 || restaurantChoiceIndex >= ownerRestaurants.size()) + { + return ownerRestaurants.end(); + } + restaurants::iterator restaurantIterator = ownerRestaurants.begin(); + std::advance(restaurantIterator, restaurantChoiceIndex); + return restaurantIterator; +} + void FoodDeliveryController::run() { bool isMenuActive = true; @@ -230,50 +268,25 @@ void FoodDeliveryController::updateRestaurantStatus() return; } RestaurantOwner& restaurantOwner = *(std::dynamic_pointer_cast(m_authenticatedUser)); - restaurants& ownerRestaurants = restaurantOwner.getRestaurants(); - int restaurantChoiceIndex; - if (ownerRestaurants.empty()) + restaurants::iterator restaurantIterator = pickRestaurantFromRestaurants(restaurantOwner); + if (restaurantIterator != restaurantOwner.getRestaurants().end()) { - std::cout << "You do not own any Restaurants!\n"; - return; + if (restaurantIterator->second->getStatus() == true) + { + restaurantIterator->second->setStatus(false); + } + else + { + restaurantIterator->second->setStatus(true); + } + listRestaurants(); + std::cout << "Updated Restaurant " << restaurantIterator->second->getName() << " successfully\n"; } - std::cout << "Pick a Restaurant to Open/Close\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(10) << "Status" - << "\n"; - int restaurantIndex = 1; - for (restaurants::iterator restaurantIterator = ownerRestaurants.begin(); restaurantIterator != ownerRestaurants.end(); restaurantIterator++, restaurantIndex++) - { - auto& restaurant = *(restaurantIterator->second); - std::cout - << std::left << std::setw(8) << restaurantIndex - << std::left << std::setw(5) << restaurant.getId() - << std::left << std::setw(25) << restaurant.getName() - << std::left << std::setw(10) << (restaurant.getStatus() ? "Open" : "Closed") - << "\n"; - } - std::cout << "\nSelect Index: "; - util::readValue(restaurantChoiceIndex); - restaurantChoiceIndex--; - if (restaurantChoiceIndex < 0 || restaurantChoiceIndex >= ownerRestaurants.size()) + else { std::cout << "Invalid Index. Cannot update Restaurant status!\n"; return; } - restaurants::iterator restaurantIterator = ownerRestaurants.begin(); - std::advance(restaurantIterator, restaurantChoiceIndex); - if (restaurantIterator->second->getStatus() == true) - { - restaurantIterator->second->setStatus(false); - } - else - { - restaurantIterator->second->setStatus(true); - } - listRestaurants(); - std::cout << "Updated Restaurant " << restaurantIterator->second->getName() << " successfully\n"; } catch (const std::exception& e) {