|
2 | 2 |
|
3 | 3 | namespace App\Http\Controllers\Api; |
4 | 4 |
|
| 5 | +use App\Events\CommentWasAdded; |
5 | 6 | use App\Http\Controllers\Controller; |
| 7 | +use App\Http\Requests\Api\CreateReplyRequest; |
| 8 | +use App\Http\Requests\Api\UpdateReplyRequest; |
6 | 9 | use App\Http\Resources\ReplyResource; |
7 | 10 | use App\Models\Discussion; |
8 | 11 | use App\Models\Reaction; |
|
11 | 14 | use Illuminate\Http\JsonResponse; |
12 | 15 | use Illuminate\Http\Request; |
13 | 16 | use Illuminate\Http\Resources\Json\AnonymousResourceCollection; |
14 | | -use Illuminate\Support\Facades\Auth; |
15 | 17 |
|
16 | 18 | class ReplyController extends Controller |
17 | 19 | { |
18 | 20 | public function all(int $target): AnonymousResourceCollection |
19 | 21 | { |
20 | 22 | /** @var Discussion $discussion */ |
21 | 23 | $discussion = Discussion::findOrFail($target); |
| 24 | + $replies = collect(); |
22 | 25 |
|
23 | | - return ReplyResource::collection($discussion->replies); |
| 26 | + foreach ($discussion->replies as $reply) { |
| 27 | + if ($reply->allChildReplies->isNotEmpty()) { |
| 28 | + foreach ($reply->allChildReplies as $childReply) { |
| 29 | + $replies->add($childReply); |
| 30 | + } |
| 31 | + } |
| 32 | + |
| 33 | + $replies->add($reply); |
| 34 | + } |
| 35 | + |
| 36 | + return ReplyResource::collection($replies); |
24 | 37 | } |
25 | 38 |
|
26 | | - public function store() |
| 39 | + public function store(CreateReplyRequest $request): ReplyResource |
27 | 40 | { |
| 41 | + // dd($request->all()); |
| 42 | + // if ($request->parent) {} |
| 43 | + $reply = new Reply(['body' => $request->body]); |
| 44 | + $author = User::find($request->user_id); |
| 45 | + |
| 46 | + $target = Discussion::find($request->target); |
| 47 | + $reply->authoredBy($author); |
| 48 | + $reply->to($target); |
| 49 | + $reply->save(); |
28 | 50 |
|
| 51 | + // On envoie un event pour une nouvelle réponse à tous les abonnés de la discussion |
| 52 | + event(new CommentWasAdded($reply, $target)); |
| 53 | + |
| 54 | + return new ReplyResource($reply); |
29 | 55 | } |
30 | 56 |
|
31 | | - public function update() |
| 57 | + public function update(UpdateReplyRequest $request, int $id): ReplyResource |
32 | 58 | { |
| 59 | + $reply = Reply::find($id); |
| 60 | + $reply->update(['body' => $request->body]); |
33 | 61 |
|
| 62 | + return new ReplyResource($reply); |
34 | 63 | } |
35 | 64 |
|
36 | 65 | public function like(Request $request, int $id): ReplyResource |
|
0 commit comments