* * @version 1.0.0 */ class SaleStoreRequest extends FormRequest { public function authorize(): bool { return true; } /** * Get the validation rules that apply to the request. */ public function rules(): array { return [ 'client_id' => ['nullable', 'integer', 'exists:clients,id'], 'client' => ['required_without:client_id', 'array'], 'client.name' => ['required_with:client', 'string'], 'client.paternal' => ['required_with:client', 'string'], 'client.maternal' => ['required_with:client', 'string'], 'client.email' => ['required_with:client', 'email'], 'client.phone' => ['nullable', 'string', 'max:10'], 'payment_method' => ['required', 'string', 'in:cash,card,transfer'], 'saleItems' => ['required', 'array', 'min:1'], 'saleItems.*.sim_card_id' => ['required', 'integer', 'exists:sim_cards,id'], 'saleItems.*.package_id' => ['required', 'integer', 'exists:packages,id'], ]; } public function messages(): array { return [ 'client_id.exists' => 'El cliente seleccionado no existe.', 'client.required_without' => 'Debe proporcionar un cliente existente o crear uno nuevo.', 'payment_method.required' => 'El método de pago es obligatorio.', 'payment_method.in' => 'El método de pago debe ser: efectivo, tarjeta o transferencia.', 'saleItems.required' => 'Debe agregar al menos un item a la venta.', 'saleItems.*.sim_card_id.exists' => 'Una de las SIM seleccionadas no existe.', 'saleItems.*.package_id.exists' => 'Uno de los paquetes seleccionados no existe.', ]; } }