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/SellerAdmin.php

<?php

namespace App\UserBundle\Admin;

use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\AdminType;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use App\UserBundle\Admin\UserListAdmin;
use App\UserBundle\Entity\UserTypes;
use App\UserBundle\Entity\UserTypeTypes;

/**
 * Supplier Admin
 *
 * @author Otto Saayman <otto@igotafrica.com>
 * @package UserBundle
 * @subpackage Admin
 * @version 0.0.1
 */
class SellerAdmin extends UserListAdmin {

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

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

    protected function configureFormFields(FormMapper $formMapper): void {
        parent::configureFormFields($formMapper);

        $formMapper->remove('user_type_types')
                ->remove('is_active')->add('is_active', HiddenType::class, array())
                ->remove('is_super_admin')->add('is_super_admin', HiddenType::class, array())
                ->add('user_bank_detail', AdminType::class)
                ->remove('id_number')->add('id_number', HiddenType::class, array())
                ->remove('id_doc_file_id')->add('id_doc_file_id', HiddenType::class, array())
                ->remove('referred_by')->add('referred_by', HiddenType::class, array())
                ->remove('send_doc_reject_notif')
                ->remove('send_access_level_notif')
                ->remove('move_to_companies');
    }

    public function configurePersistentParameters(): array {
        if (!$this->getRequest()) {
            return array();
        }

        $systemSettingManager = $this->container->get('system_setting.manager');

        return array(
            'provider' => $this->getRequest()->get('provider'),
            'user_type_id' => $this->getRequest()->get('user_type_id', $systemSettingManager->getSetting('fe_user_type')),
            'company_id' => $this->getRequest()->get('company_id', ''),
        );
    }

    public function configureQuery(ProxyQueryInterface $query): ProxyQueryInterface {
//    public function createQuery($context = 'list', $utt = null) {
        parent::setSellerAccessLevelId($this->getContainer()->get('access_level.manager')->getSellerAccessLevelId());
        return parent::createQuery($query);
    }

    protected function configureDatagridFilters(DatagridMapper $datagridMapper): void {
        parent::configureDatagridFilters($datagridMapper);
    }

    protected function configureListFields(ListMapper $listMapper): void {
        parent::configureListFields($listMapper);
//        $listMapper;
    }

    protected function configureShowFields(ShowMapper $show): void {
        parent::configureShowFields($show);
    }

    public function preUpdatePersist($user) {

//        echo 'pre update';
//        exit;

        parent::preUpdatePersist($user);

        if (!is_object($user->getUserTypeTypes())) {
            $user->setUserTypeTypes($this->getUserTypeTypeId());
        }

        return $user;
    }

    public function postUpdatePersist($user) {
        parent::postUpdatePersist($user);

        parent::getContainer()->get('user_list.manager')->linkAccessLevel($user, array(parent::getContainer()->get('access_level.manager')->getSellerAccessLevelId()));
    }

    protected function configureSideMenu(\Knp\Menu\ItemInterface $menu, $action, ?\Sonata\AdminBundle\Admin\AdminInterface $childAdmin = null) {

    }

    /**
     * @return UserTypeTypes
     */
    public function getUserTypeId() {

        $systemSettingManager = parent::getContainer()->get('system_setting.manager');

        return $this->getRequest()->get('user_type_id', $systemSettingManager->getSetting('fe_user_type'));
    }

    /**
     * @return UserTypeTypes
     */
    public function getUserTypeTypeId() {
        return parent::getContainer()->get('user_type_types.manager')->find(parent::getContainer()->get('user_type_types.manager')->getSellerTypeTypeId());
    }

}