FEATURE [regroupment][form] integrate in regroupment admin entity into PickCenterType, datamapping not working

This commit is contained in:
2023-02-03 12:29:38 +01:00
parent 7d80507517
commit 0ace1c1f6a
2 changed files with 105 additions and 39 deletions

View File

@@ -13,13 +13,17 @@ namespace Chill\MainBundle\Form\Type\Export;
use Chill\MainBundle\Center\GroupingCenterInterface;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\Regroupment;
use Chill\MainBundle\Export\ExportManager;
use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\Form\DataMapperInterface;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
@@ -34,7 +38,7 @@ use function in_array;
/**
* Pick centers amongst available centers for the user.
*/
class PickCenterType extends AbstractType
class PickCenterType extends AbstractType implements DataMapperInterface
{
public const CENTERS_IDENTIFIERS = 'c';
@@ -42,10 +46,10 @@ class PickCenterType extends AbstractType
protected ExportManager $exportManager;
/**
* @var array|GroupingCenterInterface[]
*/
protected array $groupingCenters = [];
// /**
// * @var array|GroupingCenterInterface[]
// */
// protected array $groupingCenters = [];
protected UserInterface $user;
@@ -72,8 +76,9 @@ class PickCenterType extends AbstractType
$export->requiredRole()
);
$builder->add(self::CENTERS_IDENTIFIERS, EntityType::class, [
$builder->add('center', EntityType::class, [
'class' => Center::class,
'label' => 'center',
'choices' => $centers,
'multiple' => true,
'expanded' => true,
@@ -81,9 +86,19 @@ class PickCenterType extends AbstractType
return $c->getName();
},
'data' => count($this->groupingCenters) > 0 ? null : $centers,
]);
])
->add('regroupment', EntityType::class, [
'class' => Regroupment::class,
'label' => 'regroupment',
'multiple' => true,
'expanded' => true,
'choice_label' => static function (Regroupment $r) {
return $r->getName();
},
])
->setDataMapper($this);
if (count($this->groupingCenters) > 0) {
/* if (count($this->groupingCenters) > 0) {
$groupingBuilder = $builder->create('g', null, [
'compound' => true,
]);
@@ -105,18 +120,65 @@ class PickCenterType extends AbstractType
if ($groupingBuilder->count() > 0) {
$builder->add($groupingBuilder);
}
}
}*/
$builder->addModelTransformer(new CallbackTransformer(
/* $builder->addModelTransformer(new CallbackTransformer(
function ($data) use ($centers) {
return $this->transform($data, $centers);
},
function ($data) use ($centers) {
return $this->reverseTransform($data, $centers);
}
));
));*/
}
public function mapDataToForms($viewData, $forms)
{
if (null === $viewData) {
return;
}
if (!$viewData instanceof Center || !$viewData instanceof Regroupment) {
throw new UnexpectedTypeException($viewData, [Center::class, Regroupment::class]);
}
$forms = iterator_to_array($forms);
$forms['centers']->setData($viewData->getCenters());
}
public function mapFormsToData($forms, &$viewData)
{
$forms = iterator_to_array($forms);
$centersArray = [];
array_push($centersArray, $forms['center']);
dump($forms['regroupment']);
// array_push($centersArray, )
// $viewData = array_merge($centersArray, $forms['regroupment']);
$viewData = $forms['regroupment'];
dump($forms);
dump($viewData);
}
/* public function buildView(FormView $view, FormInterface $form, array $options)
{
$export = $this->exportManager->getExport($options['export_alias']);
$centers = $this->authorizationHelper->getReachableCenters(
$this->user,
$export->requiredRole()
);
$view->vars['is_hidden'] = count($centers) <= 1;
}*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setRequired('export_alias');
@@ -137,7 +199,7 @@ class PickCenterType extends AbstractType
return $result;
}
protected function reverseTransform($data, $centers)
/* protected function reverseTransform($data, $centers)
{
$picked = $data[self::CENTERS_IDENTIFIERS]
instanceof \Doctrine\Common\Collections\Collection ?
@@ -159,10 +221,10 @@ class PickCenterType extends AbstractType
}
return array_unique($picked);
}
}*/
protected function transform($data, $centers)
/* protected function transform($data, $centers)
{
return $data;
}
}*/
}