<?php
namespace App\Controller\Api;
use App\CommonDataStructures\InputOffersData;
use App\Exception\AppException;
use App\UseCase\GetOffers;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
/**
* Diabelek: te 3 wpisy są potrzebne by się generowała dokumentacja
*/
use Nelmio\ApiDocBundle\Annotation\Model;
use OpenApi\Annotations as OA;
use Symfony\Component\Routing\Annotation\Route;
class OffersController extends AbstractFOSRestController
{
/**
* @var Request|null
*/
private ?Request $request;
/**
* @param RequestStack|null $requestStack
* @param GetOffers $getOffers
*/
public function __construct(
?RequestStack $requestStack,
private readonly GetOffers $getOffers
)
{
$this->request = $requestStack->getCurrentRequest();
}
/**
* Zwraca listę ofert
*
* @Route("/offers", methods={"POST"})
*
* @OA\Tag(name="Offers")
*
* @OA\Post(
* description="MERLIN [offers] wysyłamy postem XML z wstępnymi danymi do wyszukiwania.",
* @OA\RequestBody(
* required=false,
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(
* description="Place for json body",
* type="string",
* ref=@Model(type=InputOffersData::class)
* )
* )
* )
* )
*
* @OA\Response(
* response=200,
* description="Offers",
* @OA\MediaType(
* mediaType="application/json"
* )
* )
*
* @return Response
* @throws AppException
*/
public function postAction(): Response
{
$data = json_decode($this->request->getContent(), true);
$inputData = new InputOffersData($data);
return $this->handleView($this->view($this->getOffers->getResponse($inputData)));
}
}