MailQueueAdmin::configureListFields()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 14
rs 9.8666
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Stfalcon\Bundle\EventBundle\Admin;
4
5
use Sonata\AdminBundle\Admin\AbstractAdmin;
6
use Sonata\AdminBundle\Form\FormMapper;
7
use Sonata\AdminBundle\Datagrid\DatagridMapper;
8
use Sonata\AdminBundle\Datagrid\ListMapper;
9
use Stfalcon\Bundle\EventBundle\Entity\MailQueue;
10
11
/**
12
 * Class MailQueueAdmin.
13
 */
14
final class MailQueueAdmin extends AbstractAdmin
15
{
16
    /**
17
     * @var string
18
     */
19
    protected $parentAssociationMapping = 'mail';
20
21
    /**
22
     * @param MailQueue $mailQueue
23
     *
24
     * @return mixed|void
25
     *
26
     * @throws \Doctrine\ORM\OptimisticLockException
27
     */
28
    public function postPersist($mailQueue)
29
    {
30
        $container = $this->getConfigurationPool()->getContainer();
31
        /** @var $em \Doctrine\ORM\EntityManager */
32
        $em = $container->get('doctrine')->getManager();
33
34
        /** @var MailQueue $mailQueue */
35
        $mail = $mailQueue->getMail();
36
        $mail->incTotalMessages();
37
        $em->flush();
38
    }
39
40
    /**
41
     * @param MailQueue $mailQueue
42
     *
43
     * @return mixed|void
44
     *
45
     * @throws \Doctrine\ORM\OptimisticLockException
46
     */
47
    public function postRemove($mailQueue)
48
    {
49
        $container = $this->getConfigurationPool()->getContainer();
50
        /** @var $em \Doctrine\ORM\EntityManager */
51
        $em = $container->get('doctrine')->getManager();
52
53
        $mail = $mailQueue->getMail();
54
        $mail->decTotalMessages();
55
        if ($mailQueue->getIsSent()) {
56
            $mail->decSentMessage();
57
        }
58
        $em->flush();
59
    }
60
61
    /**
62
     * @param ListMapper $listMapper
63
     */
64
    protected function configureListFields(ListMapper $listMapper)
65
    {
66
        $listMapper
67
            ->addIdentifier('id')
68
            ->add('isSent', null, ['label' => 'Отправлено'])
69
            ->add('isOpen', null, ['label' => 'Открыто'])
70
            ->add('isUnsubscribe', null, ['label' => 'Отписался'])
71
            ->add('user.fullname', null, ['label' => 'Имя пользователя'])
72
            ->add('mail.title', null, ['label' => 'Название'])
73
            ->add('_action', 'actions', [
74
                    'label' => 'Действие',
75
                    'actions' => [
76
                        'edit' => [],
77
                        'delete' => [],
78
                    ],
79
            ]);
80
    }
81
82
    /**
83
     * @param DatagridMapper $datagridMapper
84
     */
85
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
86
    {
87
        $datagridMapper
88
            ->add('mail.id', null, ['label' => 'Id письма'])
89
            ->add('isSent', null, ['label' => 'Отправлено'])
90
            ->add('isOpen', null, ['label' => 'Открыто'])
91
            ->add('isUnsubscribe', null, ['label' => 'Отписались'])
92
        ;
93
    }
94
95
    /**
96
     * @param FormMapper $formMapper
97
     */
98
    protected function configureFormFields(FormMapper $formMapper)
99
    {
100
        $formMapper
101
            ->with('Общие')
102
                ->add('user', null, ['label' => 'Пользователь'])
103
                ->add('mail', null, ['label' => 'Почта'])
104
                ->add('isSent', null, ['required' => false, 'label' => 'Отправлено'])
105
            ->end();
106
    }
107
}
108