MessageController   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 25
c 1
b 0
f 0
dl 0
loc 79
ccs 0
cts 26
cp 0
rs 10
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A new() 0 12 1
A show() 0 5 1
A __construct() 0 3 1
A index() 0 6 1
A store() 0 12 1
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\Http\Requests\MessageNewRequest;
6
use App\Http\Requests\MessageStoreRequest;
7
use App\Http\Resources\MessageResource;
8
use App\Http\Resources\ThreadResource;
9
use App\Interfaces\MessageServiceInterface;
10
use Illuminate\Http\Request;
11
use Illuminate\Support\Arr;
12
13
class MessageController extends Controller
14
{
15
    /**
16
     * @var MessageServiceInterface
17
     */
18
    private MessageServiceInterface $service;
19
20
    /**
21
     * MessageController constructor.
22
     *
23
     * @param  MessageServiceInterface  $service
24
     */
25
    public function __construct(MessageServiceInterface $service)
26
    {
27
        $this->service = $service;
28
    }
29
30
    /**
31
     * Returns pagination of all threads.
32
     *
33
     * @param  Request  $request
34
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
35
     */
36
    public function index(Request $request)
37
    {
38
        $user = $request->user();
39
        $threads = $this->service->threads($user);
40
41
        return ThreadResource::collection($threads);
42
    }
43
44
    /**
45
     * @param  MessageStoreRequest  $request
46
     * @return ThreadResource
47
     */
48
    public function store(MessageStoreRequest $request)
49
    {
50
        $values = $request->validated();
51
        $user = $request->user();
52
        $thread = $this->service->newThread(
53
            $values['subject'],
54
            $user,
55
            $values['content'],
56
            Arr::get($values, 'recipients', [])
57
        );
58
59
        return new ThreadResource($thread);
60
    }
61
62
    /**
63
     * Returns pagination of all threads.
64
     *
65
     * @param  string  $id
66
     * @return ThreadResource
67
     */
68
    public function show(string $id)
69
    {
70
        $thread = $this->service->thread($id);
71
72
        return new ThreadResource($thread);
73
    }
74
75
    /**
76
     * @param  string  $id
77
     * @param  MessageNewRequest  $request
78
     * @return MessageResource
79
     */
80
    public function new(string $id, MessageNewRequest $request)
81
    {
82
        $values = $request->validated();
83
        $user = $request->user();
84
        $thread = $this->service->thread($id);
85
        $message = $this->service->newMessage(
86
            $thread,
87
            $user,
88
            $values['body'],
89
        );
90
91
        return new MessageResource($message);
92
    }
93
}
94