#ifndef TARIFF_DAILY_TICKET_H_INCLUDED
#define TARIFF_DAILY_TICKET_H_INCLUDED

#include <QString>
#include <QDateTime>
#include <QDebug>
#include <QVector>
#include <QDebugStateSaver>


#include "tariff_customer.h"
#include "tariff_time_range.h"
#include "tariff_timebase.h"

struct ATBDailyTicket {
    ATBDailyTicket() = default;

    int daily_ticket_payment_option_id;
    int daily_ticket_id;
    int daily_ticket_price_id;

    int daily_ticket_tb_id;
                                        // time base setting for ticket:
                                        // absolute: using time stamps
                                        // relative: use offsets from
                                        //    some reference time point,
                                        //    typically "start time".

    QVector<int> daily_ticket_clearance_customer_ids;
                                        // who is allowed to buy the ticket:
                                        // list of customer types

    QTime daily_ticket_from_min;        // absolute time base
    QTime daily_ticket_to_max;
    int daily_ticket_from_offset_min; // relative time base
    int daily_ticket_to_offset_max;

    void reset() {
        daily_ticket_payment_option_id = 0;
        daily_ticket_id = 0;
        daily_ticket_price_id = 0;
        daily_ticket_tb_id = 0;
        daily_ticket_clearance_customer_ids.clear();
        daily_ticket_from_min = QTime();
        daily_ticket_to_max = QTime();
        daily_ticket_from_offset_min = 0;
        daily_ticket_to_offset_max = 0;
    }

    friend QDebug operator<<(QDebug debug, ATBDailyTicket const &ticket) {
        QDebugStateSaver saver(debug);

        debug.nospace()
                << "DAILY TICKET                         " << "\n"
                << "                    daily_ticket_id: " << ticket.daily_ticket_id << "\n"
                << "     daily_ticket_payment_option_id: " << ticket.daily_ticket_payment_option_id << "\n"
                << "              daily_ticket_tbase_id: " << ticket.daily_ticket_tb_id << "\n"
                << "              daily_ticket_price_id: " << ticket.daily_ticket_price_id << "\n"
                << "daily_ticket_clearance_customer_ids: " << ticket.daily_ticket_clearance_customer_ids << "\n"
                << "              daily_ticket_from_min: " << ticket.daily_ticket_from_min.toString(Qt::ISODate) << "\n"
                << "                daily_ticket_to_min: " << ticket.daily_ticket_to_max.toString(Qt::ISODate) << "\n";

        return debug;
    }
};

#endif // TARIFF_DAILY_TICKET_H_INCLUDED