You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
<?php
|
|
|
|
namespace IQBall\App\Controller;
|
|
|
|
use IQBall\App\Session\SessionHandle;
|
|
use IQBall\App\Validator\TacticValidator;
|
|
use IQBall\App\ViewHttpResponse;
|
|
use IQBall\Core\Http\HttpCodes;
|
|
use IQBall\Core\Http\HttpResponse;
|
|
use IQBall\Core\Model\TacticModel;
|
|
|
|
class VisualizerController {
|
|
private TacticModel $tacticModel;
|
|
|
|
/**
|
|
* @param TacticModel $tacticModel
|
|
*/
|
|
public function __construct(TacticModel $tacticModel) {
|
|
$this->tacticModel = $tacticModel;
|
|
}
|
|
|
|
/**
|
|
* Opens a visualisation page for the tactic specified by its identifier in the url.
|
|
* @param int $id
|
|
* @param SessionHandle $session
|
|
* @return HttpResponse
|
|
*/
|
|
public function openVisualizer(int $id, SessionHandle $session): HttpResponse {
|
|
$tactic = $this->tacticModel->get($id);
|
|
|
|
$failure = TacticValidator::validateAccess($id, $tactic, $session->getAccount()->getUser()->getId());
|
|
|
|
if ($failure != null) {
|
|
return ViewHttpResponse::twig('error.html.twig', ['failures' => [$failure]], HttpCodes::NOT_FOUND);
|
|
}
|
|
|
|
return ViewHttpResponse::react("views/Visualizer.tsx", ["name" => $tactic->getName()]);
|
|
}
|
|
}
|