Passed
Push — master ( 17b8a2...59afb5 )
by Burak
06:17
created

MessageController::show()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 5
ccs 3
cts 3
cp 1
crap 1
rs 10
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 4
    public function __construct(MessageServiceInterface $service)
26
    {
27 4
        $this->service = $service;
28 4
    }
29
30
    /**
31
     * Returns pagination of all threads.
32
     *
33
     * @param Request $request
34
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
35
     */
36 1
    public function index(Request $request)
37
    {
38 1
        $user = $request->user();
39 1
        $threads = $this->service->threads($user);
40
41 1
        return ThreadResource::collection($threads);
42
    }
43
44
    /**
45
     * @param MessageStoreRequest $request
46
     * @return ThreadResource
47
     */
48 1
    public function store(MessageStoreRequest $request)
49
    {
50 1
        $values = $request->validated();
51 1
        $user = $request->user();
52 1
        $threads = $this->service->newThread(
53 1
            $values['subject'],
54
            $user,
55 1
            $values['content'],
56 1
            Arr::get($values, 'recipients', [])
57
        );
58
59 1
        return new ThreadResource($threads);
60
    }
61
62
    /**
63
     * Returns pagination of all threads.
64
     *
65
     * @param string $id
66
     * @return ThreadResource
67
     */
68 2
    public function show(string $id)
69
    {
70 2
        $thread = $this->service->thread($id);
71
72 2
        return new ThreadResource($thread);
73
    }
74
75
    /**
76
     * @param string $id
77
     * @param MessageNewRequest $request
78
     * @return MessageResource
79
     */
80 1
    public function new(string $id, MessageNewRequest $request)
81
    {
82 1
        $values = $request->validated();
83 1
        $user = $request->user();
84 1
        $thread = $this->service->thread($id);
85 1
        $message = $this->service->newMessage(
86 1
            $thread,
87
            $user,
88 1
            $values['body'],
89
        );
90
91 1
        return new MessageResource($message);
92
    }
93
}
94