<?php

namespace App\Http\Requests;

use App\Models\User;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Response;

class UpdateUserRequest extends FormRequest
{
    public function authorize()
    {
        return Gate::allows('user_edit');
    }

    public function rules()
    {
        return [
            'first_name' => [
                'string',
                'required',
            ],
            'last_name' => [
                'string',
                'nullable',
            ],
            'phone' => [
                'string',
                'required',
            ],
            'email' => [
                'required',
                'email',
            ],
            'address' => [
                'string',
                'required',
            ],
            'document_type' => [
                'required',
            ],
            'document_picture' => [
                'image',
                'mimes:jpg,png,jpeg',
                'max:2048'
            ],
            'roles.*' => [
                'integer',
            ],
            'roles' => [
                'required',
                'array',
            ],
        ];
    }

    public function withValidator($validator)
    {
    	$validator->sometimes('document_picture', ['required'], function ($input) {
            // Get current user being updated
            $userId = $this->route('user') ? $this->route('user')->id : null;
            $user = $userId ? User::find($userId) : null;

            // Require document_picture only if user does NOT have one already
            return !$user || empty($user->document_picture);
        });
    
        $validator->sometimes('seller_commission_percentage', ['required', 'numeric', 'min:0', 'max:100'], function ($input) {
            // Replace '5' with actual Seller role ID
            return in_array('5', $input->roles ?? []);
        });
    }
}
