-
Notifications
You must be signed in to change notification settings - Fork 0
/
playerSummary.cpp
94 lines (76 loc) · 2.36 KB
/
playerSummary.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include"playerSummary.h"
PlayerSummary::PlayerSummary(QWidget *parent, const char* name) : QVGroupBox( parent, name)
{
table = new QDataTable(this);
table->setNullText("");
buildSummaryTable();
cursor = new QSqlCursor("summary");
cursor->setMode(QSqlCursor::ReadOnly);
table->setSqlCursor( cursor, TRUE, TRUE);
table->setAutoDelete(TRUE);
table->refresh();
table->adjustColumn(0);
}
void PlayerSummary::rebuild()
{
buildSummaryTable();
table->refresh();
}
QString PlayerSummary::positionName(int positionID)
{
QSqlQuery sql("SELECT positionName FROM positions WHERE positionID =" + QString::number(positionID) );
if(!sql.next())
SqlBomb("Player Summary Error C", "Could not retrieve Position Name");
return(sql.value(0).toString() );
}
void PlayerSummary::buildSummaryTable()
{
QSqlQuery * q;
//int lastID;
//
// Create table for view
//
q = new QSqlQuery;
q->exec("DELETE FROM summary");
delete q;
q = new QSqlQuery;
if(!q->exec("SELECT DISTINCT ID from assignments ORDER BY depth"))
SqlBomb("PlayerSummary A","Select Statement Error");
while(q->next())
{
QSqlQuery sql;
sql.prepare("INSERT INTO summary (Name, position1, position2, position3) VALUES (?,?,?,?) ");
for(int i=0;i<4;i++)
sql.bindValue(i, "");
QSqlQuery fetchName("SELECT Name FROM players WHERE ID=" + q->value(0).toString() );
if(!fetchName.next())
SqlBomb("PlayerSummary B", "Select Name Error");
sql.addBindValue(fetchName.value(0).toString());
QSqlQuery getPositions("Select depth, positionID FROM assignments WHERE ID =" + q->value(0).toString() );
if(!getPositions.isActive())
SqlBomb(" PlayerSummary C", "Select depth, positionID error");
while(getPositions.next())
sql.addBindValue( positionName( getPositions.value(1).toInt() ) +
QString::number(getPositions.value(0).toInt()+ 1) );
sql.exec();
}
delete q;
q = new QSqlQuery();
if(!q->exec(" INSERT INTO summary (Name)"
" SELECT DISTINCT Name"
" FROM players"
" WHERE ID NOT IN(SELECT DISTINCT ID FROM assignments)"))
{
delete q;
SqlBomb("PlayerSummary Error D", "Cannot Insert inactive players into summary");
}
}
void PlayerSummary::SqlBomb(QString position, QString Description)
{
{
QString s = QSqlDatabase::database()->lastError().databaseText();
Description = Description + "\n\n\n" + s;
QMessageBox::critical(0, position, Description);
qApp->quit();
}
}