<?php

namespace Lc\CaracoleBundle\Controller\Section;

use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TimeField;
use Lc\CaracoleBundle\Container\Section\OpeningContainer;
use Lc\CaracoleBundle\Controller\AdminControllerTrait;
use Lc\CaracoleBundle\Factory\Section\OpeningFactory;
use Lc\CaracoleBundle\Resolver\SectionResolver;
use Lc\SovBundle\Controller\AbstractAdminController;

abstract class OpeningAdminController extends AbstractAdminController
{
    use AdminControllerTrait;

    public function configureFields(string $pageName): iterable
    {
        $fields = parent::configureFields($pageName);

        return array_merge(
                [
                        ChoiceField::new('day')
                                ->setRequired(true)
                                ->setChoices(
                                        [
                                                'Lundi' => 1,
                                                'Mardi' => 2,
                                                'Mercredi' => 3,
                                                'Jeudi' => 4,
                                                'Vendredi' => 5,
                                                'Samedi' => 6,
                                                'Dimanche' => 7,
                                        ]
                                ),
                        TimeField::new('timeStart')
                                ->setRequired(false)
                                ->setFormat('H:mm'),
                        TimeField::new('timeEnd')
                                ->setRequired(false)
                                ->setFormat('H:mm'),
                        AssociationField::new('groupUser'),
                ],
                $fields
        );
    }

    public function configureCrud(Crud $crud): Crud
    {
        $crud = parent::configureCrud($crud);

        $crud->setDefaultSort(['day' => 'ASC']);

        return $crud;
    }

    public function createEntity(string $entityFqcn)
    {
        return $this->get(OpeningContainer::class)
                ->getFactory()
                ->create($this->get(SectionResolver::class)->getCurrent());
    }

}