['required', 'date'], 'due_date' => ['nullable', 'date'], 'user_id' => ['required', 'exists:users,id'], 'status' => ['required', Rule::in(Invoice::statuses())], 'note' => ['nullable'], 'terms' => ['nullable'], 'discount_type' => ['nullable', Rule::in(Invoice::discountTypes())], 'discount' => [Rule::requiredIf($this->discount_type !== Invoice::DISCOUNT_TYPE_NONE)], 'items' => ['required', 'array'], 'items.*.label' => ['required', Rule::in(['incentive', 'item'])], 'items.*.name' => ['exclude_unless:items.*.label,incentive', 'max:190'], 'items.*.issue_date' => ['required', 'date'], 'items.*.amount' => ['required', 'numeric', 'min:1'], 'items.*.quantity' => ['required', 'integer', 'min:1'], 'items.*.studio_plus_incentive_id' => ['exclude_unless:items.*.label,incentive', 'exists:studio_plus_incentives,id'], 'items.*.description' => ['nullable'], ]; } /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } public function messages() { return [ 'user_id.required' => 'The invoice to field is required', 'items.*.name.required' => 'The name field is required', 'items.*.issue_date.required' => 'The issue date field is required', 'items.*.issue_date.date' => 'The issue date is not a valid date.', 'items.*.studio_plus_incentive_id.exists' => 'The incentive field is required', 'items.*.amount.required' => 'The amount field is required', 'items.*.quantity.required' => 'The quantity field is required', ]; } }