'required|string', 'name_ru' => 'required|string', 'image' => 'required|image', 'status' => 'required|in:published,new,soon', 'position' => 'nullable|numeric', 'is_power' => 'nullable|boolean', 'with_power' => 'nullable|boolean', 'problems' => [ 'nullable', 'array', // Only validate the array if 'with_power' is set to true (or 1) function ($attribute, $value, $fail) { if ($this->with_power && !is_array($value)) { $fail($attribute . ' must be an array when with_power is present.'); } } ], 'problems.*' => [ 'nullable', 'exists:problems,id', // Validate each element of the array ] ]; } /** * @return array */ public function getName(): array { return [ 'uz' => $this->get('name_uz'), 'ru' => $this->get('name_ru') ]; } public function getPosition() { $position = $this->position; if ($position == null) { $service = Service::orderBy('position', 'desc')->first(); if ($service == null) { return 1; } return $service->position + 1; } return $position; } public function generateSlug() { $slug = str_slug($this->name_ru); $service = Service::where('type', $slug)->first(); if ($service == null) { return $slug; } return $slug . '-' . time(); } }