File manager - Edit - /var/www/html/portal/app/Http/Requests/Sei/SeiAlertaRequest.php
Back
<?php namespace App\Http\Requests\Sei; use App\Http\Resources\Sei\SeiAlertaResource; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; use Illuminate\Validation\Validator; class SeiAlertaRequest extends FormRequest { public function authorize(): bool { return true; } /** * @return array<string, mixed> */ public function rules(): array { return [ 'conteudo' => ['required', 'string', 'max:10000'], 'publicado_em' => ['required', 'date'], 'duracao_exibicao' => ['required', 'string', Rule::in(SeiAlertaResource::duracoesPermitidas())], 'exibir_ate' => ['nullable', 'date', 'after:publicado_em'], 'ativo' => ['sometimes', 'boolean'], ]; } /** * @return array<string, string> */ public function messages(): array { return [ 'conteudo.required' => __('Informe o conteúdo do aviso.'), 'conteudo.max' => __('O conteúdo do aviso não pode ultrapassar :max caracteres.'), 'publicado_em.required' => __('Informe a data e hora de publicação.'), 'publicado_em.date' => __('A data de publicação informada é inválida.'), 'duracao_exibicao.required' => __('Selecione o tempo de exibição.'), 'duracao_exibicao.in' => __('O tempo de exibição selecionado é inválido.'), 'exibir_ate.date' => __('A data de encerramento informada é inválida.'), 'exibir_ate.after' => __('A data de encerramento deve ser posterior à data de publicação.'), ]; } /** * @return array<string, string> */ public function attributes(): array { return [ 'conteudo' => __('Conteúdo'), 'publicado_em' => __('Publicar em'), 'duracao_exibicao' => __('Tempo de exibição'), 'exibir_ate' => __('Exibir até'), 'ativo' => __('Publicar no site'), ]; } protected function prepareForValidation(): void { if ($this->has('exibir_ate') && $this->input('exibir_ate') === '') { $this->merge(['exibir_ate' => null]); } if ($this->has('ativo')) { $this->merge([ 'ativo' => filter_var($this->input('ativo'), FILTER_VALIDATE_BOOLEAN), ]); } /** @var SeiAlertaResource $resource */ $resource = app(SeiAlertaResource::class); $exibirAte = $resource->resolverExibirAte( $this->input('publicado_em'), (string) $this->input('duracao_exibicao', 'none'), $this->input('exibir_ate'), ); $this->merge([ 'exibir_ate' => $exibirAte?->format('Y-m-d H:i:s'), ]); } public function withValidator(Validator $validator): void { $validator->after(function (Validator $validator): void { if ($this->input('duracao_exibicao') === 'custom' && ! $this->filled('exibir_ate')) { $validator->errors()->add( 'exibir_ate', __('Informe a data e hora de encerramento para o tempo personalizado.'), ); } }); } protected function getRedirectUrl(): string { $query = []; if ($this->filled('page')) { $query['page'] = (int) $this->input('page'); } return route('admin.seiAlertas.index', $query); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings