Add: get appData for writing (typing exam)

This commit is contained in:
2019-08-10 23:12:43 +09:00
parent 2faa90a9e3
commit 6aa89a5db4
4 changed files with 251 additions and 193 deletions
+73 -48
View File
@@ -1,6 +1,8 @@
<?php <?php
class MenuCollection extends DBMethodContainer class MenuCollection extends DBMethodContainer
{ {
private $writingCollection = null;
public function getAppGroupName($appGroupCode) public function getAppGroupName($appGroupCode)
{ {
@@ -71,41 +73,22 @@ class MenuCollection extends DBMethodContainer
return $this->getTypingAppList($maestroID, $playerID, $appGroup, $language); return $this->getTypingAppList($maestroID, $playerID, $appGroup, $language);
case 2: case 2:
// return $this->getTypingExamWritingList($maestroID, $playerID, $appGroup, $language); if($writingCollection === null)
$writingCollection = new WritingCollection($this->mysqli);
$systemWritingList = $writingCollection->getSystemList($language);
return $systemWritingList;
case 4: // mouse play case 4: // mouse play
// return $this->getMouseAppList($maestroID, $playerID, $appGroup); return $this->getMouseAppList();
} }
} }
public function getTypingAppList($maestroID, $playerID, $appGroup, $language) public function getTypingAppList($maestroID, $playerID, $appGroup, $language)
{ {
/*
$query = " $query = "
SELECT A.AppID, A.AppName, A.KoreanName, A.AppType SELECT AppID, KoreanName
FROM app AS A FROM app
INNER JOIN active_app AS AA ON A.AppID = AA.AppID AND A.AppType = ? AND AA.MaestroID=?"; WHERE AppType=? AND Status=1";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param("ii", $this->getTypingAppType($appGroup, $language), $maestroID);
$stmt->execute();
$stmt->bind_result($app_id, $app_name, $korean_name, $app_type);
$resultArray = array();
while($stmt->fetch()) {
$rowArray = array();
$rowArray["AppID"] = $app_id;
$rowArray["AppName"] = $app_name;
$rowArray["KoreanName"] = $korean_name;
$rowArray["AppType"] = $app_type;
array_push($resultArray, $rowArray);
}
$stmt->close();
*/
$query = "
SELECT A.AppID, A.KoreanName
FROM app AS A
WHERE A.AppType=? AND A.Status=1";
$stmt = $this->mysqli->prepare($query); $stmt = $this->mysqli->prepare($query);
$stmt->bind_param("i", $this->getTypingAppType($appGroup, $language)); $stmt->bind_param("i", $this->getTypingAppType($appGroup, $language));
$stmt->execute(); $stmt->execute();
@@ -123,12 +106,26 @@ class MenuCollection extends DBMethodContainer
return $resultArray; return $resultArray;
} }
public function getMouseAppList($maestroID, $playerID, $appGroup, $language) public function getMouseAppList()
{ {
} $query = "
SELECT AppID, KoreanName
FROM app
WHERE AppType=100 AND Status=1";
$stmt = $this->mysqli->prepare($query);
$stmt->execute();
$stmt->bind_result($appID, $koreanName);
public function getTypingExamWritingList($maestroID, $playerID, $appGroup, $language) $resultArray = array();
{ while($stmt->fetch()) {
$rowArray = array();
$rowArray["appID"] = $appID;
$rowArray["koreanName"] = $koreanName;
array_push($resultArray, $rowArray);
}
$stmt->close();
return $resultArray;
} }
@@ -143,11 +140,13 @@ class MenuCollection extends DBMethodContainer
return $this->getTypingActiveAppList($maestroID, $playerID, $appGroup, $language); return $this->getTypingActiveAppList($maestroID, $playerID, $appGroup, $language);
case 2: case 2:
// return $this->getTypingExamWritingList($maestroID, $playerID, $appGroup, $language); if($writingCollection === null)
break; $writingCollection = new WritingCollection($this->mysqli);
$activeSystemWritingList = $writingCollection->getActiveSystemList($maestroID, $language);
return $activeSystemWritingList;
case 4: // mouse play case 4: // mouse play
// return $this->getMouseActiveAppList($maestroID, $playerID, $appGroup); return $this->getMouseActiveAppList($maestroID, $playerID, $appGroup);
} }
} }
@@ -173,9 +172,26 @@ class MenuCollection extends DBMethodContainer
return $resultArray; return $resultArray;
} }
public function getMouseActiveAppList($maestroID, $playerID, $appGroup, $language) public function getMouseActiveAppList($maestroID)
{ {
return null; $query = "
SELECT A.AppID
FROM app AS A
INNER JOIN active_app AS AA ON A.AppID = AA.AppID AND A.AppType=100 AND AA.MaestroID=?";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param("i", $maestroID);
$stmt->execute();
$stmt->bind_result($appID);
$resultArray = array();
while($stmt->fetch()) {
$rowArray = array();
$rowArray["appID"] = $appID;
array_push($resultArray, $rowArray);
}
$stmt->close();
return $resultArray;
} }
@@ -186,18 +202,32 @@ class MenuCollection extends DBMethodContainer
switch($appGroup) { switch($appGroup) {
case 0: // typing practice case 0: // typing practice
case 1: // typing test case 1: // typing test
return $this->getTypingHighestRecordList($maestroID, $playerID, $appList);
case 2:
// return $this->getTypingExamHighestRecordWritingList($maestroID, $playerID, $appGroup, $language);
case 3: // typing play case 3: // typing play
case 4: // mouse play case 4: // mouse play
return null; return $this->getTypingHighestRecordList($maestroID, $playerID, $appList);
break;
// case 2:
// return $this->getWritingHighestRecordList($maestroID, $playerID, $appList);
} }
} }
public function getWritingHighestRecordList($maestroID, $playerID, $appList)
{
if($writingCollection === null)
$writingCollection = new WritingCollection($this->mysqli);
$highestRecordArray = array();
$count = count($appList);
for($i = 0; $i < $count; $i++) {
$writingID = $appList[$i]["writingID"];
$highestRecord["writingID"] = $writingID;
$highestRecord["HighestRecord"] = $writingCollection->getWritingHighestRecord($maestroID, $playerID, $writingID);
array_push($highestRecordArray, $highestRecord);
}
return $highestRecordArray;
}
public function getTypingHighestRecordList($maestroID, $playerID, $appList) public function getTypingHighestRecordList($maestroID, $playerID, $appList)
{ {
$highestRecordArray = array(); $highestRecordArray = array();
@@ -231,11 +261,6 @@ class MenuCollection extends DBMethodContainer
return $highestRecord; return $highestRecord;
} }
public function getTypingExamHighestRecordWritingList($maestroID, $playerID, $appGroup, $language)
{
return null;
}
+81
View File
@@ -1,6 +1,87 @@
<?php <?php
class WritingCollection extends DBMethodContainer class WritingCollection extends DBMethodContainer
{ {
private function getLanguage($languageCode)
{
if(intval($languageCode) === 0)
return "korean";
return "english";
}
public function getSystemList($languageCode)
{
$language = $this->getLanguage($languageCode);
$query = "
SELECT WritingID, Name, Filename, LetterCount
FROM writing
WHERE Language=?";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param("s", $language);
$stmt->execute();
$stmt->bind_result($writingID, $name, $filename, $letterCount);
$writingList = array();
while($stmt->fetch()) {
$writingData = array();
$writingData["writingID"] = $writingID;
$writingData["name"] = $name;
$writingData["filename"] = $filename;
$writingData["letterCount"] = $letterCount;
array_push($writingList, $writingData);
}
$stmt->close();
return $writingList;
}
public function getActiveSystemList($maestroID, $languageCode)
{
$language = $this->getLanguage($languageCode);
$query = "
SELECT WritingID
FROM writing
WHERE Language=?";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param("s", $language);
$stmt->execute();
$stmt->bind_result($writingID);
$writingList = array();
while($stmt->fetch()) {
$writingData = array();
$writingData["writingID"] = $writingID;
array_push($writingList, $writingData);
}
$stmt->close();
return $writingList;
}
public function getWritingHighestRecord($maestroID, $playerID, $writingID)
{
$query = "
SELECT WritingID, HighestRecord
FROM typing_exam_highest_record
WHERE MaestroID=? AND PlayerID=? AND WritingID=?";
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param("iii", $maestroID, $playerID, $writingID);
$stmt->execute();
$stmt->bind_result($writingID, $highestRecord);
$returnValue = $stmt->fetch();
$stmt->close();
if($returnValue === NULL || $returnValue === FALSE)
return 0;
return $highestRecord;
}
public function getSystemWritingList() public function getSystemWritingList()
{ {
+12 -40
View File
@@ -23,17 +23,24 @@ if (!$isConnected) {
include "./../db/db_method_container.php"; include "./../db/db_method_container.php";
include "./../db/writing_collection.php";
include "./../db/menu_collection.php"; include "./../db/menu_collection.php";
$menuCollection = new MenuCollection($dbConnector->getMysqli()); $jsonBuilder->setData("appGroup", $appGroup);
$appList = $menuCollection->getAppList($maestroID, $playerID, $appGroup, $language);
$activeAppList = $menuCollection->getActiveAppList($maestroID, $playerID, $appGroup, $language);
$highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appList);
$menuCollection = new MenuCollection($dbConnector->getMysqli());
$jsonBuilder->setData("appGroup", $appGroup);
$jsonBuilder->setData("appGroupName", $menuCollection->getAppGroupName($appGroup)); $jsonBuilder->setData("appGroupName", $menuCollection->getAppGroupName($appGroup));
$jsonBuilder->setData("languageName", $menuCollection->getLanguageName($language)); $jsonBuilder->setData("languageName", $menuCollection->getLanguageName($language));
$jsonBuilder->setData("appGroup", $appGroup); $appList = $menuCollection->getAppList($maestroID, $playerID, $appGroup, $language);
$activeAppList = $menuCollection->getActiveAppList($maestroID, $playerID, $appGroup, $language);
if($appGroup === "2") // typing exam
$highestRecordList = $menuCollection->getWritingHighestRecordList($maestroID, $playerID, $appList);
else
$highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appList);
// $highestRecordList = $menuCollection->getHighestRecordList($maestroID, $playerID, $appList);
$appData["appList"] = $appList; $appData["appList"] = $appList;
$appData["activeAppList"] = $activeAppList; $appData["activeAppList"] = $activeAppList;
@@ -44,39 +51,4 @@ $appData["highestRecordList"] = $highestRecordList;
$jsonBuilder->setData("appData", $appData); $jsonBuilder->setData("appData", $appData);
$jsonBuilder->sendResultSuccess(); $jsonBuilder->sendResultSuccess();
/*
function activate_app($maestroID, $appID) {
global $db_conn;
$query = "
INSERT INTO active_app (MaestroID, AppID)
VALUES (?, ?);
";
$stmt = $db_conn->prepare($query);
$stmt->bind_param('ii', $maestroID, $appID);
$stmt->execute();
$stmt->bind_result();
}
function get_app_name($appID) {
global $db_conn;
$query = "
SELECT AppName, KoreanName
FROM app
WHERE AppID = ?
";
$stmt = $db_conn->prepare($query);
$stmt->bind_param('i', $appID);
$stmt->execute();
$stmt->bind_result($appName, $koreanName);
$stmt->fetch();
$result["AppName"] = $appName;
$result["KoreanName"] = $koreanName;
return $result;
}
*/
?> ?>
+84 -104
View File
@@ -9,102 +9,60 @@ QUnit.test( "AppList", function( assert ) {
dbService.setMaestroID(MAESTRO_ID); dbService.setMaestroID(MAESTRO_ID);
dbService.setPlayerID(PLAYER_ID); dbService.setPlayerID(PLAYER_ID);
var asyncFingerPositionKorean = assert.async(); var asyncTypingPracticeKorean = assert.async();
setTimeout(function() { setTimeout(function() {
var appGroup = 0; // finger position var appGroup = 0; // typing practice
var language = 0; // Korean var language = 0; // Korean
dbService.requestMainMenuAppData( dbService.requestMainMenuAppData(
appGroup, appGroup,
language, language,
(function(jsonData) { (function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "appGroup : finger position, Korean"); assert.equal(jsonData.appGroup, appGroup, "#0 appGroup : typing practice, Korean");
assert.equal(jsonData.appList.length, 8, "appList"); assert.equal(jsonData.appData.appList.length, 8, "appList");
assert.equal(jsonData.activeAppList.length, 8, "activeAppList"); assert.equal(jsonData.appData.activeAppList.length, 8, "activeAppList");
assert.equal(jsonData.highestRecordList.length, 8, "highestRecordList"); assert.equal(jsonData.appData.highestRecordList.length, 8, "highestRecordList");
asyncFingerPositionKorean(); asyncTypingPracticeKorean();
}).bind(this), }).bind(this),
(function(jsonData) { (function(jsonData) {
console.log(replyJSON); console.log(replyJSON);
asyncFingerPositionKorean(); asyncTypingPracticeKorean();
}).bind(this) }).bind(this)
); );
}); });
var asyncFingerPositionEnglish = assert.async(); var asyncTypingPracticeEnglish = assert.async();
setTimeout(function() { setTimeout(function() {
var appGroup = 0; // finger position var appGroup = 0; // typing practice
var language = 1; // English var language = 1; // English
dbService.requestMainMenuAppData( dbService.requestMainMenuAppData(
appGroup, appGroup,
language, language,
(function(jsonData) { (function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#1 appGroup : finger position, English"); assert.equal(jsonData.appGroup, appGroup, "#0 appGroup : typing practice, English");
assert.equal(jsonData.appList.length, 7, "appList"); assert.equal(jsonData.appData.appList.length, 7, "appList");
assert.equal(jsonData.activeAppList.length, 5, "activeAppList"); assert.equal(jsonData.appData.activeAppList.length, 5, "activeAppList");
assert.equal(jsonData.highestRecordList.length, 7, "highestRecordList"); assert.equal(jsonData.appData.highestRecordList.length, 7, "highestRecordList");
asyncFingerPositionEnglish(); asyncTypingPracticeEnglish();
}).bind(this), }).bind(this),
(function(jsonData) { (function(jsonData) {
console.log(replyJSON); console.log(replyJSON);
asyncFingerPositionEnglish(); asyncTypingPracticeEnglish();
}).bind(this)
);
});
var asyncPracticeKorean = assert.async();
setTimeout(function() {
var appGroup = 1; // typing practice
var language = 0; // Korean
dbService.requestMainMenuAppData(
appGroup,
language,
(function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing practice, Korean");
assert.equal(jsonData.appList.length, 10, "appList");
assert.equal(jsonData.activeAppList.length, 10, "activeAppList");
assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList");
asyncPracticeKorean();
}).bind(this),
(function(jsonData) {
console.log(replyJSON);
asyncPracticeKorean();
}).bind(this)
);
});
var asyncPracticeEnglish = assert.async();
setTimeout(function() {
var appGroup = 1; // typing practice
var language = 1; // English
dbService.requestMainMenuAppData(
appGroup,
language,
(function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing practice, English");
assert.equal(jsonData.appList.length, 8, "appList");
assert.equal(jsonData.activeAppList.length, 10, "activeAppList");
assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList");
asyncPracticeEnglish();
}).bind(this),
(function(jsonData) {
console.log(replyJSON);
asyncPracticeEnglish();
}).bind(this) }).bind(this)
); );
}); });
var asyncTestKorean = assert.async(); var asyncTestKorean = assert.async();
setTimeout(function() { setTimeout(function() {
var appGroup = 2; // typing test var appGroup = 1; // typing test
var language = 0; // Korean var language = 0; // Korean
dbService.requestMainMenuAppData( dbService.requestMainMenuAppData(
appGroup, appGroup,
language, language,
(function(jsonData) { (function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing test, Korean"); assert.equal(jsonData.appGroup, appGroup, "#1 appGroup : typing test, Korean");
assert.equal(jsonData.appList.length, 10, "appList"); assert.equal(jsonData.appData.appList.length, 10, "appList");
assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); assert.equal(jsonData.appData.activeAppList.length, 10, "activeAppList");
assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); assert.equal(jsonData.appData.highestRecordList.length, 10, "highestRecordList");
asyncTestKorean(); asyncTestKorean();
}).bind(this), }).bind(this),
(function(jsonData) { (function(jsonData) {
@@ -116,16 +74,16 @@ QUnit.test( "AppList", function( assert ) {
var asyncTestEnglish = assert.async(); var asyncTestEnglish = assert.async();
setTimeout(function() { setTimeout(function() {
var appGroup = 2; // typing test var appGroup = 1; // typing test
var language = 1; // English var language = 1; // English
dbService.requestMainMenuAppData( dbService.requestMainMenuAppData(
appGroup, appGroup,
language, language,
(function(jsonData) { (function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing test, English"); assert.equal(jsonData.appGroup, appGroup, "#1 appGroup : typing test, English");
assert.equal(jsonData.appList, 10, "appList"); assert.equal(jsonData.appData.appList.length, 8, "appList");
assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); assert.equal(jsonData.appData.activeAppList.length, 2, "activeAppList");
assert.equal(jsonData.highestRecordList.length, 10, "highestRecordList"); assert.equal(jsonData.appData.highestRecordList.length, 8, "highestRecordList");
asyncTestEnglish(); asyncTestEnglish();
}).bind(this), }).bind(this),
(function(jsonData) { (function(jsonData) {
@@ -135,6 +93,49 @@ QUnit.test( "AppList", function( assert ) {
); );
}); });
var asyncExamKorean = assert.async();
setTimeout(function() {
var appGroup = 2; // typing exam
var language = 0; // Korean
dbService.requestMainMenuAppData(
appGroup,
language,
(function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing exam, Korean");
assert.equal(jsonData.appData.appList.length, 4, "appList");
assert.equal(jsonData.appData.activeAppList.length, 4, "activeAppList");
assert.equal(jsonData.appData.highestRecordList.length, 4, "highestRecordList");
asyncExamKorean();
}).bind(this),
(function(jsonData) {
console.log(replyJSON);
asyncExamKorean();
}).bind(this)
);
});
var asyncExamEnglish = assert.async();
setTimeout(function() {
var appGroup = 2; // typing exam
var language = 1; // English
dbService.requestMainMenuAppData(
appGroup,
language,
(function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#2 appGroup : typing exam, English");
console.log(jsonData.appData);
assert.equal(jsonData.appData.appList.length, 4, "appList");
assert.equal(jsonData.appData.activeAppList.length, 4, "activeAppList");
assert.equal(jsonData.appData.highestRecordList.length, 4, "highestRecordList");
asyncExamEnglish();
}).bind(this),
(function(jsonData) {
console.log(replyJSON);
asyncExamEnglish();
}).bind(this)
);
});
var asyncTypingPlayKorean = assert.async(); var asyncTypingPlayKorean = assert.async();
setTimeout(function() { setTimeout(function() {
var appGroup = 3; // typing play var appGroup = 3; // typing play
@@ -143,10 +144,10 @@ QUnit.test( "AppList", function( assert ) {
appGroup, appGroup,
language, language,
(function(jsonData) { (function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : typing play, Korean"); assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing play, Korean");
assert.equal(jsonData.appList.length, 2, "appList"); assert.equal(jsonData.appData.appList.length, 2, "appList");
assert.equal(jsonData.activeAppList.length, 2, "activeAppList"); assert.equal(jsonData.appData.activeAppList.length, 2, "activeAppList");
assert.equal(jsonData.highestRecordList, null, "highestRecordList"); assert.equal(jsonData.appData.highestRecordList.length, 2, "highestRecordList");
asyncTypingPlayKorean(); asyncTypingPlayKorean();
}).bind(this), }).bind(this),
(function(jsonData) { (function(jsonData) {
@@ -164,10 +165,10 @@ QUnit.test( "AppList", function( assert ) {
appGroup, appGroup,
language, language,
(function(jsonData) { (function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : typing play, English"); assert.equal(jsonData.appGroup, appGroup, "#3 appGroup : typing play, English");
assert.equal(jsonData.appList.length, 2, "appList"); assert.equal(jsonData.appData.appList.length, 2, "appList");
assert.equal(jsonData.activeAppList.length, 2, "activeAppList"); assert.equal(jsonData.appData.activeAppList.length, 2, "activeAppList");
assert.equal(jsonData.highestRecordList, null, "highestRecordList"); assert.equal(jsonData.appData.highestRecordList.length, 2, "highestRecordList");
asyncTypingPlayEnglish(); asyncTypingPlayEnglish();
}).bind(this), }).bind(this),
(function(jsonData) { (function(jsonData) {
@@ -177,7 +178,7 @@ QUnit.test( "AppList", function( assert ) {
); );
}); });
var asyncMousePlayKorean = assert.async(); var asyncMousePlay = assert.async();
setTimeout(function() { setTimeout(function() {
var appGroup = 4; // mouse play var appGroup = 4; // mouse play
var language = 0; // Korean var language = 0; // Korean
@@ -185,36 +186,15 @@ QUnit.test( "AppList", function( assert ) {
appGroup, appGroup,
language, language,
(function(jsonData) { (function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#5 appGroup : mouse play, Korean"); assert.equal(jsonData.appGroup, appGroup, "#4 appGroup : mouse play");
assert.equal(jsonData.appList.length, 10, "appList"); assert.equal(jsonData.appData.appList.length, 5, "appList");
assert.equal(jsonData.activeAppList.length, 10, "activeAppList"); assert.equal(jsonData.appData.activeAppList.length, 5, "activeAppList");
assert.equal(jsonData.highestRecordList, null, "highestRecordList"); assert.equal(jsonData.appData.highestRecordList.length, 5, "highestRecordList");
asyncMousePlayKorean(); asyncMousePlay();
}).bind(this), }).bind(this),
(function(jsonData) { (function(jsonData) {
console.log(replyJSON); console.log(replyJSON);
asyncMousePlayKorean(); asyncMousePlay();
}).bind(this)
);
});
var asyncMousePlayEnglish = assert.async();
setTimeout(function() {
var appGroup = 4; // mouse play
var language = 1; // English
dbService.requestMainMenuAppData(
appGroup,
language,
(function(jsonData) {
assert.equal(jsonData.appGroup, appGroup, "#5 appGroup : mouse play, English");
assert.equal(jsonData.appList.length, 10, "appList");
assert.equal(jsonData.activeAppList.length, 10, "activeAppList");
assert.equal(jsonData.highestRecordList, null, "highestRecordList");
asyncMousePlayEnglish();
}).bind(this),
(function(jsonData) {
console.log(replyJSON);
asyncMousePlayEnglish();
}).bind(this) }).bind(this)
); );
}); });