EHM DAL 0.2.5
Data abstraction layer for Eastside Hockey Manager
Loading...
Searching...
No Matches
schedule_game_table.h
1#pragma once
2
3// Application headers
4#include "include/tools/schedule_generator/schedule_template_generator/schedule_game.h"
5
6// Qt headers
7#include <QAbstractTableModel>
8#include <QDate>
9#include <memory>
10
11// --- Schedule generator game table --- //
12namespace ehm_dal::tools::schedule_template_generator {
13
14class ScheduleClub;
15
19class ScheduleGameTable : public QAbstractTableModel
20{
21public:
23
24 // Add data
25 void addGame(const std::shared_ptr<ScheduleClub> road_club,
26 const std::shared_ptr<ScheduleClub> home_club,
27 const QDate &date);
28
29 // Get data - counts
30 qint32 columnCount(const QModelIndex &parent = QModelIndex()) const override;
31 qint32 rowCount(const QModelIndex &parent = QModelIndex()) const override;
32
33 // Get data - dates
34 qint32 dateCount() const;
35 QDate endDate() const;
36 QDate startDate() const;
37
38 // Get data - game counts
39 inline qint32 gameCount() const { return rowCount(); } // Convenience function
40 qint32 gameCount(const std::shared_ptr<ScheduleClub> &road_club,
41 const std::shared_ptr<ScheduleClub> &home_club) const;
42 qint32 gameCount(const qint32 road_club_encoded_id, const qint32 home_club_encoded_id) const;
43 qint32 gameCountAllMatchups(const std::shared_ptr<ScheduleClub> &club_a,
44 const std::shared_ptr<ScheduleClub> &club_b) const;
45 qint32 gameCountAllMatchups(const qint32 club_a_encoded_id,
46 const qint32 club_b_encoded_id) const;
47 qint32 gameCountAllMatchups(const std::shared_ptr<ScheduleClub> &club) const;
48 qint32 gameCountAllMatchups(const qint32 club_encoded_id) const;
49 qint32 gameCountHome(const std::shared_ptr<ScheduleClub> &home_club) const;
50 qint32 gameCountHome(const qint32 home_club_encoded_id) const;
51 qint32 gameCountRoad(const std::shared_ptr<ScheduleClub> &road_club) const;
52 qint32 gameCountRoad(const qint32 road_club_encoded_id) const;
53
54 // Get data - games
55 QVariant data(const QModelIndex &index, qint32 role = Qt::DisplayRole) const override;
56
57 // Reset
58 void reset();
59
60 // Set data
61 void addDays(const qint32 days);
62 void setStartYear(const qint32 start_year);
63 // bool setData(const QModelIndex &index, const QVariant &value, qint32 role = Qt::EditRole) override;
64
65 // Start year
66 inline qint32 startYear() const { return start_year_; }
67
68 // Column flags
69 enum ENUM_COLUMNS {
70 ROAD_TEAM_ENCODED_ID,
71 HOME_TEAM_ENCODED_ID,
72 DATE,
73 DAY_OF_MONTH,
74 MONTH,
75 YEAR_OFFSET,
76 COLUMN_COUNT
77 };
78
79private:
80 std::vector<ScheduleGame> data_;
81
82 // Start year
83 enum ENUM_FLAGS { DEFAULT_START_YEAR };
84 qint32 start_year_{DEFAULT_START_YEAR};
85
86 void validateYear(const qint32 year);
87};
88} // namespace ehm_dal::tools::schedule_template_generator
The ScheduleGameTable class is a container for ScheduleGames.
Definition: schedule_game_table.h:20