feature/MAPG-235-basic-challenge-mode #48
@ -48,6 +48,6 @@ CREATE TABLE `guesses` (
|
|||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `user_id` (`user_id`),
|
KEY `user_id` (`user_id`),
|
||||||
KEY `place_in_challenge_id` (`place_in_challenge_id`),
|
KEY `place_in_challenge_id` (`place_in_challenge_id`),
|
||||||
CONSTRAINT `guesses_user_id` FOREIGN KEY (`user_id`) REFERENCES `places` (`id`),
|
CONSTRAINT `guesses_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
|
||||||
CONSTRAINT `guesses_place_in_challenge_id` FOREIGN KEY (`place_in_challenge_id`) REFERENCES `place_in_challenge` (`id`)
|
CONSTRAINT `guesses_place_in_challenge_id` FOREIGN KEY (`place_in_challenge_id`) REFERENCES `place_in_challenge` (`id`)
|
||||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
@ -151,7 +151,7 @@ class GameFlowController
|
|||||||
|
|
||||||
if (!isset($currentPlace) || $withHistory) {
|
if (!isset($currentPlace) || $withHistory) {
|
||||||
$withRelations = [User::class, PlaceInChallenge::class, Place::class];
|
$withRelations = [User::class, PlaceInChallenge::class, Place::class];
|
||||||
foreach ($this->guessRepository->getAllInChallenge($challenge, $withRelations) as $guess) {
|
foreach ($this->guessRepository->getAllInChallenge($challenge, $withRelations) as $guess) {
|
||||||
$round = $guess->getPlaceInChallenge()->getRound();
|
$round = $guess->getPlaceInChallenge()->getRound();
|
||||||
|
|
||||||
if ($guess->getUser()->getId() === $userId) {
|
if ($guess->getUser()->getId() === $userId) {
|
||||||
|
@ -9,7 +9,10 @@ use MapGuesser\Interfaces\Response\IRedirect;
|
|||||||
use MapGuesser\OAuth\GoogleOAuth;
|
use MapGuesser\OAuth\GoogleOAuth;
|
||||||
use MapGuesser\PersistentData\PersistentDataManager;
|
use MapGuesser\PersistentData\PersistentDataManager;
|
||||||
use MapGuesser\PersistentData\Model\User;
|
use MapGuesser\PersistentData\Model\User;
|
||||||
|
use MapGuesser\PersistentData\Model\UserInChallenge;
|
||||||
|
use MapGuesser\Repository\GuessRepository;
|
||||||
use MapGuesser\Repository\UserConfirmationRepository;
|
use MapGuesser\Repository\UserConfirmationRepository;
|
||||||
|
use MapGuesser\Repository\UserInChallengeRepository;
|
||||||
use MapGuesser\Repository\UserPasswordResetterRepository;
|
use MapGuesser\Repository\UserPasswordResetterRepository;
|
||||||
use MapGuesser\Repository\UserPlayedPlaceRepository;
|
use MapGuesser\Repository\UserPlayedPlaceRepository;
|
||||||
use MapGuesser\Response\HtmlContent;
|
use MapGuesser\Response\HtmlContent;
|
||||||
@ -29,6 +32,10 @@ class UserController implements ISecured
|
|||||||
|
|
||||||
private UserPlayedPlaceRepository $userPlayedPlaceRepository;
|
private UserPlayedPlaceRepository $userPlayedPlaceRepository;
|
||||||
|
|
||||||
|
private UserInChallengeRepository $userInChallengeRepository;
|
||||||
|
|
||||||
|
private GuessRepository $guessRepository;
|
||||||
|
|
||||||
public function __construct(IRequest $request)
|
public function __construct(IRequest $request)
|
||||||
{
|
{
|
||||||
$this->request = $request;
|
$this->request = $request;
|
||||||
@ -36,6 +43,8 @@ class UserController implements ISecured
|
|||||||
$this->userConfirmationRepository = new UserConfirmationRepository();
|
$this->userConfirmationRepository = new UserConfirmationRepository();
|
||||||
$this->userPasswordResetterRepository = new UserPasswordResetterRepository();
|
$this->userPasswordResetterRepository = new UserPasswordResetterRepository();
|
||||||
$this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
|
$this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
|
||||||
|
$this->userInChallengeRepository = new UserInChallengeRepository();
|
||||||
|
$this->guessRepository = new GuessRepository();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
@ -209,6 +218,14 @@ class UserController implements ISecured
|
|||||||
$this->pdm->deleteFromDb($userPlayedPlace);
|
$this->pdm->deleteFromDb($userPlayedPlace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($this->userInChallengeRepository->getAllByUser($user) as $userInChallenge) {
|
||||||
|
$this->pdm->deleteFromDb($userInChallenge);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->guessRepository->getAllByUser($user) as $guess) {
|
||||||
|
$this->pdm->deleteFromDb($guess);
|
||||||
|
}
|
||||||
|
|
||||||
$this->pdm->deleteFromDb($user);
|
$this->pdm->deleteFromDb($user);
|
||||||
|
|
||||||
\Container::$dbConnection->commit();
|
\Container::$dbConnection->commit();
|
||||||
|
@ -60,7 +60,7 @@ class PersistentDataManager
|
|||||||
if (strpos($key, '__') == false) {
|
if (strpos($key, '__') == false) {
|
||||||
$method = 'set' . str_replace('_', '', ucwords($key, '_'));
|
$method = 'set' . str_replace('_', '', ucwords($key, '_'));
|
||||||
|
|
||||||
if (method_exists($model, $method)) {
|
if (method_exists($model, $method) && isset($value)) {
|
||||||
$model->$method($value);
|
$model->$method($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ class PersistentDataManager
|
|||||||
|
|
||||||
$method = 'set' . str_replace('_', '', ucwords($key, '_'));
|
$method = 'set' . str_replace('_', '', ucwords($key, '_'));
|
||||||
|
|
||||||
if (method_exists($model, $method)) {
|
if (method_exists($model, $method) && isset($value)) {
|
||||||
$model->$method($value);
|
$model->$method($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,15 @@ class GuessRepository
|
|||||||
$this->pdm = new PersistentDataManager();
|
$this->pdm = new PersistentDataManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAllByUserAndChallenge(User $user, Challenge $challenge) : Generator
|
public function getAllByUser(User $user): Generator
|
||||||
|
{
|
||||||
|
$select = new Select(\Container::$dbConnection);
|
||||||
|
$select->where('user_id', '=', $user->getId());
|
||||||
|
|
||||||
|
yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAllByUserAndChallenge(User $user, Challenge $challenge): Generator
|
||||||
{
|
{
|
||||||
$select = new Select(\Container::$dbConnection);
|
$select = new Select(\Container::$dbConnection);
|
||||||
$select->innerJoin('place_in_challenge', ['place_in_challenge', 'id'], '=', ['guesses', 'place_in_challenge_id']);
|
$select->innerJoin('place_in_challenge', ['place_in_challenge', 'id'], '=', ['guesses', 'place_in_challenge_id']);
|
||||||
@ -29,7 +37,7 @@ class GuessRepository
|
|||||||
yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
|
yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getByUserAndPlaceInChallenge(User $user, Challenge $challenge, Place $place) : ?Guess
|
public function getByUserAndPlaceInChallenge(User $user, Challenge $challenge, Place $place): ?Guess
|
||||||
{
|
{
|
||||||
$select = new Select(\Container::$dbConnection);
|
$select = new Select(\Container::$dbConnection);
|
||||||
$select->innerJoin('place_in_challenge', ['place_in_challenge', 'id'], '=', ['guesses', 'place_in_challenge_id']);
|
$select->innerJoin('place_in_challenge', ['place_in_challenge', 'id'], '=', ['guesses', 'place_in_challenge_id']);
|
||||||
@ -57,7 +65,7 @@ class GuessRepository
|
|||||||
$necessaryRelations = [PlaceInChallenge::class];
|
$necessaryRelations = [PlaceInChallenge::class];
|
||||||
$withRelations = array_unique(array_merge($withRelations, $necessaryRelations));
|
$withRelations = array_unique(array_merge($withRelations, $necessaryRelations));
|
||||||
}
|
}
|
||||||
|
|
||||||
$select = new Select(\Container::$dbConnection);
|
$select = new Select(\Container::$dbConnection);
|
||||||
$select->where('challenge_id', '=', $challenge->getId());
|
$select->where('challenge_id', '=', $challenge->getId());
|
||||||
$select->orderBy('round');
|
$select->orderBy('round');
|
||||||
|
Loading…
Reference in New Issue
Block a user