ContactMessageSendAction::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Finder\Http\Actions;
4
5
use Finder\Http\Requests\ContactMessageRequest;
6
use Finder\Mail\ContactMessage;
7
use Illuminate\Contracts\Routing\ResponseFactory;
8
use Illuminate\Http\JsonResponse;
9
use Illuminate\Http\Response;
10
use Illuminate\Support\Facades\Mail;
11
12
/**
13
 * Class ContactMessageSendAction.
14
 *
15
 * @package Finder\Http\Actions
16
 */
17
class ContactMessageSendAction
18
{
19
    /**
20
     * @var ResponseFactory
21
     */
22
    protected $responseFactory;
23
24
    /**
25
     * ContactMessageSendAction constructor.
26
     *
27
     * @param ResponseFactory $responseFactory
28
     */
29
    public function __construct(ResponseFactory $responseFactory)
30
    {
31
        $this->responseFactory = $responseFactory;
32
    }
33
34
    /**
35
     * @apiVersion        1.0.0
36
     * @api               {post} /v1/contact_message Create
37
     * @apiName           Create
38
     * @apiGroup          Contact Message
39
     * @apiHeader         {String} Accept application/json
40
     * @apiHeader         {String} Content-Type application/json
41
     * @apiParamExample   {json} Request-Body-Example:
42
     * {
43
     *     "email": "[email protected]",
44
     *     "name": "John Doe",
45
     *     "subject": "The message subject",
46
     *     "message": "The message text."
47
     * }
48
     * @apiSuccessExample {json} Success-Response:
49
     * HTTP/1.1 204 No Content
50
     */
51
52
    /**
53
     * Create a resource.
54
     *
55
     * @param  ContactMessageRequest $request
56
     * @return JsonResponse
57
     */
58
    public function __invoke(ContactMessageRequest $request): JsonResponse
59
    {
60
        $request->merge(['client_ip_address' => $request->getClientIp()]);
61
62
        Mail::queue(new ContactMessage($request->all()));
63
64
        return $this->responseFactory->json(null, Response::HTTP_NO_CONTENT);
65
    }
66
}
67