Skip to content

Instantly share code, notes, and snippets.

@imacruz
Created August 21, 2020 13:03
Show Gist options
  • Save imacruz/4e3adcdd53899c1ff02e6e888b306c8f to your computer and use it in GitHub Desktop.
Save imacruz/4e3adcdd53899c1ff02e6e888b306c8f to your computer and use it in GitHub Desktop.
<?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