<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Critic;
use App\Models\Review;
use App\Models\Specialization;
use App\Models\Comment;

class CriticController extends Controller
{
  // Переход по страницам
  public function all(){ return view('critics.all', ['critics' => Critic::allWithOrder()]); }
  public function view_append(){ return view('critics.insert', ['specializations'=>Specialization::all()]); }
  function view_update(Request $request) { return view('critics/update', ['critic' => Critic::with('specialization')->find($request->update), 'specializations'=>Specialization::all()]); }

  // Взаимодействия со страницами
  function insert(Request $request) { // Добавить
    $request->validate([ 'name' => 'required' ], [ 'name.required' => 'Поле "Имя" не заполнено' ]);
    $critic = new Critic;
    $critic->name = $request->input("name");
    $critic->specialization_id = $request->input("specialization");
    $critic->save();
    return back()->with('message', 'Критик добавлен!');
  }

  function update(Request $request) { // Изменить
    $request->validate([ 'name' => 'required' ], [ 'name.required' => 'Поле "Имя" не заполнено' ]);
    $critic = Critic::find($request->input("id"));
    $critic->name = $request->input("name");
    $critic->specialization_id = $request->input("specialization");
    $critic->save();
    return back()->with('message', 'Критик обновлен!');
  }

  function delete(Request $request) { // Удаление
    $reviews = Review::where('author_id', $request->delete)->get();
    foreach ($reviews as $review) Comment::where('post_type', 'use App\Models\Review;')->where('post_id', $review->id)->delete();
    Review::where('author_id', $request->delete)->delete();
    Critic::where('id', $request->delete)->delete();
    return back();
  }
}