CRM/backend/app/Http/Requests/UpdateTaskRequest.php

44 خطوط
1.5 KiB
PHP

<?php
namespace App\Http\Requests;
use App\Enums\TaskPriority;
use App\Enums\TaskVisibility;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Carbon;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Validator;
class UpdateTaskRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'subject' => 'sometimes|required|string|max:255',
'description' => 'sometimes|nullable|string|max:5000',
'priority' => ['sometimes', Rule::enum(TaskPriority::class)],
'due_at' => 'sometimes|nullable|date',
'reminder_at' => 'sometimes|nullable|date',
'estimated_minutes' => 'sometimes|nullable|integer|min:1|max:100000',
'visibility' => ['sometimes', Rule::enum(TaskVisibility::class)],
'version' => 'required|integer|min:1',
];
}
public function after(): array
{
return [function (Validator $validator): void {
$dueAt = $this->input('due_at', $this->route('task')?->due_at);
$reminderAt = $this->input('reminder_at', $this->route('task')?->reminder_at);
if ($dueAt && $reminderAt && Carbon::parse($reminderAt)->gt(Carbon::parse($dueAt))) {
$validator->errors()->add('reminder_at', 'زمان یادآوری نمی‌تواند بعد از موعد کار باشد.');
}
}];
}
}