HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/matriculas_api_dev/app/Http/Requests/Period/StorePeriodRequest.php
<?php

namespace App\Http\Requests\Period;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

class StorePeriodRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'period_year' => 'required|integer|min:2000|max:2100',
            'period'      => 'required|min:3|max:150',
            'start_date'  => 'required|date',
            'end_date'    => 'required|date|after_or_equal:start_date',
            'segments'    => 'array',
            'segments.*.description' => 'required|string|max:150',
            'segments.*.start_date'  => 'required|date',
            'segments.*.end_date'    => 'required|date|after_or_equal:segments.*.start_date',
        ];
    }

    public function messages()
    {
        return [
            'period_year.required' => 'Año del periodo requerido',
            'period.required'      => 'Nombre del periodo requerido',
            'start_date.required'  => 'Fecha de inicio requerida',
            'end_date.required'    => 'Fecha de término requerida',
            'end_date.after_or_equal' => 'Fecha término debe ser mayor o igual a inicio',
            'segments.*.description.required' => 'Cada segmento requiere una descripción',
            'segments.*.start_date.required'  => 'Cada segmento requiere fecha de inicio',
            'segments.*.end_date.required'    => 'Cada segmento requiere fecha de fin',
        ];
    }

    protected function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(
            genericResponse(['error' => implode(', ', $validator->errors()->all())], 400)
        );
    }
}