<?php
namespace App\Controller\API;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\Release;
use App\Auth\TokenAuth;
class ReleaseController extends AbstractController
{
public function __construct(
private TokenAuth $tokenAuth,
private EntityManagerInterface $em,
) {
}
/**
* Testing connection with update service
*/
#[Route('/check_connection', name: 'release.connection')]
public function checkConnectionAction()
{
$project = $this->tokenAuth->getCustomerByToken();
return new JsonResponse(['connection' => true]);
}
/**
* Testing connection with update service
*/
#[Route('/check_for_updates', name: 'release.check_for_updates')]
public function getLastVersionAction()
{
$project = $this->tokenAuth->getCustomerByToken()->getProject();
if (!$project) {
return new JsonResponse(['version' => '1.0.0', 'url' => null]);
}
$release = $this->em
->getRepository(Release::class)
->getLastReleaseByProject($project);
if (!$release) {
return new JsonResponse(['status' => 'not found', 404]);
}
return new JsonResponse(['version' => $release->getVersion(), 'url' => $release->getPath()]);
}
/**
* Testing connection with update service
*/
#[Route('/get_all_versions', name: 'release.get_all_versions')]
public function getLastVersionsByProjectAction()
{
$project = $this->tokenAuth->getCustomerByToken()->getProject();
$releases = $this->em
->getRepository(Release::class)
->findBy(['project' => $project], ['id' => 'desc'], 5, 1);
if (!count($releases)) {
return new JsonResponse(['status' => 'not found', 404]);
}
return new JsonResponse($releases);
}
}