#include #include "FlightTicket.h" int FlightTicket::numberOfFirstClass = 0; FlightTicket::FlightTicket() : price(0.0), flightFrom("From?"), flightTo("To?"), addBaggage(false), ticketType(FlightTicketType::Economy) { ptrFlightDate = new Date(1, 1, 1971); } FlightTicket::FlightTicket(const FlightTicket& t) : price(t.price), flightFrom(t.flightFrom), flightTo(t.flightTo), addBaggage(t.addBaggage), ticketType(t.ticketType), ptrFlightDate(t.ptrFlightDate) { if (ticketType == FlightTicketType::FirstClass) numberOfFirstClass++; } FlightTicket::FlightTicket(double price, std::string ff, std::string ft, bool bag, FlightTicketType type, Date* date1) : price(price), flightFrom(ff), flightTo(ft), addBaggage(bag), ticketType(type), ptrFlightDate(date1) { if (ticketType == FlightTicketType::FirstClass) numberOfFirstClass++; } FlightTicket::~FlightTicket() { } double FlightTicket::getTotalPrice() const { double sum = price; if (FlightTicketType::Business == ticketType) sum *= 1.20; else if (FlightTicketType::FirstClass == ticketType) sum *= 1.50; if (addBaggage == true) sum += 50; return sum; } std::string FlightTicket::toString() const { std::stringstream ss; ss << "Flight ticket details: " << "\n"; ss << "\tPrice: " << price << "\n"; ss << "\tAdditional baggage: " << (addBaggage ? "Yes" : "No") << "\n"; ss << "\tFrom: " << flightFrom << "\n"; ss << "\tTo: " << flightTo << "\n"; ss << "\tTicket type: " << getTicketTypeString() << "\n"; ss << "\tDeparture: " << this->ptrFlightDate->toString() << "\n"; return ss.str(); } double FlightTicket::getPrice() const { return price; } void FlightTicket::setPrice(double price) { this->price = price; } bool FlightTicket::isAddBaggage() const { return addBaggage; } void FlightTicket::setAddBaggage(bool addBaggage) { this->addBaggage = addBaggage; } Date* FlightTicket::getFlightDate() const { return ptrFlightDate; } void FlightTicket::setFlightDate(Date* flightDate) { this->ptrFlightDate = flightDate; } const std::string& FlightTicket::getFlightFrom() const { return flightFrom; } void FlightTicket::setFlightFrom(const std::string& flightFrom) { this->flightFrom = flightFrom; } const std::string& FlightTicket::getFlightTo() const { return flightTo; } void FlightTicket::setFlightTo(const std::string& flightTo) { this->flightTo = flightTo; } FlightTicketType FlightTicket::getTicketType() const { return ticketType; } void FlightTicket::setTicketType(FlightTicketType ticketType) { if (ticketType < FlightTicketType::Economy || ticketType > FlightTicketType::FirstClass) { std::cout << "Wrong flight ticket type "; this->ticketType = FlightTicketType::Economy; } else this->ticketType = ticketType; if (ticketType == FlightTicketType::FirstClass) numberOfFirstClass++; } std::string FlightTicket::getTicketTypeString() const { switch (ticketType) { case FlightTicketType::Economy: return "Economy"; break; case FlightTicketType::Business: return "Business"; break; case FlightTicketType::FirstClass: return "First Class"; break; default: return "?"; } } int FlightTicket::GetNumberOfFirstClass() { return numberOfFirstClass; } bool FlightTicket::isEqual(const FlightTicket& drugi) const { if (this->price == drugi.price && this->addBaggage == drugi.addBaggage && this->getTicketType() == drugi.getTicketType() && this->flightFrom == drugi.flightFrom && this->flightTo == drugi.flightTo && this->ptrFlightDate->isEqual(*drugi.ptrFlightDate)) return true; return false; }