Fix: show failed record in result, ranking

This commit is contained in:
2019-09-27 08:26:23 +09:00
parent 301a057099
commit 963012978a
14 changed files with 180 additions and 17 deletions
+78 -3
View File
@@ -190,7 +190,7 @@ class TypingExamCollection extends DBMethodContainer
$query = "
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
FROM typing_exam_record TER, player U
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND HOUR(TER.RecordDateTime) = HOUR(?) AND TER.WritingID = ?
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND HOUR(TER.RecordDateTime) = HOUR(?) AND TER.WritingID = ? AND TER.Record >= 0
GROUP BY TER.playerID
ORDER BY MAX(TER.Record) DESC;
";
@@ -215,7 +215,7 @@ class TypingExamCollection extends DBMethodContainer
$query = "
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
FROM typing_exam_record TER, player U
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND TER.WritingID = ?
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND TER.WritingID = ? AND TER.Record >= 0
GROUP BY TER.playerID
ORDER BY MAX(TER.Record) DESC;
";
@@ -240,7 +240,7 @@ class TypingExamCollection extends DBMethodContainer
$query = "
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
FROM typing_exam_record TER, player U
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND TER.WritingID = ?
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND TER.WritingID = ? AND TER.Record >= 0
GROUP BY TER.playerID
ORDER BY MAX(TER.Record) DESC;
";
@@ -260,5 +260,80 @@ class TypingExamCollection extends DBMethodContainer
return $rankingRecordArray;
}
function getRankingMinusRecordHour($maestroID, $writingID, $date, $time) {
$query = "
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
FROM typing_exam_record TER, player U
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND HOUR(TER.RecordDateTime) = HOUR(?) AND TER.WritingID = ? AND TER.Record < 0
GROUP BY TER.playerID
ORDER BY MAX(TER.Record) ASC;
";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param('issssi', $maestroID, $date, $date, $date, $time, $writingID);
$stmt->execute();
$stmt->bind_result($playerID, $name, $highScore);
$rankingRecordArray = array();
while($stmt->fetch()) {
$rankingRecord['PlayerID'] = $playerID;
$rankingRecord['Name'] = $name;
$rankingRecord['HighScore'] = $highScore;
array_push($rankingRecordArray, $rankingRecord);
}
$stmt->close();
return $rankingRecordArray;
}
function getRankingMinusRecordDay($maestroID, $writingID, $date) {
$query = "
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
FROM typing_exam_record TER, player U
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND TER.WritingID = ? AND TER.Record < 0
GROUP BY TER.playerID
ORDER BY MAX(TER.Record) ASC;
";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param('isssi', $maestroID, $date, $date, $date, $writingID);
$stmt->execute();
$stmt->bind_result($playerID, $name, $highScore);
$rankingRecordArray = array();
while($stmt->fetch()) {
$rankingRecord['PlayerID'] = $playerID;
$rankingRecord['Name'] = $name;
$rankingRecord['HighScore'] = $highScore;
array_push($rankingRecordArray, $rankingRecord);
}
$stmt->close();
return $rankingRecordArray;
}
function getRankingMinusRecordMonth($maestroID, $writingID, $date) {
$query = "
SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore
FROM typing_exam_record TER, player U
WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND TER.WritingID = ? AND TER.Record < 0
GROUP BY TER.playerID
ORDER BY MAX(TER.Record) ASC;
";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param('issi', $maestroID, $date, $date, $writingID);
$stmt->execute();
$stmt->bind_result($playerID, $name, $highScore);
$rankingRecordArray = array();
while($stmt->fetch()) {
$rankingRecord['PlayerID'] = $playerID;
$rankingRecord['Name'] = $name;
$rankingRecord['HighScore'] = $highScore;
array_push($rankingRecordArray, $rankingRecord);
}
$stmt->close();
return $rankingRecordArray;
}
}
?>
@@ -28,6 +28,8 @@ $typingExam = new TypingExamCollection($dbConnector->getMysqli());
$rankingRecordArray = $typingExam->getRankingRecordDay($maestroID, $writingID, $date);
$jsonBuilder->setData("rankingDay", $rankingRecordArray);
$rankingMinusRecordArray = $typingExam->getRankingMinusRecordDay($maestroID, $writingID, $date);
$jsonBuilder->setData("rankingMinusDay", $rankingMinusRecordArray);
if ($rankingRecordArray === null) {
$jsonBuilder->sendResultFail();
@@ -28,6 +28,8 @@ $typingExam = new TypingExamCollection($dbConnector->getMysqli());
$rankingRecordArray = $typingExam->getRankingRecordHour($maestroID, $writingID, $date, $time);
$jsonBuilder->setData("rankingHour", $rankingRecordArray);
$rankingMinusRecordArray = $typingExam->getRankingMinusRecordHour($maestroID, $writingID, $date, $time);
$jsonBuilder->setData("rankingMinusHour", $rankingMinusRecordArray);
if ($rankingRecordArray === null) {
$jsonBuilder->sendResultFail();
@@ -28,6 +28,8 @@ $typingExam = new TypingExamCollection($dbConnector->getMysqli());
$rankingRecordArray = $typingExam->getRankingRecordMonth($maestroID, $writingID, $date);
$jsonBuilder->setData("rankingMonth", $rankingRecordArray);
$rankingMinusRecordArray = $typingExam->getRankingMinusRecordMonth($maestroID, $writingID, $date);
$jsonBuilder->setData("rankingMinusMonth", $rankingMinusRecordArray);
if ($rankingRecordArray === null) {
$jsonBuilder->sendResultFail();