Issues (16)

src/Http/Controllers/MessageController.php (1 issue)

Severity
1
<?php
2
3
namespace FaithGen\Messages\Http\Controllers;
4
5
use FaithGen\Messages\Http\Requests\CommentRequest;
6
use FaithGen\Messages\Http\Requests\CreateRequest;
7
use FaithGen\Messages\Http\Requests\GetRequest;
8
use FaithGen\Messages\Http\Requests\UpdateRequest;
9
use FaithGen\Messages\Http\Resources\Message as MessageResource;
10
use FaithGen\Messages\MessageService;
11
use FaithGen\Messages\Models\Message;
12
use FaithGen\SDK\Helpers\CommentHelper;
13
use FaithGen\SDK\Http\Requests\IndexRequest;
14
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
15
use Illuminate\Foundation\Bus\DispatchesJobs;
16
use Illuminate\Foundation\Validation\ValidatesRequests;
17
use Illuminate\Http\Request;
18
use Illuminate\Routing\Controller;
19
use InnoFlash\LaraStart\Helper;
20
use InnoFlash\LaraStart\Traits\APIResponses;
21
22
class MessageController extends Controller
23
{
24
    use AuthorizesRequests, ValidatesRequests, APIResponses, DispatchesJobs;
25
    /**
26
     * @var MessageService
27
     */
28
    private $messageService;
29
30
    public function __construct(MessageService $messageService)
31
    {
32
        $this->messageService = $messageService;
33
    }
34
35
    /**
36
     * Fetches the ministry`s messages.
37
     *
38
     * @param IndexRequest $request
39
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
40
     */
41
    public function index(IndexRequest $request)
42
    {
43
        $messages = auth()->user()->messages()
44
            ->where(fn ($message) => $message->search(['title', 'message'], $request->filter_text))
45
            ->latest()
46
            ->paginate(Helper::getLimit($request));
47
48
        MessageResource::wrap('messages');
49
50
        return MessageResource::collection($messages);
51
    }
52
53
    /**
54
     * Creates a message.
55
     *
56
     * @param CreateRequest $request
57
     * @return \Illuminate\Http\JsonResponse
58
     */
59
    public function create(CreateRequest $request)
60
    {
61
        return $this->messageService->createFromParent($request->validated(), 'Message created successfully!');
62
    }
63
64
    /**
65
     * Updates a message.
66
     *
67
     * @param UpdateRequest $request
68
     * @return \Illuminate\Http\JsonResponse|mixed
69
     */
70
    public function update(UpdateRequest $request)
71
    {
72
        return $this->messageService->update($request->validated());
73
    }
74
75
    /**
76
     * Deletes a message.
77
     *
78
     * @param GetRequest $request
79
     * @return mixed
80
     */
81
    public function destroy(GetRequest $request)
0 ignored issues
show
The parameter $request is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

81
    public function destroy(/** @scrutinizer ignore-unused */ GetRequest $request)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
82
    {
83
        return $this->messageService->destroy('Message deleted successfully!');
84
    }
85
86
    /**
87
     * Comments a message.
88
     *
89
     * @param CommentRequest $request
90
     * @return \Illuminate\Http\JsonResponse
91
     */
92
    public function comment(CommentRequest $request)
93
    {
94
        return CommentHelper::createComment($this->messageService->getMessage(), $request);
95
    }
96
97
    /**
98
     * Fetches a message`s comments.
99
     *
100
     * @param Request $request
101
     * @param Message $message
102
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
103
     * @throws \Illuminate\Auth\Access\AuthorizationException
104
     */
105
    public function comments(Request $request, Message $message)
106
    {
107
        $this->authorize('view', $message);
108
109
        return CommentHelper::getComments($message, $request);
110
    }
111
}
112