package com.kt.event.user.service;

import com.kt.event.user.dto.request.ChangePasswordRequest;
import com.kt.event.user.dto.request.UpdateProfileRequest;
import com.kt.event.user.dto.request.RegisterRequest;
import com.kt.event.user.dto.response.ProfileResponse;
import com.kt.event.user.dto.response.RegisterResponse;

import java.util.UUID;

/**
 * User Service Interface
 *
 * 사용자 관리 비즈니스 로직 인터페이스
 *
 * @author Backend Developer
 * @since 1.0
 */
public interface UserService {

    /**
     * 회원가입
     *
     * @param request 회원가입 요청
     * @return 회원가입 응답
     */
    RegisterResponse register(RegisterRequest request);

    /**
     * 프로필 조회
     *
     * @param userId 사용자 ID
     * @return 프로필 응답
     */
    ProfileResponse getProfile(UUID userId);

    /**
     * 프로필 수정
     *
     * @param userId 사용자 ID
     * @param request 프로필 수정 요청
     * @return 프로필 응답
     */
    ProfileResponse updateProfile(UUID userId, UpdateProfileRequest request);

    /**
     * 비밀번호 변경
     *
     * @param userId 사용자 ID
     * @param request 비밀번호 변경 요청
     */
    void changePassword(UUID userId, ChangePasswordRequest request);

    /**
     * 최종 로그인 시각 업데이트 (비동기)
     *
     * @param userId 사용자 ID
     */
    void updateLastLoginAt(UUID userId);
}
