diff --git a/app/Http/Controllers/ChamadoController.php b/app/Http/Controllers/ChamadoController.php index 37dd29d..d0d593e 100644 --- a/app/Http/Controllers/ChamadoController.php +++ b/app/Http/Controllers/ChamadoController.php @@ -484,20 +484,32 @@ public function storePessoa(Request $request, Chamado $chamado) $request->validate( [ - 'codpes' => 'required|integer', + 'codpes' => ['required', 'regex:/^((codpes|id)-)?\d+$/'], 'papel' => 'required|in:' . implode(',', Chamado::pessoaPapeis()), ] ); $papel = $request->papel; - $codpes = $request->codpes; + $codpesField = (string) $request->codpes; # para cadastrar autor e atendente, vamos negar se usuário não for atendente if ('Autor' == $papel || 'Atendente' == $papel) { $this->authorize('atendente'); } - $user = User::obterOuCriarPorCodpes($codpes); + if (is_numeric($codpesField)) { + $user = User::obterOuCriarPorCodpes((int) $codpesField); + } else { + [$searchField, $valueField] = explode('-', $codpesField, 2); + + $user = $searchField === 'codpes' + ? User::obterOuCriarPorCodpes((int) $valueField) + : User::find((int) $valueField); + } + + if (empty($user)) { + return back()->withErrors(['codpes' => 'Usuário não encontrado.'])->withInput(); + } # O usuário já existe nesse papel? if ($chamado->users()->where('users.id', $user->id)->wherePivot('papel', $papel)->first()) { diff --git a/composer.lock b/composer.lock index 7b5c40b..f49c421 100644 --- a/composer.lock +++ b/composer.lock @@ -7856,16 +7856,16 @@ }, { "name": "uspdev/laravel-usp-theme", - "version": "2.8.27", + "version": "2.8.28", "source": { "type": "git", "url": "https://github.com/uspdev/laravel-usp-theme.git", - "reference": "75f09e02929d5588bd26f9ccad8f7b5300cb7162" + "reference": "466d42a78b0ce30ccb1aba25f0a1762fc555adf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/uspdev/laravel-usp-theme/zipball/75f09e02929d5588bd26f9ccad8f7b5300cb7162", - "reference": "75f09e02929d5588bd26f9ccad8f7b5300cb7162", + "url": "https://api.github.com/repos/uspdev/laravel-usp-theme/zipball/466d42a78b0ce30ccb1aba25f0a1762fc555adf1", + "reference": "466d42a78b0ce30ccb1aba25f0a1762fc555adf1", "shasum": "" }, "require": { @@ -7903,9 +7903,9 @@ "description": "usp theme for laravel", "support": { "issues": "https://github.com/uspdev/laravel-usp-theme/issues", - "source": "https://github.com/uspdev/laravel-usp-theme/tree/2.8.27" + "source": "https://github.com/uspdev/laravel-usp-theme/tree/2.8.28" }, - "time": "2026-03-27T14:35:42+00:00" + "time": "2026-04-07T18:57:38+00:00" }, { "name": "uspdev/laravel-usp-validators", diff --git a/resources/views/chamados/show/user-detail.blade.php b/resources/views/chamados/show/user-detail.blade.php index 2358006..a4177d4 100644 --- a/resources/views/chamados/show/user-detail.blade.php +++ b/resources/views/chamados/show/user-detail.blade.php @@ -5,20 +5,23 @@ $setor_vinculo = $user->setores()->wherePivot('funcao', '!=', 'Gerente')->first(); $setor_sigla = $setor_vinculo->sigla ?? 'sem setor'; $setor_funcao = $setor_vinculo->pivot->funcao ?? ''; +$codpes = is_numeric($user->codpes) ? (int) $user->codpes : null; -$vinculos = array_values(array_filter( - \Uspdev\Replicado\Pessoa::vinculos($user->codpes), - function ($vinculo) { - return trim(explode('-', $vinculo)[0]) !== 'Servidor Designado'; # Exclui o vinculo com o tipo 'Servidor Designado' - } -)); +$vinculos = $codpes + ? array_values(array_filter( + \Uspdev\Replicado\Pessoa::vinculos($codpes), + function ($vinculo) { + return trim(explode('-', $vinculo)[0]) !== 'Servidor Designado'; # Exclui o vinculo com o tipo 'Servidor Designado' + } + )) + : []; $ultimo_vinculo = !empty($vinculos) ? end($vinculos) : null; # Nos testes, trazer o último vínculo funcionou bem $tipvinext = $ultimo_vinculo ? trim(explode('-', $ultimo_vinculo)[0]) : $setor_funcao; # Se não houver vínculo, usa a funcao do setor -if ($usar_foto) { - $foto_base64 = \Uspdev\Wsfoto::obter((int) $user->codpes); +if ($usar_foto && $codpes) { + $foto_base64 = \Uspdev\Wsfoto::obter($codpes); $foto_src = 'data:image/png;base64,' . $foto_base64; } ?> @@ -31,7 +34,7 @@ function ($vinculo) {
- @if ($usar_foto) + @if ($usar_foto && $codpes)
Foto de {{ $user->name }}
@@ -48,7 +51,7 @@ function ($vinculo) {
{{ $user->telefone ?? 'não disponível' }}
- @if (config('chamados.sistemaPessoas')) + @if (config('chamados.sistemaPessoas') && $codpes)
Ver mais em Pessoas