Passed
Push — main ( 9620d4...3c0b0e )
by Dante
01:30
created

PlaceholderMessageController::sendMail()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 3
dl 0
loc 4
rs 10
1
<?php
2
declare(strict_types=1);
3
4
/**
5
 * BEdita\Mail
6
 */
7
namespace BEdita\Mail\Controller;
8
9
use BEdita\API\Controller\JsonBaseController;
10
use BEdita\Mail\Mailer\PlaceholderMailer;
11
use Cake\Core\Configure;
12
use Cake\Http\Exception\BadRequestException;
13
use Cake\Http\Response;
14
use Cake\Mailer\MailerAwareTrait;
15
16
/**
17
 * Controller to send placeholder message
18
 */
19
class PlaceholderMessageController extends JsonBaseController
20
{
21
    use MailerAwareTrait;
22
23
    /**
24
     * Send placeholder message.
25
     *
26
     * @return \Cake\Http\Response
27
     */
28
    public function send(): Response
29
    {
30
        $this->request->allowMethod(['post']);
31
        $name = $this->request->getData('name');
32
        if (empty($name)) {
33
            throw new BadRequestException('Missing message template name');
34
        }
35
        $data = (array)$this->request->getData('data');
36
        $config = (array)$this->request->getData('config');
37
        $this->sendMail($name, $data, $config);
38
39
        return $this->getResponse()->withStatus(204);
40
    }
41
42
    /**
43
     * Send placeholder message mail.
44
     *
45
     * @param string $name Message template name
46
     * @param array<string, mixed> $data Placeholder data
47
     * @param array<string, mixed> $config Mailer config
48
     * @return void
49
     * @codeCoverageIgnore
50
     */
51
    protected function sendMail(string $name, array $data = [], array $config = []): void
52
    {
53
        $this->getMailer(PlaceholderMailer::class, (array)Configure::read('PlaceholderMailer'))
54
            ->send('placeholderMessage', [$name, $data, $config]);
55
    }
56
}
57