Files
cinema-ticket-management-sy…/core/utils/reservation_manager.h
T
2026-07-12 14:34:52 +04:00

63 lines
1.7 KiB
C++

#ifndef RESERVATION_MANAGER_H
#define RESERVATION_MANAGER_H
#include "day_manager.h"
class ReservationManager {
private:
DayManager dayReference_;
QMap<qsizetype /* index */, DayManager> days_;
qsizetype createdRecords_;
qsizetype dayBound_;
qsizetype dayRange_;
qsizetype excludedDays_;
qsizetype lastIndex_;
public:
inline ReservationManager() noexcept;
explicit ReservationManager(qsizetype dayRange, qsizetype dayBound,
const DayManager &reference);
inline DayManager reference() const noexcept;
inline qsizetype createdRecords() const noexcept;
inline void setDayBound(qsizetype dayBound);
inline void setDayRange(qsizetype dayRange);
void setReference(const DayManager &manager);
qsizetype calculateAvailableDaysCount() const;
qsizetype calculatePossibleReservations(qint64 requiredMs) const;
qsizetype calculateAvailableSlotsCount() const;
QPair<QDateTime, QTime> reserve(const QTime &duration);
private:
DayManager &dayManager(qsizetype dayIndex);
QPair<QDateTime, QTime> reserve(qsizetype dayIndex, const QTime &duration);
void prepareDaysRange();
private:
friend class ReservationManagerTest;
};
ReservationManager::ReservationManager() noexcept
: createdRecords_(0), dayBound_(-1), excludedDays_(0), lastIndex_(-1),
dayReference_(DayManager()) {}
DayManager ReservationManager::reference() const noexcept {
return dayReference_;
}
inline qsizetype ReservationManager::createdRecords() const noexcept {
return createdRecords_;
}
void ReservationManager::setDayBound(qsizetype dayBound) {
dayBound_ = dayBound;
}
void ReservationManager::setDayRange(qsizetype dayRange) {
dayRange_ = dayRange;
}
#endif // RESERVATION_MANAGER_H