| Current Path : /var/www/v3.cesa.co.za/src/ContactBundle/Admin/ |
| Current File : /var/www/v3.cesa.co.za/src/ContactBundle/Admin/MessageCreditAdmin.php |
<?php
namespace App\ContactBundle\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\DatagridInterface;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\DoctrineORMAdminBundle\Filter\ChoiceFilter;
use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use App\ContactBundle\Entity\MessageCredit;
use App\UserBundle\Form\DataTransformer\UserListToStringTransformer;
use App\UserBundle\Form\Type\UserSelectType;
/**
* Message Credit Admin
*
* @author Otto Saayman <otto@igotafrica.com>
* @package ContactBundle
* @subpackage Admin
* @version 0.0.1
*/
class MessageCreditAdmin extends AbstractAdmin {
/**
* Security Context
* @var \Symfony\Component\Security\Core\SecurityContextInterface
*/
protected $securityContext;
/**
* Entity manager
* @var \Doctrine\ORM\EntityManager
*/
protected $em;
/**
* Container
* @var $container
*/
protected $container;
protected function generateBaseRouteName(bool $isChildAdmin = false): string
{
return 'message_credit';
}
protected function generateBaseRoutePattern(bool $isChildAdmin = false): string
{
return 'message_credit';
}
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 configureDefaultSortValues(array &$sortValues): void {
// display the first page (default = 1)
$sortValues[DatagridInterface::PAGE] = 1;
// reverse order (default = 'ASC')
$sortValues[DatagridInterface::SORT_ORDER] = 'DESC';
// name of the ordered field (default = the model's id field, if any)
$sortValues[DatagridInterface::SORT_BY] = 'created_at';
}
protected function configureFormFields(FormMapper $formMapper): void {
$userTransFormer = new UserListToStringTransformer();
$userTransFormer->setContainer($this->container);
$messageCredit = $this->getObject($this->getRequest()->get($this->getIdParameter()));
if (!is_object($messageCredit)) {
$messageCredit = new MessageCredit();
}
$formMapper
->add('credit_number', null, array('label' => 'Number of Credits'))
->add('description', null, array('label' => 'Description', 'required' => true))
->add('credit_used', null, array('label' => 'Credits Used'))
->add('credit_remaining', null, array('label' => 'Credits Remaining'))
->add('owner', UserSelectType::class, array('required' => false, 'label' => ' ', 'user_list' => $messageCredit->getOwner()))
->add('message_type', null, array('label' => 'Message Type'))
;
$formMapper->get('owner')->addModelTransformer($userTransFormer);
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void {
$users = $this->container->get('user_list.manager')->getSelectArray();
$datagridMapper
->add('owner', ChoiceFilter::class, array('label' => 'Owner', 'field_type' => ChoiceType::class, 'field_options' => array('choices' => $users)))
->add('description', null, array('label' => 'Description'))
->add('message_type')
;
}
protected function configureListFields(ListMapper $listMapper): void {
$listMapper
->addIdentifier('owner', null, array('label' => 'Owner'))
->add('message_type', null, array('label' => 'Type'))
->add('credit_number', null, array('label' => 'Number'))
->add('description', null, array('label' => 'Description'))
->add('credit_used', null, array('label' => 'Used'))
->add('credit_remaining', null, array('label' => 'Remaining'))
->add('updated_at')
->add('created_at')
->add('_action', 'actions', array(
'actions' => array(
'show' => array(),
'edit' => array(),
'delete' => array(),
)
))
;
}
/**
* @param App\ContactBundle\Entity\MessageCredit $messageCredit
*/
public function preUpdate($messageCredit): void {
$this->preUpdatePersist($messageCredit);
}
/**
* @param App\ContactBundle\Entity\MessageCredit $messageCredit
*/
public function prePersist($messageCredit): void {
$this->preUpdatePersist($messageCredit);
}
/**
* @param App\ContactBundle\Entity\MessageCredit $messageCredit
*/
public function preUpdatePersist($messageCredit) {
$values = $this->getRequest()->get($this->getUniqid());
if (is_array($values) && isset($values['owner']) && $values['owner']['owner']) {
$userList = $this->container->get('user_list.manager')->find($values['owner']['owner']);
if (is_object($userList)) {
$messageCredit->setOwner($userList);
}
}
if (is_null($messageCredit->getCreatedBy()) || strlen($messageCredit->getCreatedBy()) <= 0) {
$messageCredit->setCreatedBy($this->securityContext->getToken()->getUser()->getId());
}
}
}