<?php
declare(strict_types=1);
namespace Kaylo\Management\Storefront\Controller;
use DateTime;
use Exception;
use Kaylo\Management\Core\Content\Workshop\WorkshopDefinition;
use Kaylo\Management\Service\OrderService;
use Kaylo\Management\Service\WorkshopService;
use Kaylo\Management\Storefront\KayloController;
use Kaylo\Management\Storefront\Response\WorkshopResponse;
use Shopware\Core\Checkout\Cart\Cart;
use Shopware\Core\Framework\DataAbstractionLayer\DefinitionInstanceRegistry;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\RequestCriteriaBuilder;
use Shopware\Core\Framework\Routing\Annotation\Entity;
use Shopware\Core\Framework\Routing\Annotation\RouteScope;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Controller\StorefrontController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @RouteScope(scopes={"store-api"})
*/
class WorkshopController extends StorefrontController implements KayloController
{
protected WorkshopService $workshopService;
public function __construct(
WorkshopService $workshopService
) {
$this->workshopService = $workshopService;
}
/**
* @Route("/create", name="create", defaults={"XmlHttpRequest"=true}, methods={"POST"})
* @param Request $request
* @param SalesChannelContext $context
* @return JsonResponse
*/
public function create(Request $request, SalesChannelContext $context): JsonResponse
{
$result = $this->workshopService->createWorkshop($context->getContext());
return $this->json($result);
}
/**
* @Entity("kaylo_management_workshop")
* @Route("/get/{workshopId}", name="getById", defaults={"XmlHttpRequest"=true}, methods={"GET"})
* @param string $workshopId
* @param SalesChannelContext $context
* @return JsonResponse
*/
public function getById(string $workshopId, SalesChannelContext $context): JsonResponse
{
$result = $this->workshopService->getById($workshopId, $context->getContext());
return $this->json($result);
}
/**
* @Entity("kaylo_management_workshop")
* @Route("/list", name="list", defaults={"XmlHttpRequest"=true}, methods={"POST"})
* @param Request $request
* @param SalesChannelContext $context
* @param Criteria $criteria
* @return WorkshopResponse
*/
public function list(Request $request, SalesChannelContext $context, Criteria $criteria): WorkshopResponse
{
$workshops = $this->workshopService->list($criteria, $context->getContext());
// return $this->json($workshops);
return new WorkshopResponse($workshops);
}
/**
* @Entity("kaylo_management_workshop")
* @Route("/addToCart", name="addToCart", defaults={"XmlHttpRequest"=true}, methods={"POST"})
* @param Request $request
* @param SalesChannelContext $context
* @return JsonResponse
*/
public function addToCart(Request $request, SalesChannelContext $context)
{
$workshopId = $request->get('workshopId');
$result = $this->workshopService->addToCart($workshopId, $context);
return $this->json($result);
}
}