Newer
Older
activity-manager / src / Form / Activity / ActivityEditForm.php
@Kilian Riou Kilian Riou on 30 Mar 2021 3 KB Edit activity
<?php
namespace App\Form\Activity;

use App\Entity\ActivityEntity;
use App\Form\AbstractFormManager;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use App\Entity\ActorEntity;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use App\Enum\StatusEnum;

class ActivityEditForm extends AbstractFormManager
{
    /**
     * Update fields with entity
     * 
     * @param ActivityEntity $activity
     * @return self
     */
    public function updateFields(ActivityEntity $activity): self
    {
        $this->form->setData([
            'name' => $activity->getName(),
            'actor' => $activity->getActor(),
            'status' => $activity->getStatus(),
            'startDate' => $activity->getStartDate(),
            'endDate' => $activity->getEndDate(),
            'realStartDate' => $activity->getRealStartDate(),
            'realEndDate' => $activity->getRealEndDate(),
        ]);
        
        return $this;
    }

    /**
     * Update activity with user data
     *
     * @param ActivityEntity $activity
     * @return self
     */
    public function updateActivity(ActivityEntity $activity): self
    {
        $data = $this->form->getData();
        $activity->setName($data['name']);
        $activity->setActor($data['actor']);
        $activity->setStatus($data['status']);
        $activity->setStartDate($data['startDate']);
        $activity->setEndDate($data['endDate']);
        $activity->setRealStartDate($data['realStartDate']);
        $activity->setRealEndDate($data['realEndDate']);
        
        return $this;
    }

    /**
     * {@inheritdoc}
     */
    public function getTemplate(): string
    {
        return '_includes/html/form/activity/edit.html.twig';
    }

    /**
     * {@inheritdoc}
     */
    protected function addFields($formBuilder, $options): void
    {
        $formBuilder->add('name', TextType::class)
            ->add('actor', EntityType::class, [
            'class' => ActorEntity::class,
            'choice_label' => 'displayName',
            'required' => false,
        ])
            ->add('status', ChoiceType::class, [
            'choices' => ActivityEntity::VALID_STATUS,
            'choice_label' => function ($choice, $key, $value) {
                return StatusEnum::STATUS_NAME[$choice];
            },
        ])
            ->add('startDate', DateType::class, [
            'required' => false,
            'widget' => 'single_text',
        ])
            ->add('endDate', DateType::class, [
            'required' => false,
            'widget' => 'single_text',
        ])
            ->add('realStartDate', DateType::class, [
            'required' => false,
            'widget' => 'single_text',
        ])
            ->add('realEndDate', DateType::class, [
            'required' => false,
            'widget' => 'single_text',
        ])
            ->add('submit', SubmitType::class);
    }
}