Merge branch 'feature-customer-management-cus006' into feature-customer-management
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
#include <iomanip>
|
||||
#include "CustomerMenu.h"
|
||||
#include "Service.h"
|
||||
#include "InventoryItem.h"
|
||||
#include "InputHelper.h"
|
||||
#include "OutputHelper.h"
|
||||
#include "Validator.h"
|
||||
#include "Vector.h"
|
||||
#include "Utility.h"
|
||||
#include "Map.h"
|
||||
|
||||
void CustomerMenu::showMenu()
|
||||
{
|
||||
@@ -79,8 +85,73 @@ void CustomerMenu::updateDetails()
|
||||
util::pressEnter();
|
||||
}
|
||||
|
||||
static const Service* selectServiceFromServices(const util::Map<std::string, const Service*>& services)
|
||||
{
|
||||
util::Map<int, const Service*> activeServicesMap;
|
||||
int currentIndex = 1;
|
||||
int userInputIndex;
|
||||
std::cout << std::left
|
||||
<< std::setw(10) << "Index"
|
||||
<< std::setw(15) << "Service ID"
|
||||
<< std::setw(25) << "Service Name"
|
||||
<< std::setw(15) << "Estimated Cost"
|
||||
<< std::endl;
|
||||
for (int index = 0; index < services.getSize(); index++)
|
||||
{
|
||||
const Service* currentService = services.getValueAt(index);
|
||||
if (currentService->getState() != util::State::ACTIVE)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
activeServicesMap.insert(currentIndex, currentService);
|
||||
double partsCost = calculatePartsCost(currentService);
|
||||
std::cout << std::left
|
||||
<< std::setw(10) << currentIndex
|
||||
<< std::setw(15) << currentService->getId()
|
||||
<< std::setw(25) << currentService->getName()
|
||||
<< std::setw(15) << (currentService->getLaborCost() + partsCost)
|
||||
<< std::endl;
|
||||
currentIndex++;
|
||||
}
|
||||
if (activeServicesMap.getSize() == 0)
|
||||
{
|
||||
std::cout << "No active services available." << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
std::cout << "Enter service index: ";
|
||||
util::read(userInputIndex);
|
||||
if (activeServicesMap.find(userInputIndex) == -1)
|
||||
{
|
||||
std::cout << "Invalid service index." << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
return activeServicesMap[userInputIndex];
|
||||
}
|
||||
|
||||
void CustomerMenu::selectService()
|
||||
{
|
||||
std::string vehicleNumber, vehicleBrand, vehicleModel;
|
||||
auto services = m_controller.getServices();
|
||||
util::Vector<std::string> selectedServices;
|
||||
util::clear();
|
||||
const Service* selectedService = selectServiceFromServices(services);
|
||||
if (selectedService == nullptr)
|
||||
{
|
||||
std::cout << "Failed to book service!";
|
||||
util::pressEnter();
|
||||
return;
|
||||
}
|
||||
selectedServices.push_back(selectedService->getId());
|
||||
util::clear();
|
||||
std::cout << "Enter vehicle number: ";
|
||||
util::read(vehicleNumber);
|
||||
std::cout << "Enter vehicle brand: ";
|
||||
util::read(vehicleBrand);
|
||||
std::cout << "Enter vehicle model: ";
|
||||
util::read(vehicleModel);
|
||||
m_controller.purchaseService(selectedServices, vehicleNumber, vehicleBrand, vehicleModel);
|
||||
std::cout << "Service has been booked successfully";
|
||||
util::pressEnter();
|
||||
}
|
||||
|
||||
void CustomerMenu::selectComboPackage()
|
||||
|
||||
Reference in New Issue
Block a user