<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Pimcore\Localization\LocaleServiceInterface;
use App\Validator\Validator;
/**
* @Route("/api/ecosystem")
*/
class EcosystemController extends BaseController
{
protected $validator;
protected $locale;
public function __construct(
Validator $validator,
LocaleServiceInterface $localeService,
)
{
$this->validator = $validator;
$this->locale = $localeService->getLocale();
}
/**
* @Route("/detail/{slug}", methods={"GET"})
*/
public function detail($slug, Request $request)
{
$site = $this->getSite($request);
if ($site) {
try {
$errorMessages = $this->validator->validate([
'slug' => $slug ? 'required' : 'required',
], $request);
if ($errorMessages) return $this->sendValidatorError($errorMessages);
$siteName = $site->getRootDocument()->getKey();
$class = str_replace(__NAMESPACE__, __NAMESPACE__ .'\\'. $siteName, __CLASS__);
$class = $this->checkMiniSiteClass($class, $siteName);
if (class_exists($class)) {
$controller = new $class($this->locale);
$method = __FUNCTION__;
if (method_exists($controller, $method)) {
$response = $controller->{$method}($slug, $site);
return $this->sendResponse($response);
}
}
return $this->sendResponse();
} catch (\Throwable $e) {
return $this->sendError($e->getMessage(), 500);
}
}
return $this->returnNotFound();
}
}