diff --git a/app/QuesttypeController.inc b/app/QuesttypeController.inc index 132a25e5..31596073 100644 --- a/app/QuesttypeController.inc +++ b/app/QuesttypeController.inc @@ -261,7 +261,12 @@ $character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); // Set solved - $this->Quests->setQuestSolved($quest['id'], $character['id']); + if(is_null($sidequest)) { + $this->Quests->setQuestSolved($quest['id'], $character['id']); + } + else { + $this->Quests->setSidequestSolved($sidequest['id'], $character['id']); + } // Redirect @@ -294,7 +299,13 @@ $character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); // Set solved - $this->Quests->setQuestUnsolved($quest['id'], $character['id']); + if(is_null($sidequest)) { + $this->Quests->setQuestUnsolved($quest['id'], $character['id']); + } + else { + $this->Quests->setSidequestUnsolved($sidequest['id'], $character['id']); + } + // Redirect diff --git a/models/QuestsModel.inc b/models/QuestsModel.inc index e531ac26..e49947f8 100644 --- a/models/QuestsModel.inc +++ b/models/QuestsModel.inc @@ -217,6 +217,27 @@ } + /** + * Mark a Sidequest as solved for a Character. + * + * @param int $sidequestId ID of Sidequest to mark as solved + * @param int $characterId ID of Character that solved the Sidequest + */ + public function setSidequestSolved($sidequestId, $characterId) + { + $this->db->query( + 'INSERT INTO sidequests_characters '. + '(sidequest_id, character_id, status) '. + 'VALUES '. + '(?, ?, ?)', + 'iii', + $sidequestId, + $characterId, + 0 + ); + } + + /** * Mark a Quest as unsolved for a Character. * @@ -238,6 +259,27 @@ } + /** + * Mark a Sidequest as unsolved for a Character. + * + * @param int $sidequestId ID of Sidequest to mark as unsolved + * @param int $characterId ID of Character that unsolved the Sidequest + */ + public function setSidequestUnsolved($sidequestId, $characterId) + { + $this->db->query( + 'INSERT INTO sidequests_characters '. + '(sidequest_id, character_id, status) '. + 'VALUES '. + '(?, ?, ?)', + 'iii', + $sidequestId, + $characterId, + -1 + ); + } + + /** * Determine if the given Character has solved the given Quest. *