<?php
namespace App\Controller;
use App\Service\OpenAIClient;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
#[Route("/analyze")]
class AnalyzeReportController extends AbstractController
{
#[Route("/", methods: ["GET", "POST"])]
public function analyze(
OpenAIClient $client,
SessionInterface $session,
Request $request
): Response
{
$form = $this->createFormBuilder()
->add('content', TextareaType::class, ['required' => true])
->add('save_results', CheckboxType::class, ['required' => false])
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$response = $client->analyzeReport($form->get('content')->getData());
} catch (ClientExceptionInterface $e) {
$response = $e->getResponse()->getContent(false);
}
$session->set('analyzed', $response);
return $this->redirectToRoute('app_analyzereport_results');
}
return $this->render('analyze_report/analyze.html.twig', ['form' => $form->createView()]);
}
#[Route("/results", methods: ["GET"])]
public function results(SessionInterface $session): Response
{
$analyzed = $session->get('analyzed');
$session->set('analyzed', null);
return $this->render('analyze_report/results.html.twig', [
'analyzed' => $analyzed,
]);
}
}