<?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;
        }
    }
}
