Files
wticreatorstudio/Modules/StaffPayroll/Http/Requests/InvoiceRequest.php
T
2024-02-12 22:54:20 -05:00

61 lines
2.2 KiB
PHP

<?php
namespace Modules\StaffPayroll\Http\Requests;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use Modules\StaffPayroll\Entities\Invoice;
class InvoiceRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'issue_date' => ['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',
];
}
}