CommentController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Controllers\Account;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use App\Http\Traits\CommonTrait;
  6. use App\Services\UserService;
  7. use App\Services\CommentService;
  8. use App\Models\DTO\SearchData;
  9. use App\Models\DTO\ResponseData;
  10. use Exception;
  11. class CommentController extends Controller
  12. {
  13. use CommonTrait;
  14. private UserService $userService;
  15. private CommentService $commentService;
  16. public function __construct(
  17. UserService $userService, CommentService $commentService
  18. ) {
  19. $this->middleware(['front', 'auth']);
  20. $this->userService = $userService;
  21. $this->commentService = $commentService;
  22. }
  23. /**
  24. * 작성 댓글
  25. * @method GET|POST
  26. * @see /account/comment
  27. */
  28. public function index(Request $request)
  29. {
  30. $params = SearchData::fromRequest($request);
  31. $params->path = route('account.comment');
  32. // 내가 작성한 게시글
  33. $comments = $this->commentService->userList(UID, $params);
  34. return view(layout('account.comment'), [
  35. 'comments' => $comments,
  36. 'params' => $params,
  37. 'menuID' => 'COMMENT'
  38. ]);
  39. }
  40. /**
  41. * 댓글 삭제
  42. * @method DELETE
  43. * @see /account/comment/delete
  44. */
  45. public function delete(Request $request, ResponseData $response): ResponseData
  46. {
  47. try {
  48. $posts = $request->validate([
  49. 'keys.*' => 'required|numeric|exists:tb_comment,id',
  50. ]);
  51. if($posts['keys']) {
  52. $user = $request->user();
  53. foreach($posts['keys'] as $key) {
  54. $comment = $this->commentService->commentModel->findOrNew($key);
  55. if(!$comment->exists) {
  56. continue;
  57. }
  58. if(!$comment->remove($comment, $user)) {
  59. throw new Exception($key . '번 댓글은 삭제할 수 없습니다.');
  60. }
  61. }
  62. }
  63. }catch(Exception $e) {
  64. $response = $response::fromException($e);
  65. }
  66. return $response;
  67. }
  68. }