GameController.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\Game;
  5. use App\Models\Game_genre;
  6. use App\Models\Genre;
  7. use App\Models\Comment;
  8. use App\Models\Review;
  9. class GameController extends Controller
  10. {
  11. // Переход по страницам
  12. function all() { return view('games/all', ['games' => Game::with('genre')->orderBy('created_at', 'desc')->get()]); }
  13. function view_insert() { return view('games/insert', ['genres' => Genre::all()]); }
  14. function view_update(Request $request) {
  15. $games = Game::with('genre')->find($request->update);
  16. $genres = Genre::all();
  17. foreach ($genres as $genre) {
  18. foreach ($games->genre as $g) {
  19. if ($genre->id == $g->id) $genre->checed = "true";
  20. }
  21. }
  22. return view('games/update', ['game' => $games, 'genres' => $genres]);
  23. }
  24. function insert(Request $request) { // Добавить
  25. $request->validate([ 'title' => 'required', 'release_date' => 'required' ], [ 'title.required' => 'Поле "название" не заполнено', 'release_date.required' => 'Поле "Дата релиза" не заполнено', ]);
  26. $game = new Game;
  27. $game->title = $request->input("title");
  28. $game->description = $request->input("description");
  29. $game->release_date = $request->input("release_date");
  30. $game->save();
  31. $genres = Genre::all();
  32. for ($i = 0; $i < count($genres); $i++)
  33. if ($request->input($genres[$i]->id) == 'on') {
  34. $game_g = new Game_genre;
  35. $game_g->game_id = $game->id;
  36. $game_g->genre_id = $genres[$i]->id;
  37. $game_g->save();
  38. }
  39. return back()->with('message', 'Игра добавлена!');
  40. }
  41. function update(Request $request){ // Изменить
  42. $request->validate([
  43. 'title' => 'required',
  44. 'release_date' => 'required',
  45. ], [
  46. 'title.required' => 'Поле "название" не заполнено',
  47. 'release_date.required' => 'Поле "Дата релиза" не заполнено',
  48. ]);
  49. $game = Game::with('genre')->find($request->input("id"));
  50. $genres = Genre::all();
  51. for ($i = 0; $i < count($genres); $i++)
  52. if ($request->input($genres[$i]->id) == 'on') {
  53. if (count(Game_genre::where('game_id', $game->id)->where('genre_id', $genres[$i]->id)->get()) == 0){
  54. $game_g = new Game_genre;
  55. $game_g->game_id = $game->id;
  56. $game_g->genre_id = $genres[$i]->id;
  57. $game_g->save();
  58. }
  59. }
  60. for ($i = 0; $i < count($game->genre); $i++)
  61. if ($request->input($game->genre[$i]->id) != 'on')
  62. Game_genre::where('game_id', $game->id)->where('genre_id', $game->genre[$i]->id)->delete();
  63. $game = Game::find($request->input("id"));
  64. $game->title = $request->input("title");
  65. $game->description = $request->input("description");
  66. $game->release_date = $request->input("release_date");
  67. $game->save();
  68. return back()->with('message', 'Игра обновлена!');
  69. }
  70. function delete(Request $request){
  71. $reviews = Review::where('game_id', $request->delete)->get();
  72. foreach ($reviews as $review) Comment::where('post_type', 'use App\Models\Game;')->where('post_id', $review->id)->delete();
  73. Review::where('game_id', $request->delete)->delete();
  74. Game_genre::where('game_id', $request->delete)->delete();
  75. Game::where('id', $request->delete)->delete();
  76. return back();
  77. }
  78. }