Created
August 21, 2020 13:03
-
-
Save imacruz/4e3adcdd53899c1ff02e6e888b306c8f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers\API; | |
use App\Http\Controllers\Controller; | |
use Illuminate\Http\Request; | |
use Validator; | |
class BaseController extends Controller | |
{ | |
protected $model; | |
protected $resource; | |
protected $perPage = 5; | |
/** | |
* Renomeia atributos para mensagem de validação | |
*/ | |
protected $niceNames = []; | |
/** | |
* Regras de validação | |
*/ | |
protected $rules = []; | |
/** | |
* Regras de validação | |
*/ | |
protected $rulesUpdate = []; | |
/** | |
* Display a listing of the resource. | |
* | |
* @return \Illuminate\Http\Response | |
*/ | |
public function index(Request $request) | |
{ | |
$data = $this->model::paginate($this->perPage); | |
return new $this->resource($data); | |
} | |
/** | |
* Store a newly created resource in storage. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @return \Illuminate\Http\Response | |
*/ | |
public function store(Request $request) | |
{ | |
$validator = Validator::make($request->all(), $this->rules); | |
$validator->setAttributeNames($this->niceNames); | |
if($validator->fails()) | |
return response()->json([ | |
"errors" => $validator->errors() | |
] ,400); | |
$data = $this->model::create($request->all()); | |
return new $this->resource($data); | |
} | |
/** | |
* Display the specified resource. | |
* | |
* @param int $id | |
* @return \Illuminate\Http\Response | |
*/ | |
public function show($id) | |
{ | |
$data = $this->model::find($id); | |
if(empty($data)) | |
return response()->json([ | |
"errors" => "Não encontrado" | |
],404); | |
return new $this->resource($data); | |
} | |
/** | |
* Update the specified resource in storage. | |
* | |
* @param \Illuminate\Http\Request $request | |
* @param int $id | |
* @return \Illuminate\Http\Response | |
*/ | |
public function update(Request $request, $id) | |
{ | |
$validator = Validator::make($request->all(), $this->rulesUpdate); | |
$validator->setAttributeNames($this->niceNames); | |
if($validator->fails()) | |
return response()->json([ | |
"errors" => $validator->errors() | |
] ,400); | |
$data = $this->model::find($id); | |
if(empty($data)) | |
return response()->json([ | |
"errors" => "Não encontrado" | |
],404); | |
$data->update($request->all()); | |
return new $this->resource($data); | |
} | |
/** | |
* Remove the specified resource from storage. | |
* | |
* @param int $id | |
* @return \Illuminate\Http\Response | |
*/ | |
public function destroy($id) | |
{ | |
$data = $this->model::find($id); | |
if(empty($data)) | |
return response()->json([ | |
"errors" => "Nenhum registro encontrado" | |
],404); | |
$data->delete(); | |
return response()->json([ | |
"message" => "Removido com sucesso" | |
],200); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment