Completed
Pull Request — master (#25)
by
unknown
03:51
created

getEmailDetailsByTokenAction()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 11
nc 2
nop 2
1
<?php
2
3
namespace Azine\EmailBundle\Controller;
4
5
6
use Azine\EmailBundle\Entity\SentEmail;
7
use Azine\EmailBundle\Form\SentEmailType;
8
use FOS\UserBundle\Model\User;
9
use Symfony\Component\HttpFoundation\Request;
10
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
11
12
class AzineEmailController extends Controller
13
{
14
15
    /**
16
     *  Emails-Dashboard
17
     */
18
    public function emailsDashboardAction(Request $request)
19
    {
20
        $form = $this->createForm(new SentEmailType());
0 ignored issues
show
Documentation introduced by
new \Azine\EmailBundle\Form\SentEmailType() is of type object<Azine\EmailBundle\Form\SentEmailType>, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
21
22
        $form->handleRequest($request);
23
24
        $searchParams = $form->getData();
25
26
        $data = $this->searchEmails($searchParams);
27
28
        $data['form'] = $form->createView();
29
30
        return $this->render('AzineEmailBundle::emailsDashboard.html.twig',$data);
31
    }
32
33
    public function getEmailDetailsByTokenAction(Request $request, $token)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
34
    {
35
        $email = $this->getDoctrine()->getManager()->getRepository(SentEmail::class)
36
            ->findOneByToken($token);
37
38
        if($email instanceof SentEmail){
39
40
            $recipients = implode(', ', $email->getRecipients());
41
            $variables = implode(', ', array_keys($email->getVariables()));
42
43
            return $this->render('AzineEmailBundle::sentEmailDetails.html.twig',
44
                ['email' => $email, 'recipients' => $recipients, 'variables' => $variables]);
45
        }
46
47
        $response = $this->render("AzineEmailBundle::emailNotFound.html.twig");
48
        $response->setStatusCode(404);
49
50
        return $response;
51
    }
52
53
    public function getUserEmailsAction(Request $request)
54
    {
55
        $form = $this->createForm(new SentEmailType());
0 ignored issues
show
Documentation introduced by
new \Azine\EmailBundle\Form\SentEmailType() is of type object<Azine\EmailBundle\Form\SentEmailType>, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
56
57
        $form->handleRequest($request);
58
59
        $searchParams = $form->getData();
60
61
        $user = $this->getUser();
62
63
        if($user instanceof User){
64
65
            $searchParams['recipients'] = $user->getEmail();
66
        }
67
68
        $data = $this->searchEmails($searchParams);
69
70
        $data['form'] = $form->createView();
71
72
        return $this->render('AzineEmailBundle::userEmailsDashboard.html.twig',$data);
73
74
    }
75
76
    private function searchEmails($searchParams = [])
77
    {
78
        $repository = $this->getDoctrine()->getManager()->getRepository(SentEmail::class);
79
        $queryBuilder = $repository->search($searchParams);
80
81
        $paginator = $this->get('azine.email.bundle.pagination');
82
83
        $paginator->setTotalCount($repository->getTotalCount($queryBuilder));
84
85
        $queryBuilder->setMaxResults($paginator->getPageSize())
86
            ->setFirstResult($paginator->getOffset());
87
88
        $emails = $queryBuilder->getQuery()->getResult();
89
        $emailsArray = [];
90
91
        foreach ($emails as $key => $email){
92
93
            $emailsArray[$key]['recipients'] = implode(', ', $email->getRecipients());
94
            $emailsArray[$key]['template'] = $email->getTemplate();
95
            $emailsArray[$key]['sent'] = $email->getSent()->format('Y-m-d H:i:s');
96
            $emailsArray[$key]['variables'] = substr(json_encode($email->getVariables()), 0, 60);
97
            $emailsArray[$key]['token'] = $email->getToken();
98
        }
99
100
        return ['paginator' => $paginator, 'emails' => $emailsArray];
101
    }
102
}
103