diff --git a/src/web/module/maestro_section_record.html b/src/web/module/maestro_section_record.html index d43b4c9..2d69b73 100644 --- a/src/web/module/maestro_section_record.html +++ b/src/web/module/maestro_section_record.html @@ -182,7 +182,9 @@ function makeTypingAppSubjectList(appList) { for(var i = 0; i < appList.length; i++) { var appData = appList[i]; - if(appData.appID < 50) + if(appData.appID == 200) // 긴 글 시험 + continue; + else if(appData.appID < 50) // 손가락 연습, 단어/문장 연습 continue; else if(appData.koreanName == "") continue; @@ -269,7 +271,7 @@ function getPlayerRecordList(limitCount) { + "&AppID=" + appID + "&LimitCount=" + limitCount, (function(jsonData) { - // console.log(jsonData); + console.log(jsonData); showRecordCount(jsonData); makeRecordTableContent(jsonData["RecordList"]); }), @@ -303,43 +305,92 @@ function makeRecordTableContent(recordList) { // console.log(recordList); for(var i = 0; i < recordList.length; i++) { var record = recordList[i]; - addRecordListItem(record.Date, record.Time, record.PlayerName, record.Subject, record.Record); + addRecordListItem(record.Id, record.Date, record.Time, record.PlayerName, record.Subject, record.Record); } } function showNoResultContent() { + $("#record_table_content").empty(); $("#record_table_content").append('\ \ - 데이터가 없습니다.\ + 데이터가 없습니다.\ \ '); } -function addRecordListItem(date, time, name, subject, record) { +function addRecordListItem(id, date, time, name, subject, record) { if(record >= 0) { $("#record_table_content").append('\ \ + ' + id + '\ ' + date + '\ ' + time + '\ ' + name + '\ ' + subject + '\ ' + record + '\ + \ \ '); } else { var disqualificationRecord = -1 * record; $("#record_table_content").append('\ \ + ' + id + '\ ' + date + '\ ' + time + '\ ' + name + '\ ' + subject + '\ (아깝) ' + disqualificationRecord + '\ + \ \ '); } } +function deleteRecord(target) { + console.log(target); + var id = $(target).parent().siblings().eq(0).text(); + var date = $(target).parent().siblings().eq(1).text(); + var time = $(target).parent().siblings().eq(2).text(); + var name = $(target).parent().siblings().eq(3).text(); + var subject = $(target).parent().siblings().eq(4).text(); + var record = $(target).parent().siblings().eq(5).text(); + + var message = "선택한 기록을 삭제하시겠습니까?\n" + + "(경고: 기록을 삭제한 후에는 되살릴 수 없습니다)\n\n" + + "* 날짜: " + date + "\n" + + "* 시간: " + time + "\n" + + "* 이름: " + name + "\n" + + "* 과목: " + subject + "\n" + + "* 기록: " + record; + if (confirm(message)) { + console.log("delete record: " + id); + + var appID = $(":radio[name='subject_group']:checked").val(); + if(typeof(appID) == "undefined") { + showErrorMessage("검색할 과목을 선택하세요."); + return false; + } + + sendRequestServer( //url, sendParams, onSuccess, onFail, isDebugMode); + "./../server/record/delete_record.php", + "MaestroID=" + maestroID + + "&AppID=" + appID + + "&BestRecordID=" + id, + + (function(jsonData) { + console.log(jsonData); + requestPlayerRecordListAll(); + }), + + (function(errorMessage, errorCode) { + showErrorMessage(errorMessage, "error"); + }) + + ); + } +} + @@ -491,17 +542,19 @@ function addRecordListItem(date, time, name, subject, record) { + + - + diff --git a/src/web/server/record/delete_record.php b/src/web/server/record/delete_record.php new file mode 100644 index 0000000..8ce77dd --- /dev/null +++ b/src/web/server/record/delete_record.php @@ -0,0 +1,386 @@ +close(); + exit; +} + +//sendSuccessReplyForTest(); + + +// 앱 종류에 따라 +if($selected_app_id == 3000) { // 자격증 타이머 + // 기록 삭제 : license_score + $deletedRecordCount = delete_license_score($best_record_id); + if($deletedRecordCount < 1) { + sendErrorMessageAndExit("자격증 타이머 기록 삭제 실패"); + } +} else if($selected_app_id == 1004 || $selected_app_id == 1005) { // 긴글 (시험) + $record_info_array = get_typing_exam_record_info($best_record_id); + $player_id = $record_info_array["PlayerID"]; + $writing_id = $record_info_array["WritingID"]; + if($player_id === null || $writing_id === null) { + sendErrorMessageAndExit("긴글 (시험) 기록 오류"); + } + + // 기록 삭제 : typing_exam_record + $deletedRecordCount = delete_typing_exam_record($best_record_id); + if($deletedRecordCount < 1) { + sendErrorMessageAndExit("긴글 (시험) 기록 삭제 실패"); + } + + // typing_exam_highest_record 업데이트 + updateTypingExamHighestRecord($maestro_id, $player_id, $writing_id); +} +else { // 일반 앱 + $record_info_array = get_best_record_info($best_record_id); + $player_id = $record_info_array["PlayerID"]; + $app_id = $record_info_array["AppID"]; + if($player_id === null || $app_id === null) { + sendErrorMessageAndExit("기록 오류"); + } + + // 기록 삭제 : best_record + $deletedRecordCount = delete_best_record($best_record_id); + if($deletedRecordCount < 1) { + sendErrorMessageAndExit("기록 삭제 실패"); + } + + // app_highest_record 업데이트 + updateAppHighestRecord($maestro_id, $player_id, $app_id); +} + +set_data("message", "기록 삭제 성공"); +send_result_success(); + +$db_conn->close(); +exit; + + +function sendErrorMessageAndExit($message) { + global $db_conn; + + set_error_message($message); + send_result_fail(); + $db_conn->close(); + exit; +} + + +function updateTypingExamHighestRecord($maestro_id, $player_id, $writing_id) { + global $db_conn; + + $record_info_array = get_typing_exam_best_record_info($maestro_id, $player_id, $writing_id); + $record = $record_info_array["Record"]; + $record_date_time = $record_info_array["RecordDateTime"]; + if ($record === null || $record_date_time === null) { + delete_typing_exam_highest_record($maestro_id, $player_id, $writing_id); + return; + } + + $highest_record_id = get_typing_exam_highest_record_id($maestro_id, $player_id, $writing_id); + if ($highest_record_id !== null && $highest_record_id > 0) { + update_typing_exam_highest_record($highest_record_id, $record, $record_date_time); + } else { + insert_new_typing_exam_highest_record($maestro_id, $player_id, $writing_id, $record, $record_date_time); + } +} + +function updateAppHighestRecord($maestro_id, $player_id, $app_id) { + $record_info_array = get_best_record_record_info($maestro_id, $player_id, $app_id); + $best_record = $record_info_array["BestRecord"]; + $record_date_time = $record_info_array["RecordDateTime"]; + if ($best_record === null || $record_date_time === null) { + delete_app_highest_record($maestro_id, $player_id, $app_id); + return; + } + + $highest_record_id = get_app_highest_record_id($maestro_id, $player_id, $app_id); + if ($highest_record_id !== null && $highest_record_id > 0) { + update_app_highest_record($highest_record_id, $best_record, $record_date_time); + } else { + insert_new_app_highest_record($maestro_id, $player_id, $app_id, $best_record, $record_date_time); + } +} + +function delete_license_score($best_record_id) { + global $db_conn; + + $query = " + DELETE FROM license_score + WHERE LicenseScoreID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("i", $best_record_id); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function get_typing_exam_record_info($best_record_id) { + global $db_conn; + + $query = " + SELECT PlayerID, WritingID + FROM typing_exam_record + WHERE TypingExamRecordID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("i", $best_record_id); + $stmt->execute(); + $stmt->bind_result($player_id, $writing_id); + $stmt->fetch(); + $stmt->close(); + + return array("PlayerID" => $player_id, "WritingID" => $writing_id); +} + +function delete_typing_exam_record($best_record_id) { + global $db_conn; + + $query = " + DELETE FROM typing_exam_record + WHERE TypingExamRecordID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("i", $best_record_id); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function get_typing_exam_best_record_info($maestro_id, $player_id, $writing_id) { + global $db_conn; + + $query = " + SELECT Record, RecordDateTime + FROM typing_exam_record + WHERE MaestroID = ? AND PlayerID = ? AND WritingID = ? AND Record > 0 + ORDER BY Record DESC + LIMIT 1 + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("iii", $maestro_id, $player_id, $writing_id); + $stmt->execute(); + $stmt->bind_result($record, $record_date_time); + $stmt->fetch(); + $stmt->close(); + + return array("Record" => $record, "RecordDateTime" => $record_date_time); +} + +function get_typing_exam_highest_record_id($maestro_id, $player_id, $writing_id) { + global $db_conn; + + $query = " + SELECT TypingExamHighestRecordID + FROM typing_exam_highest_record + WHERE MaestroID = ? AND PlayerID = ? AND WritingID = ? AND HighestRecord > 0 + ORDER BY HighestRecord DESC + LIMIT 1 + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("iii", $maestro_id, $player_id, $writing_id); + $stmt->execute(); + $stmt->bind_result($new_best_record_id); + $stmt->fetch(); + $stmt->close(); + + return $new_best_record_id; +} + +function delete_typing_exam_highest_record($maestro_id, $player_id, $writing_id) +{ + global $db_conn; + + $query = " + DELETE FROM typing_exam_highest_record + WHERE MaestroID = ? AND PlayerID = ? AND WritingID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("iii", $maestro_id, $player_id, $writing_id); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function update_typing_exam_highest_record($highest_record_id, $record, $record_date_time) { + global $db_conn; + + $query = " + UPDATE typing_exam_highest_record + SET HighestRecord = ?, RecordDateTime = ? + WHERE TypingExamHighestRecordID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("dsi", $record, $record_date_time, $highest_record_id); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function insert_new_typing_exam_highest_record($maestro_id, $player_id, $writing_id, $record, $record_date_time) { + global $db_conn; + + $query = " + INSERT INTO typing_exam_highest_record (MaestroID, PlayerID, WritingID, HighestRecord, RecordDateTime) + VALUES (?, ?, ?, ?, ?) + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("iiids", $maestro_id, $player_id, $writing_id, $record, $record_date_time); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function get_best_record_info($best_record_id) { + global $db_conn; + + $query = " + SELECT PlayerID, AppID + FROM best_record + WHERE BestRecordID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("i", $best_record_id); + $stmt->execute(); + $stmt->bind_result($player_id, $app_id); + $stmt->fetch(); + $stmt->close(); + + return array("PlayerID" => $player_id, "AppID" => $app_id); +} + +function delete_best_record($best_record_id) { + global $db_conn; + + $query = " + DELETE FROM best_record + WHERE BestRecordID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("i", $best_record_id); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function get_best_record_record_info($maestro_id, $player_id, $app_id) { + global $db_conn; + + $orderStatement = is_highest_record_prefer_app($app_id) ? "ORDER BY BestRecord DESC" : "ORDER BY BestRecord ASC"; + $query = " + SELECT BestRecord, RecordDateTime + FROM best_record + WHERE MaestroID = ? AND PlayerID = ? AND AppID = ? + ".$orderStatement." + LIMIT 1 + "; + + $stmt = $db_conn->prepare($query); + $stmt->bind_param("iii", $maestro_id, $player_id, $app_id); + $stmt->execute(); + $stmt->bind_result($best_record, $record_date_time); + $stmt->fetch(); + $stmt->close(); + + return array("BestRecord" => $best_record, "RecordDateTime" => $record_date_time); +} + +function get_app_highest_record_id($maestro_id, $player_id, $app_id) +{ + global $db_conn; + + $orderStatement = is_highest_record_prefer_app($app_id) ? "ORDER BY HighestRecord DESC" : "ORDER BY HighestRecord ASC"; + $query = " + SELECT AppHighestRecordID + FROM app_highest_record + WHERE MaestroID = ? AND PlayerID = ? AND AppID = ? + ".$orderStatement." + LIMIT 1 + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("iii", $maestro_id, $player_id, $app_id); + $stmt->execute(); + $stmt->bind_result($highest_record_id); + $stmt->fetch(); + $stmt->close(); + + return $highest_record_id; +} + +function delete_app_highest_record($maestro_id, $player_id, $app_id) +{ + global $db_conn; + + $query = " + DELETE FROM app_highest_record + WHERE MaestroID = ? AND PlayerID = ? AND AppID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("iii", $maestro_id, $player_id, $app_id); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function update_app_highest_record($highest_record_id, $record, $record_date_time) { + global $db_conn; + + $query = " + UPDATE app_highest_record + SET HighestRecord = ?, RecordDateTime = ? + WHERE AppHighestRecordID = ? + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param("dsi", $record, $record_date_time, $highest_record_id); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +function insert_new_app_highest_record($maestro_id, $player_id, $app_id, $record, $record_date_time) { + global $db_conn; + + $query = " + INSERT INTO app_highest_record (MaestroID, PlayerID, AppID, HighestRecord, RecordDateTime) + VALUES (?, ?, ?, ?, ?) + "; + $stmt = $db_conn->prepare($query); + $stmt->bind_param('iiids', $maestro_id, $player_id, $app_id, $record, $record_date_time); + $result = $stmt->execute(); + $stmt->close(); + + return $result; +} + +?> \ No newline at end of file diff --git a/src/web/server/record/request_app_player_record_list.php b/src/web/server/record/request_app_player_record_list.php index c0ac18c..b09f399 100644 --- a/src/web/server/record/request_app_player_record_list.php +++ b/src/web/server/record/request_app_player_record_list.php @@ -165,7 +165,7 @@ function get_player_record_list($maestro_id, $where_statement, $limit_count) { global $db_conn; $query = " - SELECT DATE(BR.RecordDateTime) AS Date, TIME(BR.RecordDateTime) AS Time, + SELECT BR.BestRecordID AS Id, DATE(BR.RecordDateTime) AS Date, TIME(BR.RecordDateTime) AS Time, P.Name AS Name, A.KoreanName AS Subject, BR.BestRecord AS Record FROM best_record BR, player P, app A WHERE BR.MaestroID = ? AND ".$where_statement." @@ -181,10 +181,11 @@ function get_player_record_list($maestro_id, $where_statement, $limit_count) { $stmt = $db_conn->prepare($query); $stmt->bind_param('i', $maestro_id); $stmt->execute(); - $stmt->bind_result($date, $time, $player_name, $subject, $record); + $stmt->bind_result($id, $date, $time, $player_name, $subject, $record); $record_array = array(); while($stmt->fetch()) { + $record_date['Id'] = $id; $record_date['Date'] = $date; $record_date['Time'] = $time; $record_date['PlayerName'] = $player_name; diff --git a/src/web/server/record/request_license_timer_player_record_list.php b/src/web/server/record/request_license_timer_player_record_list.php index 3439ac4..1feded3 100644 --- a/src/web/server/record/request_license_timer_player_record_list.php +++ b/src/web/server/record/request_license_timer_player_record_list.php @@ -167,7 +167,7 @@ function get_player_record_list($maestro_id, $where_statement, $limit_count) { global $db_conn; $query = " - SELECT DATE(LS.ScoreDateTime) AS Date, TIME(LS.ScoreDateTime) AS Time, + SELECT LS.LicenseScoreID AS ID, DATE(LS.ScoreDateTime) AS Date, TIME(LS.ScoreDateTime) AS Time, P.Name AS Name, LS.SubjectName AS Subject, LS.Score AS Record FROM license_score LS, player P WHERE LS.MaestroID = ? AND ".$where_statement." @@ -183,10 +183,11 @@ function get_player_record_list($maestro_id, $where_statement, $limit_count) { $stmt = $db_conn->prepare($query); $stmt->bind_param('i', $maestro_id); $stmt->execute(); - $stmt->bind_result($date, $time, $player_name, $subject, $record); + $stmt->bind_result($id, $date, $time, $player_name, $subject, $record); $record_array = array(); while($stmt->fetch()) { + $record_date['Id'] = $id; $record_date['Date'] = $date; $record_date['Time'] = $time; $record_date['PlayerName'] = $player_name; diff --git a/src/web/server/record/request_writing_player_record_list.php b/src/web/server/record/request_writing_player_record_list.php index a5430b8..37c36ef 100644 --- a/src/web/server/record/request_writing_player_record_list.php +++ b/src/web/server/record/request_writing_player_record_list.php @@ -133,7 +133,7 @@ function get_player_record_list($maestro_id, $where_statement, $limit_count) { global $db_conn; $query = " - SELECT DATE(TE.RecordDateTime) AS Date, TIME(TE.RecordDateTime) AS Time, + SELECT TE.TypingExamRecordID as Id, DATE(TE.RecordDateTime) AS Date, TIME(TE.RecordDateTime) AS Time, P.Name AS Name, WR.Name AS Subject, TE.Record AS Record FROM typing_exam_record TE, player P, writing WR WHERE TE.MaestroID = ? AND TE.WritingID=WR.WritingID AND TE.PlayerID=P.PlayerID AND ".$where_statement." @@ -149,10 +149,11 @@ function get_player_record_list($maestro_id, $where_statement, $limit_count) { $stmt = $db_conn->prepare($query); $stmt->bind_param('i', $maestro_id); $stmt->execute(); - $stmt->bind_result($date, $time, $player_name, $subject, $record); + $stmt->bind_result($id, $date, $time, $player_name, $subject, $record); $record_array = array(); while($stmt->fetch()) { + $record_date['Id'] = $id; $record_date['Date'] = $date; $record_date['Time'] = $time; $record_date['PlayerName'] = $player_name;
RecordID 날짜 시간 이름 과목 점수기록 삭제
데이터가 없습니다.데이터가 없습니다.