<?php declare(strict_types=1);

/*
 * This file is part of the Rapsys TreeBundle package.
 *
 * (c) Raphaël Gertz <symfony@rapsys.eu>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Rapsys\TreeBundle\Controller;

use Psr\Container\ContainerInterface;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

use Twig\Environment;

/**
 * {@inheritdoc}
 */
class TreeController extends AbstractController {
	/**
	 * Context array
	 */
	protected array $context = [];

	/**
	 * Creates a new tree controller
	 *
	 * @param ContainerInterface $container The ContainerInterface instance
	 * @param Environment $twig The twig environment instance
	 */
	function __construct(protected ContainerInterface $container, protected Environment $twig) {
	}

	/**
	 * The index page
	 *
	 * Display file tree
	 *
	 * @param Request $request The request instance
	 * @return Response The rendered view
	 */
	public function index(Request $request, string $path): Response {
		//Render template
		$response = $this->twig->render('@RapsysTree/index.html.twig', $this->context);
		$response->setEtag(md5($response->getContent()));
		$response->setPublic();
		$response->isNotModified($request);

		//Return response
		return $response;
	}
}