Untitled
unknown
plain_text
a year ago
2.7 kB
10
Indexable
<?php
namespace App\Controller;
use App\Entity\Exam;
use App\Repository\ExamRepository;
use App\Repository\TestRepository;
use App\Repository\ExamCategoryRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use OpenApi\Attributes as OA;
use Nelmio\ApiDocBundle\Annotation\Security;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class ExamCategoryController extends AbstractController
{
private $examCategoryRepository;
private $manager;
public function __construct(ExamCategoryRepository $examCategoryRepository,EntityManagerInterface $manager)
{
$this->examCategoryRepository = $examCategoryRepository;
$this->manager = $manager;
}
#[Route('/examcategories/{id}', name: 'examCategories_delete', methods: 'DELETE')]
#[OA\Tag(name: 'ExamCategories')]
#[Security(name: 'Bearer')]
#[OA\Delete(
description: 'Remove ExamCategory by ID',
summary: 'Remove ExamCategory by ID',
tags: ['ExamCategories'],
parameters: [
new OA\Parameter(
name: 'id',
description: 'ID of the ExamCategory',
in: 'path',
required: true,
schema: new OA\Schema(type: 'integer', format: 'int64')
)
],
responses: [
new OA\Response(
response: '200',
description: 'Successful operation',
),
new OA\Response(
response: '404',
description: 'ExamCategory not found',
content: new OA\MediaType(mediaType: 'application/json')
)
]
)]
public function delete($id, TestRepository $testRepository): JsonResponse
{
$cc = $this->examCategoryRepository->find($id);
if (!$cc) {
return new JsonResponse(["message"=>"ExamCategory not found"], Response::HTTP_NOT_FOUND);
}
$tests = $testRepository->findBy(['exam'=>$cc->getExam()->getId()]);
if(count($tests)) {
return new JsonResponse(["message"=>"ExamCategory can't be removed because exam tests are already generated."], Response::HTTP_NOT_FOUND);
}
$this->manager->remove($cc);
$this->manager->flush();
return new JsonResponse(["message"=>"ExamCategory successfully removed"], Response::HTTP_OK);
}
}Editor is loading...
Leave a Comment