Fix & Finish 推薦一個學習點時,直接當成行進中,標的目前人數+1

This commit is contained in:
Yuan Chiu 2015-03-14 23:54:54 +08:00
parent 36fe36391a
commit acf7b7a811
2 changed files with 122 additions and 98 deletions

View File

@ -272,65 +272,6 @@ class DBStudy extends Database {
return $resultId;
}
/**
* 行進中,準備進入的學習點
*
* @param string $activity_id 活動編號
* @param string $target_id 標的編號
* @param string $is_entity 是否為現場學習
* @return int 剛新增的記錄編號
* @since 2.0.0
*/
public function enteringInTarget($activity_id, $target_id)
{
if(!isset($is_entity)) {
$is_entity = true;
}
// 寫入
$sqlString = "INSERT INTO `".$this->table('Study').
"` (`SaID`, `TID`, `IsEnter`, `IsEntity`, `In_TargetTime`, `Out_TargetTime`)
VALUES ( :said , :tid , '0' , '1' , NOW() , NULL )";
$query = $this->connDB->prepare($sqlString);
$query->bindParam(":said", $activity_id);
$query->bindParam(":tid", $target_id);
$query->execute();
// 取得剛剛加入的ID
$sqlString = "SELECT LAST_INSERT_ID()";
$query = $this->connDB->query($sqlString);
$queryResult = $query->fetch();
$resultId = $queryResult[0];
return $resultId;
}
/**
* 取消所有行進中準備進入的學習點的狀態
*
* @param string $activity_id 活動編號
* @return 影響數
* @since 2.0.0
*/
public function allOutEnteringInTarget($activity_id)
{
// 寫入
$sqlString = "UPDATE `".$this->table('Study').
"` SET `Out_TargetTime` = NOW()
WHERE `SaID` = :id ".
"AND `IsEnter` = '0'".
" AND `Out_TargetTime` IS NULL";
$query = $this->connDB->prepare($sqlString);
$query->bindParam(":id", $activity_id);
$query->execute();
$count = $query->rowCount();
return $count;
}
/**
* 離開學習點
*
@ -369,6 +310,41 @@ class DBStudy extends Database {
$query->execute();
}
/**
* 行進中,準備進入的學習點
*
* @param string $activity_id 活動編號
* @param string $target_id 標的編號
* @param string $is_entity 是否為現場學習
* @return int 剛新增的記錄編號
* @since 2.0.0
*/
public function enteringInTarget($activity_id, $target_id)
{
if(!isset($is_entity)) {
$is_entity = true;
}
// 寫入
$sqlString = "INSERT INTO `".$this->table('Study').
"` (`SaID`, `TID`, `IsEnter`, `IsEntity`, `In_TargetTime`, `Out_TargetTime`)
VALUES ( :said , :tid , '0' , '1' , NOW() , NULL )";
$query = $this->connDB->prepare($sqlString);
$query->bindParam(":said", $activity_id);
$query->bindParam(":tid", $target_id);
$query->execute();
// 取得剛剛加入的ID
$sqlString = "SELECT LAST_INSERT_ID()";
$query = $this->connDB->query($sqlString);
$queryResult = $query->fetch();
$resultId = $queryResult[0];
return $resultId;
}
/**
* 取得目前正在進行的標的編號
*
@ -396,6 +372,33 @@ class DBStudy extends Database {
}
}
/**
* 取得目前正在進行的標的編號
*
* @param int $activity_id 活動編號
* @return int 標的編號
* @since 2.0.0
*/
public function getCurrentEnteringTargetId($activity_id) {
$sqlString = "SELECT `TID` FROM `".$this->table('Study')."` ".
"WHERE `Out_TargetTime` IS NULL AND `SaID` = :said ".
"AND `IsEnter` = '0'";
$query = $this->connDB->prepare($sqlString);
$query->bindParam(":said", $activity_id);
$query->execute();
$queryResult = $query->fetch();
// 如果有查到一筆以上
if( count($queryResult) >= 1 ) {
return (int)$queryResult[0];
}
else {
return null;
}
}
/**
* 取得目前正在行進中標的編號
*

View File

@ -46,6 +46,17 @@ class StudyManager {
return $db->getCurrentInStudyId($activity_id);
}
/**
* 取得目前行進中的學習點
* @param int $activity_id 活動編號
* @return int 標的編號若無則null
*/
public function getCurrentEnteringTargetId($activity_id) {
$db = new Database\DBStudy();
return $db->getCurrentEnteringTargetId($activity_id);
}
/**
* 此標的是否已學習過
*
@ -90,6 +101,10 @@ class StudyManager {
$target->addMj(1);
}
// 取消行進中狀態
$enterTId = $this->getCurrentEnteringTargetId($activity_id);
$this->outEnteringInTarget($activity_id, $enterTId);
return $id;
}
else {
@ -97,6 +112,45 @@ class StudyManager {
}
}
/**
* 離開標的
*
* @param int $activity_id 活動編號
* @param int $target_id 標的編號
* @throw UElearning\Exception\NoInLearningException
*/
public function toOutTarget($activity_id, $target_id) {
// 從資料庫取得此活動此標的學習中資料
$db = new Database\DBStudy();
$learning_array = $db->getInStudyIdByTargetId($activity_id, $target_id);
$target = new Target\Target($target_id);
// 找到正在學習中的資料
if(isset($learning_array)) {
// 將所有此標的的進入紀錄全部標示
foreach($learning_array as $thisArray) {
// 將此紀錄標示為已離開
$db->toOutTarget($thisArray['study_id']);
// 將標的目前人數-1
if($thisArray['is_entity'] = true) {
$target = new Target\Target($target_id);
$target->addMj(-1);
}
}
// 取消行進中狀態
$enterTId = $this->getCurrentEnteringTargetId($activity_id);
$this->outEnteringInTarget($activity_id, $enterTId);
}
else {
throw new Exception\NoInLearningException();
}
}
/**
* 行進中,準備進入的學習點
*
@ -111,6 +165,10 @@ class StudyManager {
if($this->getCurrentInTargetId($activity_id) == null) {
$db = new Database\DBStudy();
// 取消行進中狀態
$enterTId = $this->getCurrentEnteringTargetId($activity_id);
$this->outEnteringInTarget($activity_id, $enterTId);
// 紀錄進資料庫
$id = $db->enteringInTarget($activity_id, $target_id);
@ -148,46 +206,9 @@ class StudyManager {
$db->toOutTarget($thisArray['study_id']);
// 將標的目前人數-1
if($thisArray['is_entity'] = true) {
$target = new Target\Target($target_id);
$target->addMj(-1);
}
$target = new Target\Target($target_id);
$target->addMj(-1);
}
}
}
/**
* 離開標的
*
* @param int $activity_id 活動編號
* @param int $target_id 標的編號
* @throw UElearning\Exception\NoInLearningException
*/
public function toOutTarget($activity_id, $target_id) {
// 從資料庫取得此活動此標的學習中資料
$db = new Database\DBStudy();
$learning_array = $db->getInStudyIdByTargetId($activity_id, $target_id);
$target = new Target\Target($target_id);
// 找到正在學習中的資料
if(isset($learning_array)) {
// 將所有此標的的進入紀錄全部標示
foreach($learning_array as $thisArray) {
// 將此紀錄標示為已離開
$db->toOutTarget($thisArray['study_id']);
// 將標的目前人數-1
if($thisArray['is_entity'] = true) {
$target = new Target\Target($target_id);
$target->addMj(-1);
}
}
}
else {
throw new Exception\NoInLearningException();
}
}
}