Implement Controller run()
- Implement Controller run() - Remove Do you want to continue prompts for util::pressEnter - change type of choice from char -> int - Display Invalid Password on bad login - Create empty controller method definitions
This commit is contained in:
@@ -14,7 +14,7 @@ void CustomerMenu::showMenu()
|
|||||||
bool isMenuActive = true;
|
bool isMenuActive = true;
|
||||||
while (isMenuActive)
|
while (isMenuActive)
|
||||||
{
|
{
|
||||||
char choice;
|
int choice;
|
||||||
util::clear();
|
util::clear();
|
||||||
std::cout << "Welcome " << m_userFullName << "\n";
|
std::cout << "Welcome " << m_userFullName << "\n";
|
||||||
std::cout << "Customer Menu\n"
|
std::cout << "Customer Menu\n"
|
||||||
@@ -24,7 +24,7 @@ void CustomerMenu::showMenu()
|
|||||||
"4. View My Profile\n"
|
"4. View My Profile\n"
|
||||||
"5. Logout\n"
|
"5. Logout\n"
|
||||||
"Choice?: ";
|
"Choice?: ";
|
||||||
util::readValue<char>(choice);
|
util::readValue<int>(choice);
|
||||||
if (!handleOperation(choice))
|
if (!handleOperation(choice))
|
||||||
{
|
{
|
||||||
isMenuActive = false;
|
isMenuActive = false;
|
||||||
@@ -32,33 +32,29 @@ void CustomerMenu::showMenu()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CustomerMenu::handleOperation(char choice)
|
bool CustomerMenu::handleOperation(int choice)
|
||||||
{
|
{
|
||||||
bool isMenuActive = true;
|
bool isMenuActive = true;
|
||||||
util::clear();
|
util::clear();
|
||||||
switch (choice)
|
switch (choice)
|
||||||
{
|
{
|
||||||
case '1':
|
case 1:
|
||||||
m_foodDeliveryController.listCustomerOrders();
|
m_foodDeliveryController.listCustomerOrders();
|
||||||
break;
|
break;
|
||||||
case '2':
|
case 2:
|
||||||
m_foodDeliveryController.placeOrder();
|
m_foodDeliveryController.placeOrder();
|
||||||
break;
|
break;
|
||||||
case '3':
|
case 3:
|
||||||
m_foodDeliveryController.cancelOrder();
|
m_foodDeliveryController.cancelOrder();
|
||||||
break;
|
break;
|
||||||
case '4':
|
case 4:
|
||||||
m_foodDeliveryController.viewProfile();
|
m_foodDeliveryController.viewProfile();
|
||||||
break;
|
break;
|
||||||
case '5':
|
case 5:
|
||||||
isMenuActive = false;
|
return false;
|
||||||
break;
|
default:
|
||||||
}
|
std::cout << "Invalid Choice!\n";
|
||||||
std::cout << "\nDo you want to continue (Y/N)?: ";
|
|
||||||
util::readValue<char>(choice);
|
|
||||||
if (choice != 'Y' && choice != 'y')
|
|
||||||
{
|
|
||||||
isMenuActive = false;
|
|
||||||
}
|
}
|
||||||
|
util::pressEnter();
|
||||||
return isMenuActive;
|
return isMenuActive;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,5 +13,5 @@ class CustomerMenu : public Menu
|
|||||||
public:
|
public:
|
||||||
CustomerMenu(FoodDeliveryController& foodDeliveryController, const std::string userFullName): Menu(foodDeliveryController, userFullName) {}
|
CustomerMenu(FoodDeliveryController& foodDeliveryController, const std::string userFullName): Menu(foodDeliveryController, userFullName) {}
|
||||||
void showMenu() override;
|
void showMenu() override;
|
||||||
bool handleOperation(char) override;
|
bool handleOperation(int) override;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,17 +14,17 @@ void DeliveryPartnerMenu::showMenu()
|
|||||||
bool isMenuActive = true;
|
bool isMenuActive = true;
|
||||||
while (isMenuActive)
|
while (isMenuActive)
|
||||||
{
|
{
|
||||||
char choice;
|
int choice;
|
||||||
util::clear();
|
util::clear();
|
||||||
std::cout << "Welcome " << m_userFullName << "\n";
|
std::cout << "Welcome " << m_userFullName << "\n";
|
||||||
std::cout << "DeliveryPartner Menu\n"
|
std::cout << "Delivery Partner Menu\n"
|
||||||
"1. View My Delivery Jobs\n"
|
"1. View My Delivery Jobs\n"
|
||||||
"2. Accept Delivery Job\n"
|
"2. Accept Delivery Job\n"
|
||||||
"3. Confirm Delivery\n"
|
"3. Confirm Delivery\n"
|
||||||
"4. View My Profile\n"
|
"4. View My Profile\n"
|
||||||
"5. Logout\n"
|
"5. Logout\n"
|
||||||
"Choice?: ";
|
"Choice?: ";
|
||||||
util::readValue<char>(choice);
|
util::readValue<int>(choice);
|
||||||
if (!handleOperation(choice))
|
if (!handleOperation(choice))
|
||||||
{
|
{
|
||||||
isMenuActive = false;
|
isMenuActive = false;
|
||||||
@@ -32,33 +32,29 @@ void DeliveryPartnerMenu::showMenu()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DeliveryPartnerMenu::handleOperation(char choice)
|
bool DeliveryPartnerMenu::handleOperation(int choice)
|
||||||
{
|
{
|
||||||
bool isMenuActive = true;
|
bool isMenuActive = true;
|
||||||
util::clear();
|
util::clear();
|
||||||
switch (choice)
|
switch (choice)
|
||||||
{
|
{
|
||||||
case '1':
|
case 1:
|
||||||
m_foodDeliveryController.listDeliveryAssignments();
|
m_foodDeliveryController.listDeliveryAssignments();
|
||||||
break;
|
break;
|
||||||
case '2':
|
case 2:
|
||||||
m_foodDeliveryController.acceptDeliveryAssignment();
|
m_foodDeliveryController.acceptDeliveryAssignment();
|
||||||
break;
|
break;
|
||||||
case '3':
|
case 3:
|
||||||
m_foodDeliveryController.confirmDeliveryAssignment();
|
m_foodDeliveryController.confirmDeliveryAssignment();
|
||||||
break;
|
break;
|
||||||
case '4':
|
case 4:
|
||||||
m_foodDeliveryController.viewProfile();
|
m_foodDeliveryController.viewProfile();
|
||||||
break;
|
break;
|
||||||
case '5':
|
case 5:
|
||||||
isMenuActive = false;
|
return false;
|
||||||
break;
|
default:
|
||||||
}
|
std::cout << "Invalid Choice!\n";
|
||||||
std::cout << "\nDo you want to continue (Y/N)?: ";
|
|
||||||
util::readValue<char>(choice);
|
|
||||||
if (choice != 'Y' && choice != 'y')
|
|
||||||
{
|
|
||||||
isMenuActive = false;
|
|
||||||
}
|
}
|
||||||
|
util::pressEnter();
|
||||||
return isMenuActive;
|
return isMenuActive;
|
||||||
}
|
}
|
||||||
@@ -13,5 +13,5 @@ class DeliveryPartnerMenu : public Menu
|
|||||||
public:
|
public:
|
||||||
DeliveryPartnerMenu(FoodDeliveryController& foodDeliveryController, const std::string userFullName): Menu(foodDeliveryController, userFullName) {}
|
DeliveryPartnerMenu(FoodDeliveryController& foodDeliveryController, const std::string userFullName): Menu(foodDeliveryController, userFullName) {}
|
||||||
void showMenu() override;
|
void showMenu() override;
|
||||||
bool handleOperation(char) override;
|
bool handleOperation(int) override;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,6 +16,39 @@ Date: 19-02-2026
|
|||||||
#include "inputHelper.h"
|
#include "inputHelper.h"
|
||||||
#include "outputHelper.h"
|
#include "outputHelper.h"
|
||||||
|
|
||||||
|
void FoodDeliveryController::run()
|
||||||
|
{
|
||||||
|
bool isMenuActive = true;
|
||||||
|
while (isMenuActive)
|
||||||
|
{
|
||||||
|
char choice;
|
||||||
|
util::clear();
|
||||||
|
std::cout << "Food Delivery App\n"
|
||||||
|
"1. Login\n"
|
||||||
|
"2. Register\n"
|
||||||
|
"3. Exit\n"
|
||||||
|
"Choice?: ";
|
||||||
|
util::readValue<char>(choice);
|
||||||
|
if (choice == '1')
|
||||||
|
{
|
||||||
|
login();
|
||||||
|
}
|
||||||
|
else if (choice == '2')
|
||||||
|
{
|
||||||
|
registerUser();
|
||||||
|
}
|
||||||
|
else if (choice == '3')
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << "Invalid Choice!\n";
|
||||||
|
}
|
||||||
|
util::pressEnter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FoodDeliveryController::login()
|
void FoodDeliveryController::login()
|
||||||
{
|
{
|
||||||
util::clear();
|
util::clear();
|
||||||
@@ -51,6 +84,10 @@ void FoodDeliveryController::login()
|
|||||||
menu->showMenu();
|
menu->showMenu();
|
||||||
m_authenticatedUser.reset();
|
m_authenticatedUser.reset();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << "Invalid Password! Try Again\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -109,3 +146,73 @@ void FoodDeliveryController::registerUser()
|
|||||||
}
|
}
|
||||||
std::cout << "User Registration Successful\n";
|
std::cout << "User Registration Successful\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::listRestaurants()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::updateRestaurantStatus()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::listRestaurantOrders()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::markOrderReady()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::listMenuItems()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::addMenuItem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::removeMenuItem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::listCustomerOrders()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::placeOrder()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::cancelOrder()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::listDeliveryAssignments()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::acceptDeliveryAssignment()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::confirmDeliveryAssignment()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FoodDeliveryController::viewProfile()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ private:
|
|||||||
users m_users;
|
users m_users;
|
||||||
std::shared_ptr<User> m_authenticatedUser;
|
std::shared_ptr<User> m_authenticatedUser;
|
||||||
public:
|
public:
|
||||||
|
void run();
|
||||||
void login();
|
void login();
|
||||||
void registerUser();
|
void registerUser();
|
||||||
void listRestaurants();
|
void listRestaurants();
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ public:
|
|||||||
Menu(FoodDeliveryController& foodDeliveryController, const std::string& userFullName) : m_foodDeliveryController(foodDeliveryController), m_userFullName(userFullName) {}
|
Menu(FoodDeliveryController& foodDeliveryController, const std::string& userFullName) : m_foodDeliveryController(foodDeliveryController), m_userFullName(userFullName) {}
|
||||||
virtual ~Menu() = default;
|
virtual ~Menu() = default;
|
||||||
virtual void showMenu() = 0;
|
virtual void showMenu() = 0;
|
||||||
virtual bool handleOperation(char) = 0;
|
virtual bool handleOperation(int) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ void RestaurantOwnerMenu::showMenu()
|
|||||||
bool isMenuActive = true;
|
bool isMenuActive = true;
|
||||||
while (isMenuActive)
|
while (isMenuActive)
|
||||||
{
|
{
|
||||||
char choice;
|
int choice;
|
||||||
util::clear();
|
util::clear();
|
||||||
std::cout << "Welcome " << m_userFullName << "\n";
|
std::cout << "Welcome " << m_userFullName << "\n";
|
||||||
std::cout << "Restaurant Owner Menu\n"
|
std::cout << "Restaurant Owner Menu\n"
|
||||||
@@ -28,7 +28,7 @@ void RestaurantOwnerMenu::showMenu()
|
|||||||
"8. View My Profile\n"
|
"8. View My Profile\n"
|
||||||
"9. Logout\n"
|
"9. Logout\n"
|
||||||
"Choice?: ";
|
"Choice?: ";
|
||||||
util::readValue<char>(choice);
|
util::readValue<int>(choice);
|
||||||
if (!handleOperation(choice))
|
if (!handleOperation(choice))
|
||||||
{
|
{
|
||||||
isMenuActive = false;
|
isMenuActive = false;
|
||||||
@@ -36,45 +36,41 @@ void RestaurantOwnerMenu::showMenu()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RestaurantOwnerMenu::handleOperation(char choice)
|
bool RestaurantOwnerMenu::handleOperation(int choice)
|
||||||
{
|
{
|
||||||
bool isMenuActive = true;
|
bool isMenuActive = true;
|
||||||
util::clear();
|
util::clear();
|
||||||
switch (choice)
|
switch (choice)
|
||||||
{
|
{
|
||||||
case '1':
|
case 1:
|
||||||
m_foodDeliveryController.listRestaurants();
|
m_foodDeliveryController.listRestaurants();
|
||||||
break;
|
break;
|
||||||
case '2':
|
case 2:
|
||||||
m_foodDeliveryController.updateRestaurantStatus();
|
m_foodDeliveryController.updateRestaurantStatus();
|
||||||
break;
|
break;
|
||||||
case '3':
|
case 3:
|
||||||
m_foodDeliveryController.listRestaurantOrders();
|
m_foodDeliveryController.listRestaurantOrders();
|
||||||
break;
|
break;
|
||||||
case '4':
|
case 4:
|
||||||
m_foodDeliveryController.markOrderReady();
|
m_foodDeliveryController.markOrderReady();
|
||||||
break;
|
break;
|
||||||
case '5':
|
case 5:
|
||||||
m_foodDeliveryController.listMenuItems();
|
m_foodDeliveryController.listMenuItems();
|
||||||
break;
|
break;
|
||||||
case '6':
|
case 6:
|
||||||
m_foodDeliveryController.addMenuItem();
|
m_foodDeliveryController.addMenuItem();
|
||||||
break;
|
break;
|
||||||
case '7':
|
case 7:
|
||||||
m_foodDeliveryController.removeMenuItem();
|
m_foodDeliveryController.removeMenuItem();
|
||||||
break;
|
break;
|
||||||
case '8':
|
case 8:
|
||||||
m_foodDeliveryController.viewProfile();
|
m_foodDeliveryController.viewProfile();
|
||||||
break;
|
break;
|
||||||
case '9':
|
case 9:
|
||||||
isMenuActive = false;
|
return false;
|
||||||
break;
|
default:
|
||||||
}
|
std::cout << "Invalid Choice!\n";
|
||||||
std::cout << "\nDo you want to continue (Y/N)?: ";
|
|
||||||
util::readValue<char>(choice);
|
|
||||||
if (choice != 'Y' && choice != 'y')
|
|
||||||
{
|
|
||||||
isMenuActive = false;
|
|
||||||
}
|
}
|
||||||
|
util::pressEnter();
|
||||||
return isMenuActive;
|
return isMenuActive;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ class RestaurantOwnerMenu : public Menu
|
|||||||
public:
|
public:
|
||||||
RestaurantOwnerMenu(FoodDeliveryController& foodDeliveryController, const std::string userFullName): Menu(foodDeliveryController, userFullName) {}
|
RestaurantOwnerMenu(FoodDeliveryController& foodDeliveryController, const std::string userFullName): Menu(foodDeliveryController, userFullName) {}
|
||||||
void showMenu() override;
|
void showMenu() override;
|
||||||
bool handleOperation(char) override;
|
bool handleOperation(int) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,16 +4,18 @@ Date: 17-02-2026
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
using namespace std;
|
#include <stdexcept>
|
||||||
|
#include "FoodDeliveryController.h"
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
FoodDeliveryController controller;
|
||||||
|
controller.run();
|
||||||
}
|
}
|
||||||
catch (const exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
cout << "Exception : " << e.what() << endl;
|
std::cout << "Exception : " << e.what() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user