<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
use App\User;

class StoreUser extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        if (Auth::user()->isAdministrator()) {
            return true;
        }

        if (Auth::user()->isModerator()) {
            return true;
        }
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $start_pos = strpos(request()->path(), "users/")+6;
        $length = strpos(request()->path(), "/edit")-$start_pos;
        $user_id = substr(request()->path(), $start_pos, $length);

        return [
            "name" => "required|string|max:255",
            "email" => [
                "required",
                "email",
                Rule::unique('users')->ignore($user_id),
                "max:255",
            ],
            "password" => "sometimes|required|min:8",
            "group_id" => "integer|exists:groups,id|min:1",
            "enabled" => "required|boolean",
            "access_level" => "required|integer|min:1|max:3|access_mod",
        ];
    }
}