-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPackage.cpp
More file actions
33 lines (28 loc) · 1.01 KB
/
Copy pathPackage.cpp
File metadata and controls
33 lines (28 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "Package.h"
#include <sstream>
Package::Package(int id, int origin, int destination, double weight, double created_time)
: id(id), origin_station_id(origin), destination_station_id(destination),
weight(weight), status(PackageStatus::PENDING), current_train_id(-1),
created_time(created_time), delivered_time(-1.0) {}
void Package::setStatus(PackageStatus new_status) {
status = new_status;
}
void Package::assignToTrain(int train_id) {
current_train_id = train_id;
status = PackageStatus::IN_TRANSIT;
}
void Package::deliver(double time) {
status = PackageStatus::DELIVERED;
delivered_time = time;
current_train_id = -1;
}
std::string Package::getInfo() const {
std::ostringstream oss;
oss << "Package #" << id << " [" << packageStatusToString(status) << "] "
<< origin_station_id << " -> " << destination_station_id
<< " (" << weight << " kg)";
if (current_train_id != -1) {
oss << " on Train #" << current_train_id;
}
return oss.str();
}