69 lines
1.5 KiB
PHP
Executable File
69 lines
1.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Requests\Dashboard\Post;
|
|
|
|
use App\Models\Post;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class Store extends FormRequest
|
|
{
|
|
/**
|
|
* Get the validation rules that apply to the request.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function rules()
|
|
{
|
|
if ($this->isMethod('get')) {
|
|
return [];
|
|
}
|
|
|
|
return [
|
|
'name' => 'required|string',
|
|
'content' => 'required|string',
|
|
'image' => 'required|image',
|
|
'language' => 'required|string',
|
|
'topped' => 'nullable|boolean',
|
|
'type' => 'required|string|in:news,article,sales,media',
|
|
'position' => 'nullable|integer'
|
|
];
|
|
}
|
|
|
|
public function getName():string
|
|
{
|
|
return (string) $this->get('name');
|
|
}
|
|
|
|
public function getBody():string
|
|
{
|
|
return (string) $this->get('content');
|
|
}
|
|
|
|
public function getLanguage():string
|
|
{
|
|
return (string) $this->get('language');
|
|
}
|
|
|
|
public function getTopped(): bool
|
|
{
|
|
return (bool) $this->get('topped');
|
|
}
|
|
|
|
public function getType(): string
|
|
{
|
|
return (string) $this->get('type');
|
|
}
|
|
|
|
public function getPosition(): int|null
|
|
{
|
|
if ($this->position) {
|
|
return $this->get('position');
|
|
} else {
|
|
if (Post::count() === 0) {
|
|
return 0;
|
|
}
|
|
return Post::max('position') + 1;
|
|
}
|
|
}
|
|
}
|