PostController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\User;
  5. use App\Models\Comment;
  6. use App\Models\Moderate;
  7. use App\Models\Post;
  8. use App\Events\ValidatePost;
  9. use App\Events\ValidateComment;
  10. class PostController extends Controller
  11. {
  12. // Переход по страницам
  13. public function all(){ return view('posts.all', ['posts' => Post::with("user")->orderBy("created_at", 'desc')->orderBy("id", 'desc')->get(), 'users' => User::orderBy("name")->get()]); }
  14. public function view_update(Request $request){
  15. return view('posts.update', ['post' => Post::with("user")->where('id', $request->id)->get()[0],
  16. 'admins' => User::where('role', 'admin')->orderBy("name")->get(), 'moderates' => Moderate::allPost($request->id) ]);
  17. }
  18. public function single_post(Request $request){
  19. return view('posts.single_post', ['post' => Post::where('id', $request->id)->with('user')->get()[0],
  20. 'comments' => Comment::where('post_id', $request->id)->with('user')->orderBy("created_at", 'desc')->get(),
  21. 'moderates' => Moderate::allPost($request->id), 'users' => User::orderBy("name")->get() ]);
  22. }
  23. // Взаимодействия со страницами
  24. function insert(Request $request) { // Добавить
  25. event(new ValidatePost($request));
  26. $post = new Post;
  27. $post->user_id = $request->input("user");
  28. $post->text = $request->input("text");
  29. $post->created_at = $request->input("date_publication");
  30. $post->save();
  31. return back();
  32. }
  33. function update(Request $request) { // Изменить
  34. event(new ValidateComment($request));
  35. $post = Post::find($request->input("id"));
  36. $post->text = $request->input("text");
  37. $post->save();
  38. $moderate = new Moderate;
  39. $moderate->user_id = $request->input("user");
  40. $moderate->post_type = "App\Models\Post";
  41. $moderate->post_id = $request->input("id");
  42. $moderate->save();
  43. return back();
  44. }
  45. function delete_by_id($id) { // Удаление
  46. $comments = Comment::where('post_id', $id)->get();
  47. foreach ($comments as $comment) (new CommentController)->delete_by_id($id);
  48. Moderate::where('post_type', "App\Models\Post")->where('post_id', $id)->delete();
  49. Post::where('id', $id)->delete();
  50. return back();
  51. }
  52. function delete(Request $request) { // Удаление
  53. $comments = Comment::where('post_id', $request->id)->get();
  54. foreach ($comments as $comment) (new CommentController)->delete_by_id($comment->id);
  55. Moderate::where('post_type', "App\Models\Post")->where('post_id', $request->id)->delete();
  56. Post::where('id', $request->id)->delete();
  57. return back();
  58. }
  59. }