Your IP : 216.73.217.79


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

<?php

namespace App\UserBundle\Admin;

use App\UserBundle\Entity\UserOld;
use App\UserBundle\Service\Echasl23UserService;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;

/**
 * Sonata admin for PHPMaker echasl23 users.
 */
class UserOldAdmin extends AbstractAdmin
{
    private ?Echasl23UserService $echasl23UserService = null;

    public function setEchasl23UserService(Echasl23UserService $echasl23UserService): void
    {
        $this->echasl23UserService = $echasl23UserService;
    }

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

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

    protected function configureFormFields(FormMapper $form): void
    {
        $isCreate = !$this->getSubject() || null === $this->getSubject()->getId();

        $form
            ->with('Account')
            ->add('username', TextType::class, ['label' => 'Username'])
            ->add('plainPassword', PasswordType::class, [
                'label' => 'Password',
                'required' => $isCreate,
                'help' => $isCreate ? null : 'Leave blank to keep the current password.',
            ])
            ->add('email_address', TextType::class, ['label' => 'Email', 'required' => false])
            ->add('access_level', IntegerType::class, ['label' => 'Access level'])
            ->add('activated', CheckboxType::class, ['label' => 'Active', 'required' => false])
            ->end();
    }

    protected function configureDatagridFilters(DatagridMapper $filter): void
    {
        $filter
            ->add('username')
            ->add('email_address')
            ->add('access_level')
            ->add('activated');
    }

    protected function configureListFields(ListMapper $list): void
    {
        $list
            ->addIdentifier('username')
            ->add('email_address', null, ['label' => 'Email'])
            ->add('access_level', null, ['label' => 'Level'])
            ->add('activated', null, ['label' => 'Active'])
            ->add('pwdchanged', null, ['label' => 'Password changed'])
            ->add(ListMapper::NAME_ACTIONS, null, [
                'actions' => [
                    'show' => [],
                    'edit' => [],
                    'delete' => [],
                ],
            ]);
    }

    protected function configureShowFields(ShowMapper $show): void
    {
        $show
            ->add('username')
            ->add('email_address', null, ['label' => 'Email'])
            ->add('access_level', null, ['label' => 'Level'])
            ->add('activated', null, ['label' => 'Active'])
            ->add('pwdchanged', null, ['label' => 'Password changed']);
    }

  /**
   * @param UserOld $object
   */
    protected function prePersist(object $object): void
    {
        $this->persistPassword($object);
    }

    /**
     * @param UserOld $object
     */
    protected function preUpdate(object $object): void
    {
        $this->persistPassword($object);
    }

    private function persistPassword(UserOld $user): void
    {
        $this->echasl23UserService?->applyPlainPassword($user, $user->getPlainPassword());
        $user->setPlainPassword(null);
        $user->setResolvedRoles($this->echasl23UserService?->resolveRoles($user) ?? ['NONE']);
    }
}