Implemented GetDailyTicketPrice().
To be tested.
This commit is contained in:
parent
1ea42f88ba
commit
f8dc59532c
@ -836,3 +836,82 @@ uint32_t Calculator::GetDurationForPrice(Configuration *cfg, int price) const {
|
||||
|
||||
return duration;
|
||||
}
|
||||
|
||||
std::optional<struct price_t>
|
||||
Calculator::GetDailyTicketPrice(Configuration* cfg,
|
||||
QDateTime const &startDatetime,
|
||||
QDateTime &endTime,
|
||||
PERMIT_TYPE permitType) {
|
||||
struct price_t price;
|
||||
std::optional<struct price_t> value;
|
||||
|
||||
std::optional<ATBWeekDaysWorktime> workTime =
|
||||
cfg->getWeekDayWorkTime(startDatetime.time(),
|
||||
(Qt::DayOfWeek)startDatetime.date().dayOfWeek());
|
||||
if (workTime) {
|
||||
ATBWeekDaysWorktime const &wt = workTime.value();
|
||||
endTime = startDatetime;
|
||||
endTime.setTime(QTime::fromString(wt.pwd_time_to.c_str(), Qt::ISODate));
|
||||
|
||||
std::optional<QVector<ATBDailyTicket>> dailyTickets = cfg->getDailyTicketsForAllKeys();
|
||||
if (dailyTickets) {
|
||||
QVector<ATBDailyTicket> const tickets = dailyTickets.value();
|
||||
|
||||
switch (permitType) {
|
||||
case PERMIT_TYPE::DAY_TICKET_ADULT: {
|
||||
std::optional<ATBCustomer> c = cfg->getCustomerForType(ATBCustomer::CustomerType::ADULT);
|
||||
if (c) {
|
||||
for (QVector<ATBDailyTicket>::size_type i=0; i<tickets.size(); ++i) {
|
||||
if (tickets[i].daily_ticket_clearance_customer_ids.contains(c.value().cust_id)) {
|
||||
int priceId = tickets[i].daily_ticket_price_id;
|
||||
std::optional<QVector<ATBPaymentRate>> const &paymentRates = cfg->getPaymentRateForKey(priceId);
|
||||
if (paymentRates) {
|
||||
QVector<ATBPaymentRate> const &pr = paymentRates.value();
|
||||
if (pr.size() > 0) {
|
||||
price.netto = pr.at(0).pra_price;
|
||||
value.value_or(price);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case PERMIT_TYPE::DAY_TICKET_TEEN: {
|
||||
std::optional<ATBCustomer> c = cfg->getCustomerForType(ATBCustomer::CustomerType::TEEN);
|
||||
if (c) {
|
||||
for (QVector<ATBDailyTicket>::size_type i=0; i<tickets.size(); ++i) {
|
||||
if (tickets[i].daily_ticket_clearance_customer_ids.contains(c.value().cust_id)) {
|
||||
int priceId = tickets[i].daily_ticket_price_id;
|
||||
std::optional<QVector<ATBPaymentRate>> const &paymentRates = cfg->getPaymentRateForKey(priceId);
|
||||
if (paymentRates) {
|
||||
QVector<ATBPaymentRate> const &pr = paymentRates.value();
|
||||
if (pr.size() > 0) {
|
||||
price.netto = pr.at(0).pra_price;
|
||||
value.value_or(price);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case PERMIT_TYPE::DAY_TICKET_CHILD: {
|
||||
}
|
||||
// [[fallthrough]];
|
||||
case PERMIT_TYPE::SHORT_TERM_PARKING: {
|
||||
}
|
||||
// [[fallthrough]];
|
||||
case PERMIT_TYPE::DAY_TICKET: {
|
||||
}
|
||||
// [[fallthrough]];
|
||||
case PERMIT_TYPE::SZEGED_START:
|
||||
// [[fallthrough]];
|
||||
case PERMIT_TYPE::SZEGED_STOP:
|
||||
// [[fallthrough]];
|
||||
case PERMIT_TYPE::INVALID:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user