Files
getgreen-backend/app/Http/Requests/Dashboard/Category/Update.php
2026-04-28 18:02:39 +05:00

111 lines
2.3 KiB
PHP
Executable File

<?php
namespace App\Http\Requests\Dashboard\Category;
use App\Models\Category;
use App\Support\Uploads;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class Update extends FormRequest
{
protected function prepareForValidation()
{
if (in_array($this->get('parent_id'), [0, '0', '', 'null', 'NULL'], true)) {
$this->merge(['parent_id' => null]);
}
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
if ($this->isMethod('get')) {
return [];
}
return [
'name' => 'required|array',
'name.*' => 'required|string',
'image' => 'nullable',
'parent_id' => 'nullable|integer|exists:categories,id',
'popular' => 'nullable',
'brands' => 'nullable|array',
'position' => 'nullable|numeric'
];
}
public function getName(): array
{
return $this->get('name');
}
public function getSlug(): string
{
return Str::slug($this->get('name')['uz']);
}
public function getImage(Category $category): ?string
{
if ($this->hasFile('image')) {
Storage::delete($category->image);
return Uploads::store($this->file('image'), 'uploads/categories');
}
return $category->image;
}
public function getFilterPower()
{
if ($this->get('is_filter_power') == 'true') {
return true;
}
return false;
}
public function getPublished()
{
if ($this->get('published') == 'true') {
return true;
}
return false;
}
public function getCredit()
{
if ($this->get('credit') == 'true') {
return true;
}
return false;
}
public function getParentId()
{
if ((int) $this->get('parent_id') > 0) {
return (int) $this->get('parent_id');
}
return null;
}
public function getPosition(): int
{
return (int) $this->get('position');
}
public function getPopular(): bool
{
if ($this->get('popular') == 'false') {
return false;
}
return true;
}
}