Implement Purchase Individual Service functionality
<UserStory> CUS006 Purchase Individual Service </UserStory>
<Changes>
1. Added service selection flow in CustomerMenu to display active services, allow customer to choose a service, and collect vehicle details for booking.
2. Implemented Controller::purchaseService to delegate service booking requests to ServiceManagementService.
3. Added ServiceManagementService::purchaseService logic to validate authenticated user, fetch selected services, create a ServiceBooking, and persist it in DataStore.
4. Updated ServiceBooking constructor and assigned technician handling to use User* references instead of technician name strings.
5. Integrated ServiceManagementService dependency into Controller
</Changes>
<Test>
Validate customer service booking flow and service status tracking
Precondition:
1. Customer account exists and is logged into the system.
2. Active services are available in the system.
3. Service bookings can be created and stored in DataStore.
4. Technician account exists to update service status.
Steps:
1. Navigate to Customer Menu and select the individual service booking option.
2. View the list of active services and select a service.
3. Enter vehicle number, vehicle brand, and vehicle model, then confirm booking.
- Verify that the service booking is created successfully with an initial status.
4. Technician updates the service booking status.
- Verify that the latest status is reflected in the system.
5. Customer refreshes or views service booking history.
- Verify that the updated status is shown correctly in booking history.
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
This commit is contained in:
@@ -5,10 +5,10 @@ int ServiceBooking::m_uid = 0;
|
||||
ServiceBooking::ServiceBooking()
|
||||
: m_id("SRV" + std::to_string(++m_uid)),
|
||||
m_customer(nullptr),
|
||||
m_assignedTechnician(nullptr),
|
||||
m_discountPercentage(0.0) {}
|
||||
|
||||
ServiceBooking::ServiceBooking(
|
||||
const std::string& id,
|
||||
util::ServiceJobStatus status,
|
||||
const util::Map<std::string,
|
||||
Service*>& services,
|
||||
@@ -17,8 +17,6 @@ ServiceBooking::ServiceBooking(
|
||||
const std::string& vehicleNumber,
|
||||
const std::string& vehicleBrand,
|
||||
const std::string& vehicleModel,
|
||||
const std::string& assignedTechnicianId,
|
||||
const std::string& assignedTechnician,
|
||||
double discountPercentage
|
||||
)
|
||||
: m_id("SRV" + std::to_string(++m_uid)),
|
||||
@@ -29,8 +27,8 @@ ServiceBooking::ServiceBooking(
|
||||
m_vehicleNumber(vehicleNumber),
|
||||
m_vehicleBrand(vehicleBrand),
|
||||
m_vehicleModel(vehicleModel),
|
||||
m_assignedTechnicianId(assignedTechnicianId),
|
||||
m_assignedTechnician(assignedTechnician),
|
||||
m_assignedTechnicianId(""),
|
||||
m_assignedTechnician(nullptr),
|
||||
m_discountPercentage(discountPercentage)
|
||||
{
|
||||
}
|
||||
@@ -80,7 +78,7 @@ const std::string& ServiceBooking::getAssignedTechnicianId() const
|
||||
return m_assignedTechnicianId;
|
||||
}
|
||||
|
||||
const std::string& ServiceBooking::getAssignedTechnician() const
|
||||
User* ServiceBooking::getAssignedTechnician() const
|
||||
{
|
||||
return m_assignedTechnician;
|
||||
}
|
||||
@@ -135,7 +133,7 @@ void ServiceBooking::setAssignedTechnicianId(const std::string& assignedTechnici
|
||||
m_assignedTechnicianId = assignedTechnicianId;
|
||||
}
|
||||
|
||||
void ServiceBooking::setAssignedTechnician(const std::string& assignedTechnician)
|
||||
void ServiceBooking::setAssignedTechnician(User* assignedTechnician)
|
||||
{
|
||||
m_assignedTechnician = assignedTechnician;
|
||||
}
|
||||
|
||||
@@ -19,12 +19,11 @@ private:
|
||||
std::string m_vehicleBrand;
|
||||
std::string m_vehicleModel;
|
||||
std::string m_assignedTechnicianId;
|
||||
std::string m_assignedTechnician;
|
||||
User* m_assignedTechnician;
|
||||
double m_discountPercentage;
|
||||
public:
|
||||
ServiceBooking();
|
||||
ServiceBooking(
|
||||
const std::string& id,
|
||||
util::ServiceJobStatus status,
|
||||
const util::Map<std::string,
|
||||
Service*>& services,
|
||||
@@ -33,8 +32,6 @@ public:
|
||||
const std::string& vehicleNumber,
|
||||
const std::string& vehicleBrand,
|
||||
const std::string& vehicleModel,
|
||||
const std::string& assignedTechnicianId,
|
||||
const std::string& assignedTechnician,
|
||||
double discountPercentage
|
||||
);
|
||||
const std::string& getId() const;
|
||||
@@ -46,7 +43,7 @@ public:
|
||||
const std::string& getVehicleBrand() const;
|
||||
const std::string& getVehicleModel() const;
|
||||
const std::string& getAssignedTechnicianId() const;
|
||||
const std::string& getAssignedTechnician() const;
|
||||
User* getAssignedTechnician() const;
|
||||
double getDiscountPercentage() const;
|
||||
void setId(const std::string& id);
|
||||
void setStatus(const util::ServiceJobStatus& status);
|
||||
@@ -57,6 +54,6 @@ public:
|
||||
void setVehicleBrand(const std::string& vehicleBrand);
|
||||
void setVehicleModel(const std::string& vehicleModel);
|
||||
void setAssignedTechnicianId(const std::string& assignedTechnicianId);
|
||||
void setAssignedTechnician(const std::string& assignedTechnician);
|
||||
void setAssignedTechnician(User* assignedTechnician);
|
||||
void setDiscountPercentage(double discountPercentage);
|
||||
};
|
||||
Reference in New Issue
Block a user