<?php declare(strict_types=1);
namespace Samson\Controller;
/***
*
* This file is part of the "SAMSON Shop" project.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* (c) 2023
*
***/
use Samson\Pages\VolumeDatabase\VolumeDatabasePageLoader;
use Samson\Route\VolumeDatabase\AbstractVolumeDatabaseLoadMediaRoute;
use Shopware\Core\Framework\Validation\DataBag\RequestDataBag;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Controller\StorefrontController;
use Shopware\Core\Framework\Routing\Annotation\RouteScope;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @RouteScope(scopes={"storefront"})
*/
class VolumeDatabaseController extends StorefrontController
{
private VolumeDatabasePageLoader $volumeDatabasePageLoader;
private AbstractVolumeDatabaseLoadMediaRoute $volumeDatabaseLoadMediaRoute;
public function __construct(VolumeDatabasePageLoader $volumeDatabasePageLoader,
AbstractVolumeDatabaseLoadMediaRoute $volumeDatabaseLoadMediaRoute)
{
$this->volumeDatabasePageLoader = $volumeDatabasePageLoader;
$this->volumeDatabaseLoadMediaRoute = $volumeDatabaseLoadMediaRoute;
}
/**
* @Route("/volumedatabase", name="frontend.volumedatabase.page", methods={"GET"}, defaults={"XmlHttpRequest"=true})
*/
public function index(Request $request, SalesChannelContext $salesChannelContext): Response
{
$page = $this->volumeDatabasePageLoader->load($request, $salesChannelContext);
return $this->renderStorefront('@Storefront/storefront/page/volume-database/index.html.twig',
[
'page' => $page
]);
}
/**
* @Route("/volumedatabase/search", name="frontend.volumedatabase.search", methods={"GET"}, defaults={"XmlHttpRequest"=true})
*/
public function search(Request $request, SalesChannelContext $salesChannelContext): Response
{
$page = $this->volumeDatabasePageLoader->search($request, $salesChannelContext);
return $this->renderStorefront('@Storefront/storefront/page/volume-database/index.html.twig',
[
'page' => $page
]);
}
/**
* @Route("/volumedatabase/download/{id}", name="frontend.volumedatabase.download", methods={"GET"})
*/
public function downloadFile(string $id, Request $request, SalesChannelContext $salesChannelContext): Response
{
return $this->volumeDatabaseLoadMediaRoute->loadMedia($id, $request, $salesChannelContext);
}
}