feature/avoid-repeating-places-in-game #38
@ -8,6 +8,7 @@ use MapGuesser\PersistentData\PersistentDataManager;
 | 
				
			|||||||
use MapGuesser\Repository\MultiRoomRepository;
 | 
					use MapGuesser\Repository\MultiRoomRepository;
 | 
				
			||||||
use MapGuesser\Repository\UserConfirmationRepository;
 | 
					use MapGuesser\Repository\UserConfirmationRepository;
 | 
				
			||||||
use MapGuesser\Repository\UserPasswordResetterRepository;
 | 
					use MapGuesser\Repository\UserPasswordResetterRepository;
 | 
				
			||||||
 | 
					use MapGuesser\Repository\UserPlayedPlaceRepository;
 | 
				
			||||||
use MapGuesser\Repository\UserRepository;
 | 
					use MapGuesser\Repository\UserRepository;
 | 
				
			||||||
use Symfony\Component\Console\Command\Command;
 | 
					use Symfony\Component\Console\Command\Command;
 | 
				
			||||||
use Symfony\Component\Console\Input\InputInterface;
 | 
					use Symfony\Component\Console\Input\InputInterface;
 | 
				
			||||||
@ -25,6 +26,8 @@ class MaintainDatabaseCommand extends Command
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private MultiRoomRepository $multiRoomRepository;
 | 
					    private MultiRoomRepository $multiRoomRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private UserPlayedPlaceRepository $userPlayedPlaceRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct()
 | 
					    public function __construct()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::__construct();
 | 
					        parent::__construct();
 | 
				
			||||||
@ -34,6 +37,7 @@ class MaintainDatabaseCommand extends Command
 | 
				
			|||||||
        $this->userConfirmationRepository = new UserConfirmationRepository();
 | 
					        $this->userConfirmationRepository = new UserConfirmationRepository();
 | 
				
			||||||
        $this->userPasswordResetterRepository = new UserPasswordResetterRepository();
 | 
					        $this->userPasswordResetterRepository = new UserPasswordResetterRepository();
 | 
				
			||||||
        $this->multiRoomRepository = new MultiRoomRepository();
 | 
					        $this->multiRoomRepository = new MultiRoomRepository();
 | 
				
			||||||
 | 
					        $this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function configure(): void
 | 
					    public function configure(): void
 | 
				
			||||||
