|string> */ public function rules(): array { $user = auth()->user(); return [ 'first_name' => [ 'required', 'persian_alpha', 'string', 'max:255' ], 'last_name' => [ 'required', 'persian_alpha', 'string', 'max:255' ], 'national_code' => [ 'required', Rule::unique('users', 'national_code') ->ignore($user->id), ], 'gender' => [ 'required', 'in:0,1' ], 'marital_status' => [ 'required', 'in:0,1,2' ], 'spouse_name' => [ 'nullable', 'string', 'persian_alpha', 'max:255', 'required_if:marital_status,1', ], 'mobile' => [ 'required', 'ir_mobile', Rule::unique('users','mobile') ->ignore($user->id) ], 'email' => [ 'required', 'email', Rule::unique('users','email') ->ignore($user->id) ], 'username' => [ 'required', 'string', 'regex:/^[A-Za-z0-9]+$/', Rule::unique('users','username')->ignore($user->id) ], 'profile_image' => [ 'nullable', 'image', 'mimes:jpg,jpeg,png,webp', 'max:800', ], 'province_id' => [ 'nullable', 'exists:provinces,id', ], 'city_id' => [ 'nullable', Rule::exists('cities', 'id') ->where(fn ($query) => $query->where('province_id', $this->province_id)), ], 'password' => [ 'required', 'confirmed', 'min:8' ], 'current_password' => [ 'required_with:new_password', 'current_password:web', ], 'new_password' => [ 'nullable', 'string', 'min:8', 'confirmed', ], 'new_password_confirmation' => [ 'nullable', 'string', ], ]; } }