| Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Admin/ |
| Current File : /var/www/v3.cesa.co.za/src/UserBundle/Admin/UserListAdmin.php |
<?php
namespace App\UserBundle\Admin;
use Knp\Menu\ItemInterface;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Doctrine\ORM\EntityRepository;
use App\CompanyBundle\Entity\Companies;
use App\CompanyBundle\Form\Type\CompaniesSelectType;
use App\CompanyBundle\Form\Type\CompaniesSelectMultiType;
use App\ContentBundle\Entity\Files;
use App\CoreBundle\Form\Type\DisplayType;
use App\UserBundle\Entity\UserList;
/**
* User List Admin
*
* @author Otto Saayman <otto@igotafrica.com>
* @package UserBundle
* @subpackage Admin
* @version 0.0.1
*/
class UserListAdmin extends AbstractAdmin {
protected function generateBaseRouteName(bool $isChildAdmin = false): string
{
return 'users';
}
protected function generateBaseRoutePattern(bool $isChildAdmin = false): string
{
return 'users';
}
private $userManager = null;
private $userTypesManager = null;
// setup the default sort column and order
protected $datagridValues = array(
'_sort_order' => 'DESC',
'_sort_by' => 'created_at',
'_per_page' => 64,
);
protected $classnameLabel = 'Users';
/**
* Security Context
* @var \Symfony\Component\Security\Core\SecurityContextInterface
*/
protected $securityContext;
/**
* Entity manager
* @var \Doctrine\ORM\EntityManager
*/
protected $em;
/**
* Container
* @var $container
*/
protected $container;
protected $companyObject;
protected $userObject;
protected $sellerAccessLevelId;
public function setSecurityContext(UsageTrackingTokenStorage $securityContext) {
$this->securityContext = $securityContext;
}
/**
* @param \Doctrine\ORM\EntityManager $em
*/
public function setEntityManager($em) {
$this->em = $em;
}
/**
* @param \Doctrine\ORM\EntityManager $em
*/
public function setSellerAccessLevelId($sellerAccessLevelId) {
$this->sellerAccessLevelId = $sellerAccessLevelId;
}
/**
* @return null
*/
public function setContainer($container) {
$this->container = $container;
}
/**
* @return object
*/
public function getContainer() {
return $this->container;
}
public function activesubclasscode() {
}
public function getUserListObject() {
if (is_object($this->userObject)) {
return $this->userObject;
}
if (strlen($this->getRequest()->get('id')) > 0) {
$this->userObject = $this->em->getRepository(UserList::class)->find($this->getRequest()->get('id'));
} else {
$this->userObject = new UserList();
}
return $this->userObject;
}
protected function configureFormFields(FormMapper $formMapper): void {
$user = $this->getObject($this->getRequest()->get('id'));
if (!is_object($user)) {
$user = new UserList();
}
$formMapper
->with('Basic Details')
->add('first_name_string', null, array('label' => 'Name'))
->add('last_name_string', null, array('label' => 'Surname'))
->add('username', TextType::class)
->add('plainPassword', PasswordType::class, array('required' => false))
->add('is_active', null, array('required' => false))
->add('is_super_admin', null, array('required' => false))
->add('user_level', null, array('required' => false, 'label' => 'Access Levels'))
->end()
;
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void {
$datagridMapper
->add('first_name_string', null, array('label' => 'First Name'))
->add('last_name_string', null, array('label' => 'Last Name'))
->add('username', null, array('label' => 'Username'))
->add('user_level', null, array('label' => 'Access Levels'))
;
}
protected function configureListFields(ListMapper $listMapper): void {
$listMapper
->addIdentifier('first_name_string', null, array('label' => 'First Name'))
->add('last_name_string', null, array('label' => 'Last Name'))
->add('username', null, array('label' => 'Username'))
->add('is_active', null, array('label' => 'Active'))
->add('deleted', null, array('label' => 'Deleted'))
->add('user_level', null, array('label' => 'Access Levels'))
->add('created_at', null, array('label' => 'Date Created'))
->add('updated_at', null, array('label' => 'Date Updated'))
->add('_action', 'actions', array(
'actions' => array(
'show' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
}
public function configureBatchActions(array $actions): array {
// retrieve the default (currently only the delete action) actions
// $actions = parent::getBatchActions();
// check user permissions
if ($this->hasRoute('edit') && $this->isGranted('EDIT') && $this->hasRoute('delete') && $this->isGranted('DELETE')) {
$actions['disable'] = array(
'label' => 'Disable',
'ask_confirmation' => true
);
$actions['enable'] = array(
'label' => 'Enable',
'ask_confirmation' => true
);
}
return $actions;
}
/**
* @param IGA\UserBundle\Entity\UserList $user
*/
public function preUpdate($user): void {
$this->preUpdatePersist($user);
}
/**
* @param IGA\UserBundle\Entity\UserList $user
*/
public function prePersist($user): void {
$this->preUpdatePersist($user);
if (is_object($this->securityContext->getToken()) && is_object($this->securityContext->getToken()->getUser())) {
$user->setCreatedBy($this->securityContext->getToken()->getUser());
}
}
public function preUpdatePersist($user) {
$this->container->get('user_list.manager')->checkRequestValues($user);
$this->container->get('user_list.manager')->updatePassword($user);
return $user;
}
public function setUserManager(UserListManager $userManager) {
$this->userManager = $userManager;
}
/**
* @return UserManagerInterface
*/
public function getUserManager() {
return $this->userManager;
}
}