-
-
Save evertramos/860bba5f8a4c672c829d662af3fc3b13 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; | |
use App\Referencia; | |
use App\Http\Requests\ReferenciaRequest; | |
use Illuminate\Http\Request; | |
use App\Http\Controllers\Controller; | |
use App\Repositories\EloquentReferenciaRepository; | |
use App\Repositories\EloquentTagsRepository; | |
use Illuminate\Support\Facades\URL; | |
class ReferenciaController extends Controller | |
{ | |
protected $referencias; | |
protected $tags; | |
public function __construct(EloquentReferenciaRepository $referencias, EloquentTagsRepository $tags) | |
{ | |
$this->middleware('auth'); | |
$this->referencias = $referencias; | |
$this->tags = $tags; | |
} | |
/** | |
* | |
* @param \App\Request $request | |
* @return type | |
*/ | |
public function index(Request $request) | |
{ | |
return view('referencia.index', [ | |
'action' => 'new', | |
'panel_title' => 'Nova Referência', | |
'referencias' => $this->referencias->userReferencias($request->user()), | |
'sugest_tags' => $this->tags->usedTags($request->user()), | |
]); | |
} | |
public function store(ReferenciaRequest $request) | |
{ | |
$referencia = $this->referencias->save($request); | |
$this->tags->manageTags($referencia, $request->tags); | |
return redirect(URL::previous()); | |
} | |
public function destroy(Request $request, Referencia $referencia) | |
{ | |
// Verifica a propriedade da referência | |
$this->authorize('referenciaOwner', $referencia); | |
// Limpa tabela de união entre as tabelas 'tags' e 'referencia' | |
$referencia->tags()->detach(); | |
$result = $referencia->delete(); | |
// Verifica se $result é 'true' e segue | |
if ( $result ) { | |
$request->session()->push('info-messages', 'Referência deletada com sucesso!'); | |
} | |
if ( $request->session()->has('return') ) { | |
return redirect($request->session()->pull('return')); | |
} else { | |
return redirect(URL::previous()); | |
} | |
} | |
public function edit(Referencia $referencia, Request $request) | |
{ | |
if ( $request->session()->has('return') ) { | |
$request->session()->reflash(); | |
$request->session()->put('last_url', URL::previous()); | |
} else { | |
$request->session()->flash('last_url', URL::previous()); | |
} | |
$this->authorize('referenciaOwner', $referencia); | |
return view('referencia.index', [ | |
'action' => 'edit', | |
'panel_title' => 'Editar Referência', | |
'referencia' => $referencia, | |
'sugest_tags' => $this->tags->usedTags($request->user()), | |
'tags' => $this->tags->allTags($referencia), | |
]); | |
} | |
public function update(ReferenciaRequest $request, Referencia $referencia) | |
{ | |
// Verifica a propriedade da referência | |
$this->authorize('referenciaOwner', $referencia); | |
$this->tags->manageTags($referencia, $request->tags); | |
$referencia->update($request->all()); | |
$request->session()->keep('return'); | |
// Retorna para a página de onde iniciou a edição | |
return redirect($request->session()->pull('last_url')); | |
} | |
public function show(Referencia $referencia, Request $request) | |
{ | |
if ( ! $request->session()->has('return') ) { | |
$request->session()->flash('return', URL::previous()); | |
} else { | |
$request->session()->keep('return'); | |
} | |
$this->authorize('referenciaPublic', $referencia); | |
return view('referencia.index', [ | |
'action' => 'show', | |
'readonly' => 'readonly', | |
'referencia' => $referencia, | |
'tags' => $this->tags->allTags($referencia), | |
'return' => $request->session()->get('return') | |
]); | |
} | |
public function listAll(Request $request) | |
{ | |
$result = $this->referencias->allReferencias($request->user()); | |
return view('referencia.index', [ | |
'action' => 'list', | |
'readonly' => 'readonly', | |
'panel_title' => 'Todas as Referências - Públicas', | |
'referencias' => $result, | |
'count_result' => $result->total(), | |
]); | |
} | |
public function listUser(Request $request) | |
{ | |
$result = $this->referencias->userReferencias($request->user()); | |
return view('referencia.index', [ | |
'action' => 'list', | |
'readonly' => '', | |
'panel_title' => 'Todas as Referências - Pessoais', | |
'referencias' => $result, | |
'count_result' => $result->total(), | |
]); | |
} | |
public function search(Request $request) | |
{ | |
$result = $this->referencias->search($request); | |
return view('referencia.index', [ | |
'action' => 'search', | |
'pesquisa' => $request->input('pesquisa'), | |
'referencias' => $result, | |
'count_result' => $result->total(), | |
]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment