<?php
namespace App\Controller;
use App\Service\CustomDataPersister\ViewOrderInfoDataPersister;
use App\Service\ViewOrders\ViewOrdersFormatter;
use Doctrine\Common\Annotations\AnnotationException;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Exception\ExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\RedirectionExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface;
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
/**
* Class ViewOrderInfoController.
*/
final class ViewOrderInfoController extends AbstractController
{
/**
* ViewOrderInfo Put Action.
*
* @Route("/api/view_orders_info", name="view_order_info_edit_route", methods={"PUT"})
*
* @param Request $request
* @param ViewOrdersFormatter $viewOrdersFormatter
* @param ViewOrderInfoDataPersister $viewOrderInfoDataPersister
*
* @return JsonResponse
*
* @throws AnnotationException
* @throws ClientExceptionInterface
* @throws RedirectionExceptionInterface
* @throws ServerExceptionInterface
* @throws TransportExceptionInterface
* @throws ExceptionInterface
* @throws DecodingExceptionInterface
*/
public function editViewOrderInfo(
Request $request,
ViewOrdersFormatter $viewOrdersFormatter,
ViewOrderInfoDataPersister $viewOrderInfoDataPersister
) {
$jsonRequest = json_decode($request->getContent(), true);
return new JsonResponse($viewOrderInfoDataPersister
->handleSaveMultiplesViewOrderInfos($viewOrdersFormatter->getObjectsFromFormat($jsonRequest)));
}
}