MessageController.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Message;
  4. use App\Models\MessageComment;
  5. use App\Http\Requests\StoremessageRequest;
  6. use App\Http\Requests\StoreMessageCommentRequest;
  7. use App\Http\Requests\UpdatemessageRequest;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\DB;
  10. class MessageController extends Controller
  11. {
  12. /**
  13. * Display a listing of the resource.
  14. *
  15. * @return \Illuminate\Http\Response
  16. */
  17. public function index()
  18. {
  19. //
  20. $message = Message::all();
  21. return $message;
  22. }
  23. /**
  24. * Show the form for creating a new resource.
  25. *
  26. * @return \Illuminate\Http\Response
  27. */
  28. public function create()
  29. {
  30. //
  31. }
  32. /**
  33. * Store a newly created resource in storage.
  34. *
  35. * @param \App\Http\Requests\StoremessageRequest $request
  36. * @return \Illuminate\Http\Response
  37. */
  38. public function store(StoremessageRequest $request)
  39. {
  40. //
  41. $preview = "";
  42. if ($request->preview == "preview") {
  43. $preview = str_replace("\n", "", $request->content);
  44. $preview = str_replace(" ", "", $preview);
  45. $preview = strip_tags($preview);
  46. $preview = mb_substr($preview, 0, 55) . "...";
  47. }
  48. $imageName = time() . '.' . $request->thumbnail->extension();
  49. // Public Folder
  50. $request->thumbnail->move(public_path('images'), $imageName);
  51. $message_comment = Message::create([
  52. 'title' => $request->title,
  53. 'content' => $request->content,
  54. 'author_id' => $request->User()->id,
  55. 'preview' => $preview,
  56. 'tag' => $request->tag,
  57. 'thumbnail' => $imageName,
  58. 'created_at' => now(),
  59. ]);
  60. return $message_comment;
  61. }
  62. /**
  63. * Store a newly created resource in storage.
  64. *
  65. * @param \App\Http\Requests\StoreMessageCommentRequest $request
  66. * @return \Illuminate\Http\Response
  67. */
  68. public function storeComment(StoreMessageCommentRequest $request)
  69. {
  70. //
  71. $message_comment = MessageComment::Create([
  72. 'content' => $request->content,
  73. 'author_id' => $request->User()->id,
  74. 'message_id' => $request->message_id,
  75. ]);
  76. return $message_comment;
  77. }
  78. /**
  79. * Display the specified resource.
  80. *
  81. * @param \App\Models\message $message
  82. * @return \Illuminate\Http\Response
  83. */
  84. public function show(Request $request, message $message)
  85. {
  86. //
  87. $message = Message::where('id', '=', $request->id)->get()[0];
  88. $comment = MessageComment::where('message_id', '=', $request->id)->get();
  89. $response = [
  90. 'blog' => $message,
  91. 'comments' => $comment,
  92. ];
  93. return response($response, 201);
  94. }
  95. /**
  96. * Show the form for editing the specified resource.
  97. *
  98. * @param \App\Models\message $message
  99. * @return \Illuminate\Http\Response
  100. */
  101. public function edit(message $message)
  102. {
  103. //
  104. }
  105. /**
  106. * Update the specified resource in storage.
  107. *
  108. * @param \App\Http\Requests\UpdatemessageRequest $request
  109. * @param \App\Models\message $message
  110. * @return \Illuminate\Http\Response
  111. */
  112. public function update(UpdatemessageRequest $request, message $message)
  113. {
  114. //
  115. $preview = "";
  116. if ($request->preview == "preview") {
  117. $preview = str_replace("\n", "", $request->content);
  118. $preview = str_replace(" ", "", $preview);
  119. $preview = strip_tags($preview);
  120. $preview = mb_substr($preview, 0, 55) . "...";
  121. }
  122. if (is_string($request->thumbnail)) {
  123. $imageName = $request->thumbnail;
  124. } else {
  125. $imageName = time() . '.' . $request->thumbnail->extension();
  126. $request->thumbnail->move(public_path('images'), $imageName);
  127. }
  128. $message = Message::where('id', $request->id)
  129. ->where('author_id', $request->User()->id)
  130. ->update([
  131. 'title' => $request->title,
  132. 'content' => $request->content,
  133. 'preview' => $preview,
  134. 'tag' => $request->tag,
  135. 'thumbnail' => $imageName,
  136. 'updated_at' => now(),
  137. ]);
  138. if ($message == 0) {
  139. abort(403, '你沒有編輯此貼文的權限!');
  140. }
  141. return $message;
  142. }
  143. /**
  144. * Remove the specified resource from storage.
  145. *
  146. * @param \App\Models\message $message
  147. * @return \Illuminate\Http\Response
  148. */
  149. public function destroy(Request $request, Message $message)
  150. {
  151. //
  152. $message = Message::where('id', $request->id)->delete();
  153. return $message;
  154. }
  155. public function count()
  156. {
  157. $count = DB::select('SELECT [messages].[id],Count([message_comments].[id]) AS count FROM [laravel].[dbo].[messages]
  158. LEFT JOIN [message_comments] ON [message_comments].[message_id] = [messages].[id]
  159. GROUP BY [messages].[id]');
  160. return $count;
  161. }
  162. public function recent()
  163. {
  164. //
  165. $message = Message::all()->sortByDesc('created_at')->take(4);
  166. $categories = [
  167. ['category' => '台灣小吃', 'icon' => 'SlackIcon'],
  168. ['category' => '美食', 'icon' => 'CoffeeIcon'],
  169. ['category' => '熱炒店', 'icon' => 'SunIcon'],
  170. ['category' => '吃到飽', 'icon' => 'ThumbsUpIcon'],
  171. ];
  172. $response = [
  173. 'recentPosts' => $message,
  174. 'categories' => $categories,
  175. ];
  176. return $response;
  177. }
  178. }