Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
webbingbrasil/exams-module / Http / Controllers / Admin / QuestionsController.php
Size: Mime:
<?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
        ]);
    }

}