File manager - Edit - /var/www/html/portalHomolog/app/Http/Controllers/Cultura/Credenciamento/MusicosCredenciamentoController.php
Back
<?php namespace App\Http\Controllers\Cultura\Credenciamento; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\Cultura\Credenciamento\Musico; use App\Http\Requests\Cultura\Credenciamento\MusicoCredenciamentoRequest; use App\Http\Services\Cultura\Credenciamento\MusicoCredenciamentoService; use App\Http\Services\Cultura\Credenciamento\CredenciamentoEtapaAccess; use App\Http\Requests\Cultura\Credenciamento\MusicoEmpresaInlineRequest; use App\Http\Services\Cultura\Credenciamento\MusicoEmpresaService; use App\Http\Requests\Cultura\Credenciamento\MusicoEmpresaInlineUpdateRequest; use App\Http\Services\Cultura\Credenciamento\MusicoEmpresaUpdateService; use Illuminate\Http\RedirectResponse; use Illuminate\Http\JsonResponse; use Illuminate\View\View; class MusicosCredenciamentoController extends Controller { private $permissao = "GERENCIADOR_CREDENCIAMENTO_DE_MUSICOS"; public function index(Request $request, Musico $musico): View|RedirectResponse { $response = $this->checkPermissao($this->permissao, "visualizar"); if ($response instanceof RedirectResponse) { return $response; } if (!CredenciamentoEtapaAccess::canAccessCultura(auth()->user())) { return redirect()->route('admin.cultura.credenciamentoMusicos.index') ->with('error', __('Acesso à etapa de Avaliação Artística (Cultura/TurisAngra) não permitido para sua estrutura.')); } $user = $musico->user; $empresas = \App\Models\Empresa::where('responsavel_id', (string) $user->id) ->where('status','ATIVADO') ->orderBy('nomeFantasia') ->get(); $selecionadas = $musico->empresas()->pluck('empresas.id')->toArray(); return view('admin.cultura.credenciamentoMusicos.credenciamento', compact('musico','user','empresas','selecionadas')); } public function update(MusicoCredenciamentoRequest $request, Musico $musico): RedirectResponse { $response = $this->checkPermissao($this->permissao, "editar"); if ($response instanceof RedirectResponse) { return $response; } if (!CredenciamentoEtapaAccess::canAccessCultura(auth()->user())) { return redirect()->route('admin.cultura.credenciamentoMusicos.index') ->with('error', __('Acesso à etapa de Avaliação Artística não permitido para sua estrutura.')); } $request->validated(); $service = new MusicoCredenciamentoService(); return $service->update($musico, $request->tipo_pessoa, (array) $request->empresa_ids); } public function empresasList(Musico $musico): JsonResponse { $empresas = \App\Models\Empresa::where('responsavel_id', (string) $musico->user_id) ->where('status','ATIVADO') ->orderBy('nomeFantasia') ->get(['id','nomeFantasia','cnpj']); $selecionadas = array_map('strval', $musico->empresas()->pluck('empresas.id')->toArray()); $empresasOut = $empresas->map(function($e){ return ['id' => (string)$e->id, 'nomeFantasia' => $e->nomeFantasia, 'cnpj' => $e->cnpj]; }); return response()->json(['empresas' => $empresasOut, 'selecionadas' => $selecionadas]); } public function empresasVerify(Request $request, Musico $musico): JsonResponse { $request->validate([ 'cnpj' => ['required','string','max:18'], ]); if (!$this->validaCNPJ($request->cnpj)) { return response()->json(['ok' => false, 'error' => 'CNPJ inválido'], 422); } $cnpj = preg_replace('/\D/','', $request->cnpj); $empresa = \App\Models\Empresa::where('cnpj', $cnpj)->first(); if ($empresa) { return response()->json([ 'exists' => true, 'empresa' => [ 'id' => $empresa->id, 'nomeFantasia' => $empresa->nomeFantasia, 'cnpj' => $empresa->cnpj, 'responsavel_id' => $empresa->responsavel_id, ] ]); } return response()->json(['exists' => false]); } public function empresasLink(Request $request, Musico $musico): JsonResponse { $request->validate([ 'empresa_id' => ['required','uuid'] ]); $empresa = \App\Models\Empresa::find($request->empresa_id); if (!$empresa) { return response()->json(['ok' => false, 'error' => 'Empresa não encontrada'], 404); } if ($empresa->responsavel_id !== $musico->user_id) { return response()->json(['ok' => false, 'error' => 'Usuário não é responsável legal desta empresa'], 403); } $musico->empresas()->syncWithoutDetaching([(string) $empresa->id]); return response()->json(['ok' => true]); } public function empresasStore(MusicoEmpresaInlineRequest $request, Musico $musico): JsonResponse { if (!$this->validaCNPJ($request->cnpj)) { return response()->json(['ok' => false, 'error' => 'CNPJ inválido'], 422); } $service = new MusicoEmpresaService(); return $service->storeInline($musico, $request->validated()); } public function empresasGet(Request $request, Musico $musico): JsonResponse { $request->validate(['empresa_id' => ['required','uuid']]); $empresa = \App\Models\Empresa::find($request->empresa_id); if (!$empresa) { return response()->json(['ok' => false, 'error' => 'Empresa não encontrada'], 404); } if ((string) $empresa->responsavel_id !== (string) $musico->user_id) { return response()->json(['ok' => false, 'error' => 'CNPJ já possui responsável legal no credenciamento.'], 422); } $endereco = \App\Models\Endereco::find($empresa->endereco_id); return response()->json(['ok' => true, 'empresa' => [ 'id' => (string) $empresa->id, 'razaoSocial' => $empresa->razaoSocial, 'nomeFantasia' => $empresa->nomeFantasia, 'cnpj' => $empresa->cnpj, 'telefone' => $empresa->telefone, 'email' => $empresa->email, ], 'endereco' => $endereco ? [ 'cep' => $endereco->cep, 'logradouro' => $endereco->logradouro, 'numero' => $endereco->numero, 'complemento' => $endereco->complemento, 'cidade' => $endereco->cidade, 'bairro' => $endereco->bairro, 'uf' => $endereco->uf, ] : null]); } public function empresasUpdate(MusicoEmpresaInlineUpdateRequest $request, Musico $musico): JsonResponse { if (!$this->validaCNPJ($request->cnpj)) { return response()->json(['ok' => false, 'error' => 'CNPJ inválido'], 422); } $service = new MusicoEmpresaUpdateService(); return $service->updateInline($musico, $request->empresa_id, $request->validated()); } public function empresasDetach(Request $request, Musico $musico): JsonResponse { $request->validate(['empresa_id' => ['required','uuid']]); $empresa = \App\Models\Empresa::find($request->empresa_id); if (!$empresa) { return response()->json(['ok' => false, 'error' => 'Empresa não encontrada'], 404); } if ((string) $empresa->responsavel_id !== (string) $musico->user_id) { return response()->json(['ok' => false, 'error' => 'CNPJ já possui responsável legal no credenciamento.'], 422); } $musico->empresas()->detach([(string) $empresa->id]); return response()->json(['ok' => true]); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings