File manager - Edit - /var/www/html/portalHomolog/app/Http/Controllers/Cultura/Credenciamento/ConvocacoesController.php
Back
<?php namespace App\Http\Controllers\Cultura\Credenciamento; use App\Http\Controllers\Controller; use App\Models\Cultura\Credenciamento\CredenciamentoEvento; use App\Models\Cultura\Credenciamento\ConvocacaoCredenciamento; use App\Models\Cultura\Credenciamento\Musico; use App\Mail\Cultura\Credenciamento\ConvocacaoRealizadaCredenciamentoMail; use Illuminate\Http\Request; use Illuminate\Http\RedirectResponse; use Illuminate\View\View; use Illuminate\Support\Facades\Mail; class ConvocacoesController extends Controller { private string $permissao = 'GERENCIADOR_CREDENCIAMENTO_DE_MUSICOS'; public function index(): View|RedirectResponse { $response = $this->checkPermissao($this->permissao, 'visualizar'); if ($response instanceof RedirectResponse) { return $response; } $eventos = CredenciamentoEvento::where('ativo', true) ->orderBy('data', 'desc') ->orderBy('nome') ->get(); return view('admin.cultura.credenciamentoMusicos.convocacoes.index', compact('eventos')); } public function show(string $evento): View|RedirectResponse { $response = $this->checkPermissao($this->permissao, 'editar'); if ($response instanceof RedirectResponse) { return $response; } $evento = CredenciamentoEvento::findOrFail($evento); $convocacoes = $evento->convocacoes()->with('musico.user')->orderBy('ordem')->orderBy('created_at')->get(); $elegiveis = Musico::elegivelConvocacao() ->with('user') ->whereNotIn('musicos.id', $convocacoes->pluck('musico_id')) ->orderBy('grupo_nome') ->get(); return view('admin.cultura.credenciamentoMusicos.convocacoes.show', compact('evento', 'convocacoes', 'elegiveis')); } public function store(Request $request, CredenciamentoEvento $evento): RedirectResponse { $response = $this->checkPermissao($this->permissao, 'editar'); if ($response instanceof RedirectResponse) { return $response; } $request->validate([ 'musico_id' => 'required|exists:musicos,id', 'ordem' => 'nullable|integer|min:0', 'tipo' => 'nullable|string|max:255', 'observacao' => 'nullable|string', ]); $maxOrdem = $evento->convocacoes()->max('ordem') ?? 0; $convocacao = ConvocacaoCredenciamento::create([ 'evento_id' => $evento->id, 'musico_id' => $request->musico_id, 'data_convocacao' => now(), 'tipo' => $request->tipo, 'observacao' => $request->observacao, 'status' => 'PENDENTE', 'ordem' => $request->input('ordem', $maxOrdem + 1), ]); $musico = Musico::find($request->musico_id); if ($musico && $musico->user && $musico->user->email) { $convocacao->load('evento'); Mail::to($musico->user->email)->send(new ConvocacaoRealizadaCredenciamentoMail($musico, $convocacao)); } return redirect()->route('admin.cultura.credenciamentoMusicos.convocacoes.show', $evento) ->with('success', __('Convocações atualizadas.')); } public function updateStatus(Request $request, ConvocacaoCredenciamento $convocacao): RedirectResponse { $response = $this->checkPermissao($this->permissao, 'editar'); if ($response instanceof RedirectResponse) { return $response; } $request->validate(['status' => 'required|in:PENDENTE,CONFIRMADA,CANCELADA']); $convocacao->update(['status' => $request->status]); return redirect()->route('admin.cultura.credenciamentoMusicos.convocacoes.show', $convocacao->evento_id) ->with('success', __('Status da convocação atualizado.')); } public function historico(Musico $musico): View|RedirectResponse { $response = $this->checkPermissao($this->permissao, 'visualizar'); if ($response instanceof RedirectResponse) { return $response; } $convocacoes = $musico->convocacoes()->with('evento')->orderByDesc('created_at')->get(); return view('admin.cultura.credenciamentoMusicos.convocacoes.historico', compact('musico', 'convocacoes') + ['user' => $musico->user, 'perfil' => false]); } public function destroy(ConvocacaoCredenciamento $convocacao): RedirectResponse { $response = $this->checkPermissao($this->permissao, 'excluir'); if ($response instanceof RedirectResponse) { return $response; } $eventoId = $convocacao->evento_id; $convocacao->delete(); return redirect()->route('admin.cultura.credenciamentoMusicos.convocacoes.show', $eventoId) ->with('success', __('Convocação removida.')); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.03 |
proxy
|
phpinfo
|
Settings