Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/ContentBundle/Admin/
Upload File :
Current File : /var/www/v3.cesa.co.za/src/ContentBundle/Admin/FormAdmin.php

<?php

namespace App\ContentBundle\Admin;

use Knp\Menu\ItemInterface;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage;
use App\CoreBundle\Form\DataTransformer\ArrayToStringTransformer;
use App\ContentBundle\Entity\Form;

/**
 * Form Admin
 *
 * @author Otto Saayman <otto@igotafrica.com>
 * @package ContentBundle
 * @subpackage Admin
 * @version 0.0.1
 */
class FormAdmin extends AbstractAdmin
{

    /**
     * Security Context
     * @var \Symfony\Component\Security\Core\SecurityContextInterface
     */
    protected $securityContext;

    /**
     * Container
     * @var $container
     */
    protected $container;
    protected function generateBaseRouteName(bool $isChildAdmin = false): string
    {
        return 'form';
    }

    protected function generateBaseRoutePattern(bool $isChildAdmin = false): string
    {
        return 'form';
    }

    public function setSecurityContext(UsageTrackingTokenStorage $securityContext)
    {
        $this->securityContext = $securityContext;
    }

    /**
     * @return null
     */
    public function setContainer($container)
    {
        $this->container = $container;
    }

    protected function configureFormFields(FormMapper $formMapper): void
    {

        $arrayToStringTransformer = new ArrayToStringTransformer();

        $formMapper
            ->add(
                'department',
                ChoiceType::class,
                array('label' => 'Department', 'choices' => array('CESA' => 'cesa', 'Marketing' => 'marketing', 'SCE' => 'sce', 'BCE' => 'bce', 'CPD' => 'cpd'))
            )
            ->add('bce_modules', ChoiceType::class, array('label' => 'BCE Modules', 'choices' => array('CEE' => 1, 'Project Delivery' => 2, 'Finance' => 3, 'Law' => 4, 'Interpersonal Skills' => 5), 'multiple' => true))
            ->add('to_name', null, array('label' => 'Send to Name'))
            ->add('to_e_mail', null, array('label' => 'Send to E-Mail'))
            ->add('title', null, array('label' => 'Title'))
            ->add('description', null, array('label' => 'Description'))
            ->add(
                'start_date',
                DateType::class,
                array(
                    'required' => true,
                    'label' => 'Start Date',
                    'widget' => 'single_text',
                    'input_format' => 'd-m-Y',
                    'attr' => array('class' => 'datepicker', 'autocomplete' => 'off')
                )
            )
            ->add(
                'end_date',
                DateType::class,
                array(
                    'required' => false,
                    'label' => 'End Date',
                    'widget' => 'single_text',
                    'input_format' => 'd-m-Y',
                    'attr' => array('class' => 'datepicker', 'autocomplete' => 'off')
                )
            )
            ->add('add_referral', null, array('label' => 'Add Referral Step'))
            ->add('survey', null, array('label' => 'Survey Form'))
        ;

        $formMapper->get('bce_modules')->addModelTransformer($arrayToStringTransformer);
    }

    protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
    {

        $datagridMapper
            ->add('title', null, array('label' => 'Title'));
    }

    protected function configureListFields(ListMapper $listMapper): void
    {

        $listMapper
            ->addIdentifier('title', null, array('label' => 'Title'))
            ->add('start_date', null, array('label' => 'Start date'))
            ->add('end_date', null, array('label' => 'End date'))
            ->add('_action', 'actions', array(
                'actions' => array(
                    'show' => array(),
                    'edit' => array(),
                    'delete' => array(),
                )
            ))
        ;
    }

    protected function configureShowFields(ShowMapper $showMapper): void
    {

        $showMapper
            ->add('title', null, array('label' => 'Title'))
            ->add('start_date', null, array('label' => 'Start date'))
            ->add('end_date', null, array('label' => 'End date'))
        ;
    }

    protected function configureRoutes(RouteCollectionInterface $collection): void
    {
        $collection->add(
            'list_form_item',
            'list_form_item',
            array(
                '_controller' => 'App\ContentBundle\Controller\FormItemAdminController::listAction',
                '_sonata_admin' => 'content.admin.form_item'
            )
        );
        $collection->add(
            'list_form_completed',
            'list_form_completed',
            array(
                '_controller' => 'App\ContentBundle\Controller\FormCompletedAdminController::listAction',
                '_sonata_admin' => 'content.admin.form_completed'
            )
        );
        $collection->add('copyForm', $this->getRouterIdParameter() . '/copyForm', array('_controller' => 'App\\ContentBundle\\Controller\\FormAdminController::copyForm'));
    }

    protected function configureTabMenu(ItemInterface $menu, string $action, ?AdminInterface $childAdmin = null): void
    {

        $admin = $this->isChild() ? $this->getParent() : $this;
        $id = $admin->getRequest()->get('id');

        if (!in_array($action, array('edit'))) {
            return;
        }

        $menu->addChild(
            'Form Items',
            array(
                'uri' => $admin->generateUrl('list_form_item', array('form_id' => $id))
            )
        );
        $menu->addChild(
            'Forms Completed',
            array(
                'uri' => $admin->generateUrl('list_form_completed', array('form_id' => $id))
            )
        );
        $menu->addChild(
            'Copy Form',
            array('uri' => $admin->generateUrl('copyForm', array('id' => $id)))
        );
    }
}