Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 56
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
MailTemplates
0.00% covered (danger)
0.00%
0 / 56
0.00% covered (danger)
0.00%
0 / 1
42
0.00% covered (danger)
0.00%
0 / 1
 readResponse
0.00% covered (danger)
0.00%
0 / 56
0.00% covered (danger)
0.00%
0 / 1
42
1<?php
2
3/**
4 * @package Zmsadmin
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsadmin;
9
10use BO\Slim\Render;
11use BO\Zmsentities\Process;
12use BO\Zmsentities\Collection\ProcessList;
13use BO\Zmsentities\Request;
14use BO\Zmsentities\Scope;
15use BO\Zmsentities\Exception\UserAccountMissingRights;
16
17class MailTemplates extends BaseController
18{
19    /**
20     * @SuppressWarnings(Param)
21     * @return \Psr\Http\Message\ResponseInterface
22     */
23    #[\Override]
24    public function readResponse(
25        \Psr\Http\Message\RequestInterface $request,
26        \Psr\Http\Message\ResponseInterface $response,
27        array $args
28    ): \Psr\Http\Message\ResponseInterface {
29        $workstation = \App::$http->readGetResult('/workstation/', ['resolveReferences' => 1])->getEntity();
30        if (!$workstation->getUseraccount()->hasPermissions(['mailtemplates'])) {
31            throw new UserAccountMissingRights();
32        }
33        $providerId = $workstation->scope['provider']['id'];
34
35        $scopeName = $workstation->scope['contact']['name'];
36        $scopeId = $workstation->scope['id'];
37
38        if (isset($args['scopeId']) && !empty($args['scopeId'])) {
39            $scope = \App::$http
40                ->readGetResult('/scope/' . $args['scopeId'] . '/', ['resolveReferences' => 1])
41                ->getEntity();
42
43            $scopeName = $scope->contact->name;
44            $scopeId = $scope->id;
45            $providerId = $scope->provider->id;
46        }
47
48        $config = \App::$http->readGetResult('/config/')->getEntity();
49
50        $mergedMailTemplates = \App::$http->readGetResult('/merged-mailtemplates/' . $providerId . '/')->getCollection();
51        foreach ($mergedMailTemplates as $template) {
52            if ($template['provider']) {
53                $template->isCustom = true;
54            }
55        }
56
57        $priorityNames = [
58            'mail_preconfirmed.twig',
59            'mail_confirmation.twig',
60            'mail_reminder.twig',
61            'mail_delete.twig'
62        ];
63
64        $mergedMailTemplates->prioritizeByName($priorityNames);
65
66        $mainProcessExample = ((new Process())->getExample());
67        $mainProcessExample->id = 987654;
68        $dateTime = new \DateTimeImmutable("2015-10-23 08:00:00", new \DateTimeZone('Europe/Berlin'));
69        $mainProcessExample->getFirstAppointment()->setDateTime($dateTime);
70        $mainProcessExample->requests[] = (new Request())->getExample();
71
72        $processExample = ((new Process())->getExample());
73        $processExample->scope = ((new Scope())->getExample());
74        $processExample2 = clone $processExample;
75        $dateTime = new \DateTimeImmutable("2015-12-30 11:55:00", new \DateTimeZone('Europe/Berlin'));
76        $processExample2->getFirstAppointment()->setDateTime($dateTime);
77
78        $processListExample = new ProcessList();
79        $processListExample->addEntity($processExample);
80        $processListExample->addEntity($processExample2);
81        $success = $request->getAttribute('validator')->getParameter('success')->isString()->getValue();
82
83        return Render::withHtml(
84            $response,
85            'page/mailtemplates.twig',
86            array(
87                'title' => 'Mail Templates',
88                'pageTitle' => 'Mail Templates für ' . $scopeName,
89                'providerId' => $providerId,
90                'workstation' => $workstation,
91                'config' => $config,
92                'scopeId' => $scopeId,
93                'mailtemplates' => $mergedMailTemplates,
94                'processExample' => $mainProcessExample,
95                'processListExample' => $processListExample,
96                'menuActive' => 'mailtemplates',
97                'success' => $success
98            )
99        );
100    }
101}