<?php

namespace App\Services;

use App\Models\User;
use Illuminate\Support\Facades\Hash;

class ProfileService
{
    /**
     * 프로필 정보 수정 (이름, 전화번호)
     * 이름은 최고관리자만 수정 가능
     */
    public function updateProfile(User $user, array $data): bool
    {
        // 최고관리자만 이름 수정 가능
        if ($user->isSuperAdmin() && isset($data['name'])) {
            $user->name = $data['name'];
        }

        $user->phone = $data['phone'] ?? null;
        $user->updated_by = $user->id;

        return $user->save();
    }

    /**
     * 비밀번호 변경
     */
    public function changePassword(User $user, string $currentPassword, string $newPassword): array
    {
        // 현재 비밀번호 확인
        if (! Hash::check($currentPassword, $user->password)) {
            return [
                'success' => false,
                'message' => '현재 비밀번호가 일치하지 않습니다.',
            ];
        }

        // 새 비밀번호가 현재 비밀번호와 동일한지 확인
        if (Hash::check($newPassword, $user->password)) {
            return [
                'success' => false,
                'message' => '새 비밀번호는 현재 비밀번호와 다르게 설정해주세요.',
            ];
        }

        // 비밀번호 업데이트 + 비밀번호 변경 필요 플래그 해제
        $user->password = Hash::make($newPassword);
        $user->must_change_password = false;
        $user->updated_by = $user->id;
        $user->save();

        return [
            'success' => true,
            'message' => '비밀번호가 변경되었습니다.',
        ];
    }
}
