ReviewController.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\Review;
  5. use App\Models\Critic;
  6. use App\Models\Comment;
  7. use App\Models\Game;
  8. class ReviewController extends Controller
  9. {
  10. // Переход по страницам
  11. function all() { return view('reviews/all', ['reviews' => Review::with('game')->withSp()->get()]);}
  12. function all_about_game(Request $request) { return view('games/reviews/all', ['game'=>Game::find($request->review), 'reviews'=>Review::withSp()->where('game_id', $request->review)->get()]); }
  13. function all_about_critic(Request $request) { return view('critics/reviews/all', ['critic'=>Critic::find($request->review), 'reviews'=>Review::where('author_id', $request->review)->get()]); }
  14. function view_insert(Request $request) { return view('reviews/insert', [ 'game'=>Game::find($request->button), 'authors'=> Critic::with('specialization')->get() ]); }
  15. function view_update(Request $request) { return view('reviews/update', ['authors'=> Critic::with('specialization')->get(), 'reviews'=>Review::with('game')->withSp()->find($request->update)]); }
  16. // Взаимодействия со страницами
  17. function insert(Request $request) { // Добавить
  18. $request->validate([
  19. 'text' => 'required', 'stars' => 'required|min:0|not_in:0|max:5',
  20. ], [
  21. 'text.required' => 'Поле "Текст" не заполнено',
  22. 'stars.required' => 'Поле "Звезды" не заполнено',
  23. 'stars.min' => 'Количество звезд должно быть больше нуля',
  24. 'stars.max' => 'Количество звезд должно быть меньше нуля',
  25. 'stars.not_in' => 'Количество звезд должно быть не равно нулю'
  26. ]);
  27. $review = new Review;
  28. $review->author_id = $request->input("author");
  29. $review->game_id = $request->input("id");
  30. $review->text = $request->input("text");
  31. $review->stars = $request->input("stars");
  32. $review->save();
  33. return back()->with('message', 'Рецензия добавлена!');
  34. }
  35. function update(Request $request){ // Изменить
  36. $request->validate([
  37. 'text' => 'required', 'stars' => 'required|min:0|not_in:0|max:5',
  38. ], [
  39. 'text.required' => 'Поле "Текст" не заполнено',
  40. 'stars.required' => 'Поле "Звезды" не заполнено',
  41. 'stars.min' => 'Количество звезд должно быть больше нуля',
  42. 'stars.max' => 'Количество звезд должно быть меньше нуля',
  43. 'stars.not_in' => 'Количество звезд должно быть не равно нулю'
  44. ]);
  45. $review = Review::find($request->input("id"));
  46. $review->author_id = $request->input("author");
  47. $review->text = $request->input("text");
  48. $review->stars = $request->input("stars");
  49. $review->save();
  50. return back()->with('message', 'Рецензия обновлена!');
  51. }
  52. function delete(Request $request){
  53. Comment::where('post_type', "App\Models\Review")->where('post_id', $request->delete)->firstorfail()->delete();
  54. Review::where('id', $request->delete)->firstorfail()->delete();
  55. return back();
  56. }
  57. }