<?php

declare(strict_types=1);

/*
 * Chill is a software for social workers
 *
 * For the full copyright and license information, please view
 * the LICENSE file that was distributed with this source code.
 */

namespace Chill\EventBundle\Controller;

use Chill\MainBundle\CRUD\Controller\CRUDController;
use Chill\MainBundle\Pagination\PaginatorInterface;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Request;

class EventThemeController extends CRUDController
{
    protected function createFormFor(string $action, $entity, ?string $formClass = null, array $formOptions = []): FormInterface
    {
        if ('new' === $action) {
            return parent::createFormFor($action, $entity, $formClass, ['step' => 'create']);
        }

        if ('edit' === $action) {
            return parent::createFormFor($action, $entity, $formClass, ['step' => 'edit']);
        }

        throw new \LogicException('action is not supported: '.$action);
    }

    /**
     * @param QueryBuilder|mixed $query
     */
    protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator): QueryBuilder
    {
        /* @var QueryBuilder $query */
        return $query->orderBy('e.ordering', 'ASC')
            ->addOrderBy('e.id', 'ASC');
    }
}