@ -81,6 +85,10 @@ class MaintainDatabaseCommand extends Command
 | 
				
			|||||||
                $this->pdm->deleteFromDb($userPasswordResetter);
 | 
					                $this->pdm->deleteFromDb($userPasswordResetter);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach ($this->userPlayedPlaceRepository->getAllByUser($user) as $userPlayedPlace) {
 | 
				
			||||||
 | 
					                $this->pdm->deleteFromDb($userPlayedPlace);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $this->pdm->deleteFromDb($user);
 | 
					            $this->pdm->deleteFromDb($user);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,7 @@ use MapGuesser\PersistentData\Model\UserPasswordResetter;
 | 
				
			|||||||
use MapGuesser\PersistentData\PersistentDataManager;
 | 
					use MapGuesser\PersistentData\PersistentDataManager;
 | 
				
			||||||
use MapGuesser\Repository\UserConfirmationRepository;
 | 
					use MapGuesser\Repository\UserConfirmationRepository;
 | 
				
			||||||
use MapGuesser\Repository\UserPasswordResetterRepository;
 | 
					use MapGuesser\Repository\UserPasswordResetterRepository;
 | 
				
			||||||
 | 
					use MapGuesser\Repository\UserPlayedPlaceRepository;
 | 
				
			||||||
use MapGuesser\Repository\UserRepository;
 | 
					use MapGuesser\Repository\UserRepository;
 | 
				
			||||||
use MapGuesser\Response\HtmlContent;
 | 
					use MapGuesser\Response\HtmlContent;
 | 
				
			||||||
use MapGuesser\Response\JsonContent;
 | 
					use MapGuesser\Response\JsonContent;
 | 
				
			||||||
@ -32,6 +33,8 @@ class LoginController
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private UserPasswordResetterRepository $userPasswordResetterRepository;
 | 
					    private UserPasswordResetterRepository $userPasswordResetterRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private UserPlayedPlaceRepository $userPlayedPlaceRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct(IRequest $request)
 | 
					    public function __construct(IRequest $request)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->request = $request;
 | 
					        $this->request = $request;
 | 
				
			||||||
@ -39,6 +42,7 @@ class LoginController
 | 
				
			|||||||
        $this->userRepository = new UserRepository();
 | 
					        $this->userRepository = new UserRepository();
 | 
				
			||||||
        $this->userConfirmationRepository = new UserConfirmationRepository();
 | 
					        $this->userConfirmationRepository = new UserConfirmationRepository();
 | 
				
			||||||
        $this->userPasswordResetterRepository = new UserPasswordResetterRepository();
 | 
					        $this->userPasswordResetterRepository = new UserPasswordResetterRepository();
 | 
				
			||||||
 | 
					        $this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getLoginForm()
 | 
					    public function getLoginForm()
 | 
				
			||||||
@ -430,6 +434,10 @@ class LoginController
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        $user = $this->userRepository->getById($confirmation->getUserId());
 | 
					        $user = $this->userRepository->getById($confirmation->getUserId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        foreach ($this->userPlayedPlaceRepository->getAllByUser($user) as $userPlayedPlace) {
 | 
				
			||||||
 | 
					            $this->pdm->deleteFromDb($userPlayedPlace);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->pdm->deleteFromDb($user);
 | 
					        $this->pdm->deleteFromDb($user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        \Container::$dbConnection->commit();
 | 
					        \Container::$dbConnection->commit();
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,7 @@ use MapGuesser\PersistentData\Model\Place;
 | 
				
			|||||||
use MapGuesser\PersistentData\PersistentDataManager;
 | 
					use MapGuesser\PersistentData\PersistentDataManager;
 | 
				
			||||||
use MapGuesser\Repository\MapRepository;
 | 
					use MapGuesser\Repository\MapRepository;
 | 
				
			||||||
use MapGuesser\Repository\PlaceRepository;
 | 
					use MapGuesser\Repository\PlaceRepository;
 | 
				
			||||||
 | 
					use MapGuesser\Repository\UserPlayedPlaceRepository;
 | 
				
			||||||
use MapGuesser\Response\HtmlContent;
 | 
					use MapGuesser\Response\HtmlContent;
 | 
				
			||||||
use MapGuesser\Response\JsonContent;
 | 
					use MapGuesser\Response\JsonContent;
 | 
				
			||||||
use MapGuesser\Util\Geo\Bounds;
 | 
					use MapGuesser\Util\Geo\Bounds;
 | 
				
			||||||
@ -27,12 +28,15 @@ class MapAdminController implements ISecured
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private PlaceRepository $placeRepository;
 | 
					    private PlaceRepository $placeRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private UserPlayedPlaceRepository $userPlayedPlaceRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct(IRequest $request)
 | 
					    public function __construct(IRequest $request)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->request = $request;
 | 
					        $this->request = $request;
 | 
				
			||||||
        $this->pdm = new PersistentDataManager();
 | 
					        $this->pdm = new PersistentDataManager();
 | 
				
			||||||
        $this->mapRepository = new MapRepository();
 | 
					        $this->mapRepository = new MapRepository();
 | 
				
			||||||
        $this->placeRepository = new PlaceRepository();
 | 
					        $this->placeRepository = new PlaceRepository();
 | 
				
			||||||
 | 
					        $this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function authorize(): bool
 | 
					    public function authorize(): bool
 | 
				
			||||||
@ -138,7 +142,7 @@ class MapAdminController implements ISecured
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                $place = $this->placeRepository->getById((int) $placeRaw['id']);
 | 
					                $place = $this->placeRepository->getById((int) $placeRaw['id']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                $this->pdm->deleteFromDb($place);
 | 
					                $this->deletePlace($place);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -178,10 +182,19 @@ class MapAdminController implements ISecured
 | 
				
			|||||||
        return new JsonContent(['success' => true]);
 | 
					        return new JsonContent(['success' => true]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private function deletePlace(Place $place): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach ($this->userPlayedPlaceRepository->getAllByPlace($place) as $userPlayedPlace) {
 | 
				
			||||||
 | 
					            $this->pdm->deleteFromDb($userPlayedPlace);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->pdm->deleteFromDb($place);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private function deletePlaces(Map $map): void
 | 
					    private function deletePlaces(Map $map): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        foreach ($this->placeRepository->getAllForMap($map) as $place) {
 | 
					        foreach ($this->placeRepository->getAllForMap($map) as $place) {
 | 
				
			||||||
            $this->pdm->deleteFromDb($place);
 | 
					            $this->deletePlace($place);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,7 @@ use MapGuesser\PersistentData\PersistentDataManager;
 | 
				
			|||||||
use MapGuesser\PersistentData\Model\User;
 | 
					use MapGuesser\PersistentData\Model\User;
 | 
				
			||||||
use MapGuesser\Repository\UserConfirmationRepository;
 | 
					use MapGuesser\Repository\UserConfirmationRepository;
 | 
				
			||||||
use MapGuesser\Repository\UserPasswordResetterRepository;
 | 
					use MapGuesser\Repository\UserPasswordResetterRepository;
 | 
				
			||||||
 | 
					use MapGuesser\Repository\UserPlayedPlaceRepository;
 | 
				
			||||||
use MapGuesser\Response\HtmlContent;
 | 
					use MapGuesser\Response\HtmlContent;
 | 
				
			||||||
use MapGuesser\Response\JsonContent;
 | 
					use MapGuesser\Response\JsonContent;
 | 
				
			||||||
use MapGuesser\Response\Redirect;
 | 
					use MapGuesser\Response\Redirect;
 | 
				
			||||||
@ -26,12 +27,15 @@ class UserController implements ISecured
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private UserPasswordResetterRepository $userPasswordResetterRepository;
 | 
					    private UserPasswordResetterRepository $userPasswordResetterRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private UserPlayedPlaceRepository $userPlayedPlaceRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct(IRequest $request)
 | 
					    public function __construct(IRequest $request)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->request = $request;
 | 
					        $this->request = $request;
 | 
				
			||||||
        $this->pdm = new PersistentDataManager();
 | 
					        $this->pdm = new PersistentDataManager();
 | 
				
			||||||
        $this->userConfirmationRepository = new UserConfirmationRepository();
 | 
					        $this->userConfirmationRepository = new UserConfirmationRepository();
 | 
				
			||||||
        $this->userPasswordResetterRepository = new UserPasswordResetterRepository();
 | 
					        $this->userPasswordResetterRepository = new UserPasswordResetterRepository();
 | 
				
			||||||
 | 
					        $this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function authorize(): bool
 | 
					    public function authorize(): bool
 | 
				
			||||||
@ -201,6 +205,10 @@ class UserController implements ISecured
 | 
				
			|||||||
            $this->pdm->deleteFromDb($userPasswordResetter);
 | 
					            $this->pdm->deleteFromDb($userPasswordResetter);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        foreach ($this->userPlayedPlaceRepository->getAllByUser($user) as $userPlayedPlace) {
 | 
				
			||||||
 | 
					            $this->pdm->deleteFromDb($userPlayedPlace);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->pdm->deleteFromDb($user);
 | 
					        $this->pdm->deleteFromDb($user);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        \Container::$dbConnection->commit();
 | 
					        \Container::$dbConnection->commit();
 | 
				
			||||||
 | 
				
			|||||||
@ -25,7 +25,7 @@ class UserPlayedPlaceRepository
 | 
				
			|||||||
        yield from $this->pdm->selectMultipleFromDb($select, UserPlayedPlace::class);
 | 
					        yield from $this->pdm->selectMultipleFromDb($select, UserPlayedPlace::class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function getByPlace(Place $place): Generator
 | 
					    public function getAllByPlace(Place $place): Generator
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $select = new Select(\Container::$dbConnection);
 | 
					        $select = new Select(\Container::$dbConnection);
 | 
				
			||||||
        $select->where('place_id', '=', $place->getId());
 | 
					        $select->where('place_id', '=', $place->getId());
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user