<?php
/**
* @category NetiNextModal
* @author bmueller
*/
namespace NetInventors\NetiNextModal\Storefront\Controller\Traits;
use NetInventors\NetiNextModal\Core\Content\Modal\ModalEntity;
use NetInventors\NetiNextModal\Services\ModalPosition;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
/**
* Trait ResultTrait
*
* @package NetInventors\NetiNextModal\Storefront\Controller\Traits
*/
trait ResultTrait
{
/**
* @param Request $request
* @param SalesChannelContext $context
* @param ModalEntity $modal
*
* @return JsonResponse
* @throws \Exception
*/
protected function handleResult(
Request $request,
SalesChannelContext $context,
?ModalEntity $modal
): JsonResponse {
if (null === $modal) {
return $this->json([]);
}
return $this->json(
[
'modal' => [
'content' => $this->buildContent(
$request,
$context,
$modal
),
'cssClass' => $modal->getCssClass(),
'delay' => $modal->getDelay(),
'duration' => $modal->getDuration(),
'reincarnation' => $modal->getReincarnation(),
'headline' => $modal->getTranslation('headline'),
'height' => $modal->getHeight() ?? 0,
'id' => $modal->getId(),
'inlineStyle' => $modal->getInlineStyle(),
'needsConfirmation' => $modal->getNeedsConfirmation(),
'padding' => $modal->getPadding(),
'width' => $modal->getWidth(),
'position' => ModalPosition::toCssClass($modal->getModalPosition()),
'displayMode' => $modal->getDisplayMode(),
'backdropClose' => $modal->isBackdropClose(),
'animation' => [
'in' => $modal->getAnimateIn(),
'in_speed' => $modal->getAnimateInSpeed(),
'in_class' => $modal->getAnimateInClass(),
'out' => $modal->getAnimateOut(),
'out_speed' => $modal->getAnimateOutSpeed(),
'out_class' => $modal->getAnimateOutClass(),
],
'openOnExit' => $modal->isOpenOnExit(),
],
]
);
}
}