| Current Path : /var/www/v3.cesa.co.za/src/SessionsBundle/Admin/ |
| Current File : /var/www/v3.cesa.co.za/src/SessionsBundle/Admin/SitesAdmin.php |
<?php
namespace App\SessionsBundle\Admin;
use Knp\Menu\ItemInterface as MenuItemInterface;
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\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage;
use App\CoreBundle\Form\DataTransformer\ArrayToJsonTransformer;
use App\SessionsBundle\Entity\Sites;
/**
* Sites Admin
*
* @author Otto Saayman <otto@igotafrica.com>
* @package SessionsBundle
* @subpackage Admin
* @version 0.0.1
*/
class SitesAdmin extends AbstractAdmin {
/**
* Security Context
* @var Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage
*/
protected $securityContext;
/**
* Container
* @var $container
*/
protected $container;
/**
* Entity manager
* @var \Doctrine\ORM\EntityManager
*/
protected $em;
protected function generateBaseRouteName(bool $isChildAdmin = false): string
{
return 'sites';
}
protected function generateBaseRoutePattern(bool $isChildAdmin = false): string
{
return 'sites';
}
protected $datagridValues = array(
'_sort_order' => 'DESC',
'_sort_by' => 'updated_at',
);
public function setSecurityContext(UsageTrackingTokenStorage $securityContext) {
$this->securityContext = $securityContext;
}
/**
* @param \Doctrine\ORM\EntityManager $em
*/
public function setEntityManager($em) {
$this->em = $em;
}
/**
* @return null
*/
public function setContainer($container) {
$this->container = $container;
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void {
$datagridMapper
->add('site_host_name', null, array('label' => 'Site Host Name'))
->add('server_ip', null, array('label' => 'Server IP Address'))
->add('site_port', null, array('label' => 'Port'))
->add('template_id', null, array('label' => 'Template ID'))
->add('build_site_map', null, array('label' => 'Build Site Map'))
//->add('created_at', null, array('label' => 'Created'))
//->add('updated_at', null, array('label' => 'Updated'))
;
}
protected function configureListFields(ListMapper $listMapper): void {
$listMapper
->addIdentifier('site_host_name', null, array('label' => 'Site Host Name'))
->add('server_ip', null, array('label' => 'Server IP Address'))
->add('site_port', null, array('label' => 'Port'))
->add('template_id', null, array('label' => 'Template ID'))
->add('session_count', null, array('label' => 'Sessions'))
->add('build_site_map', null, array('label' => 'Build Site Map'))
->add('created_at', null, array('label' => 'Created'))
->add('updated_at', null, array('label' => 'Updated'))
->add('_action', 'actions', array(
'actions' => array(
'show' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
}
protected function configureFormFields(FormMapper $formMapper): void {
$site = $this->getObject($this->getRequest()->get('id'));
$arrayJsonTransformer = new ArrayToJsonTransformer();
if (is_object($site)) {
$sitesList = $this->container->get('sites.manager')->getOtherSitesArray($this->getObject($this->getRequest()->get($this->getIdParameter())));
$categoriesArray = $this->container->get('categories.manager')->getAllCategoriesSelectArray(
$this->container->get('system_setting.manager')->getSetting('travel_category_type')
);
$businessCategoriesArray = $this->container->get('categories.manager')->getAllCategoriesSelectArray(
$this->container->get('system_setting.manager')->getSetting('business_category_type')
);
$travelCitiesArray = $this->container->get('cities.manager')->getAllSelectArray(
$this->container->get('system_setting.manager')->getSetting('travel_geography_type')
);
$businessCitiesArray = $this->container->get('cities.manager')->getAllSelectArray(
$this->container->get('system_setting.manager')->getSetting('business_geography_type')
);
} else {
$sitesList = array();
$categoriesArray = array();
$businessCategoriesArray = array();
$travelCitiesArray = array();
$businessCitiesArray = array();
}
$formMapper
->add('site_host_name', null, array('label' => 'Site Host Name'))
->add('site_name', null, array('label' => 'Site Name'))
->add('site_e_mail', null, array('label' => 'Site E-Mail'))
->add('server_ip', null, array('label' => 'Server IP Address'))
->add('site_port', null, array('label' => 'Port'))
->add('template_id', null, array('label' => 'Template ID'))
->add('build_site_map', null, array('label' => 'Build Site Map'))
->add(
'limit_travel_categories', ChoiceType::class, array(
'required' => false,
'label' => 'Limit Travel Categories',
'multiple' => true,
'choices' => $categoriesArray,
)
)
->add(
'limit_travel_cities', ChoiceType::class, array(
'required' => false,
'label' => 'Limit Travel Cities',
'multiple' => true,
'choices' => $travelCitiesArray,
)
)
->add(
'limit_business_categories', ChoiceType::class, array(
'required' => false,
'label' => 'Limit Business Categories',
'multiple' => true,
'choices' => $businessCategoriesArray,
)
)
->add(
'limit_business_cities', ChoiceType::class, array(
'required' => false,
'label' => 'Limit Business Cities',
'multiple' => true,
'choices' => $businessCitiesArray,
)
)
->add(
'move_site_id', ChoiceType::class, array(
'label' => 'Delete and move data to',
'choices' => $sitesList,
'mapped' => false,
'required' => false,
)
)
;
$formMapper->get('limit_travel_categories')->addModelTransformer($arrayJsonTransformer);
$formMapper->get('limit_travel_cities')->addModelTransformer($arrayJsonTransformer);
$formMapper->get('limit_business_categories')->addModelTransformer($arrayJsonTransformer);
$formMapper->get('limit_business_cities')->addModelTransformer($arrayJsonTransformer);
}
protected function configureShowFields(ShowMapper $showMapper): void {
$showMapper
->add('site_host_name', null, array('label' => 'Site Host Name'))
->add('server_ip', null, array('label' => 'Server IP Address'))
->add('site_port', null, array('label' => 'Port'))
->add('template_id', null, array('label' => 'Template ID'))
->add('build_site_map', null, array('label' => 'Build Site Map'))
->add('created_at', null, array('label' => 'Created'))
->add('updated_at', null, array('label' => 'Updated'))
;
}
/**
* @param SessionsBundle\Entity\Sites $site
*/
public function postUpdate($site): void {
$this->postUpdatePersist($site);
}
/**
* @param SessionsBundle\Entity\Sites $site
*/
public function postPersist($site): void {
$this->postUpdatePersist($site);
}
/**
* @param SessionsBundle\Entity\Sites $site
*/
public function postUpdatePersist($site) {
$arrValues = $this->getRequest()->get($this->getUniqid());
if (isset($arrValues['move_site_id']) && strlen($arrValues['move_site_id']) > 0) {
$this->container->get('sites.manager')->startDeleteMove($site, $arrValues['move_site_id']);
}
$this->container->get('batch_job.manager')->save("\$site = \$this->getContainer()->get('sites.manager')->find('" . $site->getId() . "'); "
. "\$this->getContainer()->get('sites.manager')->recalculate(\$site); ", true, true, 100);
}
protected function configureBatchActions(array $actions): array {
// check user permissions
if ($this->hasRoute('delete') && $this->isGranted('DELETE')) {
$actions['delete_move'] = [
'label' => "Delete and Move",
'ask_confirmation' => true, // If true, a confirmation will be asked before performing the action
'controller' => 'App/IGA/SessionsBundle/Controller/SitesAdminController::batchActionDeleteMove',
];
}
return $actions;
}
}