Repository URL to install this package:
|
Version:
0.2.1 ▾
|
<?php namespace Modules\Exams\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Modules\Core\Http\Controllers\AdminController;
use Modules\Core\Services\Asset;
use Modules\Exams\Entities\Question;
use Modules\Exams\Http\Requests\CadastroQuestionRequest;
use Modules\Exams\Services\ExamService;
use Modules\Exams\Services\QuestionService;
class QuestionsController extends AdminController
{
/**
* @var QuestionService
*/
private $service;
/**
* @var ExamService
*/
private $examService;
public function __construct(QuestionService $service, ExamService $examService){
parent::__construct();
$this->service = $service;
$this->examService = $examService;
Asset::add(\Config::get('core.assets.datatable'));
}
/**
* Display a listing of the resource.
*
* @param int $exam
* @return \Illuminate\Http\Response
*/
public function index($exam)
{
//$this->authorize($this);
$data = [
'exam' => $this->examService->findById($exam)
];
return $this->service->render('exams::admin.question.list', $data);
}
/**
* Show the form for creating a new resource.
*
* @param int $exam
* @return \Illuminate\Http\Response
*/
public function create($exam)
{
//$this->authorize($this);
$data = [
'exam' => $this->examService->findById($exam)
];
return view('exams::admin.question.create', $data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(CadastroQuestionRequest $request, $exam)
{
$input = $request->all();
/** @var Question $result */
$result = $this->service->create($input, $exam);
if ($result instanceof Question) {
$msg = trans('exams::questions.create.alerts.success', ['question' => $result->title]);
$response = $this->getResponse($msg, 200, ['questions.index', $exam]);
} else {
$msg = trans('exams::questions.create.alerts.error', ['question' => $input['title']]);
$response = $this->getResponse($msg, 400);
}
return $response;
}
/**
* Show the form for editing the specified resource.
*
* @param int $exam
* @param int $question
* @return \Illuminate\Http\Response
*/
public function edit($exam, $question)
{
//$this->authorize($this);
$data = array(
'data' => $this->service->editId($question),
'exam' => $this->examService->findById($exam)
);
return view('exams::admin.question.edit', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(CadastroQuestionRequest $request, $exam, $question)
{
//$data = $this->service->editId($id);
$input = $request->all();
/*$rules = [];
if ($input['cnpj'] != $laboratorio->cnpj) {
$rules['cnpj'] = 'required|cnpj|max:50|unique:laboratorios';
}
if (!empty($rules)) {
$validation = Validator::make($request->all(), $rules);
if ($validation->fails()) {
return response()->json($validation->messages(), 400);
}
}*/
/** @var Question $result */
$result = $this->service->update($question, $input);
if ($result instanceof Question) {
$msg = trans('exams::questions.edit.alerts.success', ['question' => $result->title]);
$response = $this->getResponse($msg, 200, ['questions.index', $exam]);
} else {
$msg = trans('exams::questions.edit.alerts.error', ['question' => $input['title']]);
$response = $this->getResponse($msg, 400);
}
return $response;
}
/**
* Remove the specified resource from storage.
*
* @param int $question
* @param int $exam
* @return \Illuminate\Http\Response
*/
public function destroy($exam, $question)
{
//$this->authorize($this);
$status = $this->service->delete($question);
return response()->json([
'success' => $status
]);
}
}