Skip to content

Instantly share code, notes, and snippets.

@wilcorrea
Forked from craines/TraitController.php
Created March 30, 2017 16:26
Show Gist options
  • Save wilcorrea/7e68083433cd0060dacd40c3de57c5ce to your computer and use it in GitHub Desktop.
Save wilcorrea/7e68083433cd0060dacd40c3de57c5ce to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Input;
use App\Estabelecimento;
trait TrairConfigController{
public function Index(Request $request){
// limit de quantos intens sera exibido, por padarão so sera exibido 20
$limit = $request->all()['limit'] ?? 5000;
// Ordem com qual os item sera exibido
$order = $request->all()['order'] ?? null;
// Busca dado especifico no banco de dados
$like = $request->all()['like'] ?? null;
// Fintra dados
$where = $this->where ?? [];
// Verificando se $order é diferente de nulo
if($order !== null){
// Tranformando $order em um array
$order = explode(",",$order);
}
// Defininando valores por padrão no order
$order[0] = $order[0] ?? 'id';
$order[1] = $order[1] ?? 'asc';
// Se existir like
if ($like) {
// Tranformando $like em um array
$like = explode(',', $like);
// Colocando o segundo valor em aspas
$like[1] = '%' . $like[1] . '%';
}
// Fazendo a consulta no banco de dados
$result = $this->model::orderBy($order[0],$order[1])
->where(function($query) use ($like){
if($like){
return $query->where($like[0],'like',$like[1]);
}
return $query;
})
->where($where)
// Passando os relacionamento de model, para trazer os dados do relacionamento
->with($this->relationship())
->paginate($limit);
return $result;
}
public function Store(Request $request){
// Passando todos os dados da requisição para data
$data = $request->all();
// Realizando o cadastro no banco de dados
$result = $this->model::create($data);
if(sizeof($request->forma_pagamento) > 0){
$config = $this->model::where('estabelecimento_id', $request->estabelecimento_id)->first();
$config->formPayment()->attach($request->forma_pagamento);
}
if(sizeof($request->bandeiras_cartao) > 0){
$config = $this->model::where('estabelecimento_id', $request->estabelecimento_id)->first();
$config->flagsAccept()->attach($request->bandeiras_cartao);
}
if(sizeof($request->bairros_cidade) > 0){
$config = $this->model::where('estabelecimento_id', $request->estabelecimento_id)->first();
$config->districtStreet()->attach($request->bairros_cidade);
}
return response()->json($result);
// return redirect()->route('painel_views.estabelecimento');
}
public function Show($id){
// Verificando se o id existe no banco de dados, caso exista retornara o Produto onde esta o id
$result = $this->model->with($this->relationship())->findOrFail($id);
return response()->json($result);
}
public function Destroy($id){
// Se existir o id no banco de dados o produto onde esta o id sera apagado
$result = $this->model::findOrFail($id)->delete();
return response()->json($result);
}
public function Update(Request $request , $id){
// Passando todos os dados da requisição para data
$data = $request->all();
// Atualizando os dados do banco de dados
$result = $this->model::findOrFail($id)->update($data);
if(sizeof($request->forma_pagamento) > 0){
$config = $this->model::findOrFail($id);
$config->formPayment()->detach();
$config->formPayment()->attach($request->forma_pagamento);
}
if(sizeof($request->bandeiras_cartao) > 0){
$config = $this->model::findOrFail($id);
$config->flagsAccept()->detach();
$config->flagsAccept()->attach($request->bandeiras_cartao);
}
if(sizeof($request->bairros_cidade) > 0){
$config = $this->model::findOrFail($id);
$config->districtStreet()->detach();
$config->districtStreet()->attach($request->bairros_cidade);
}
return response()->json($data);
// return redirect()->route('painel_views.estabelecimento');
}
public function relationship(){
if(isset($this->relationship)){
return $this->relationship;
}
return [];
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment