package com.social.media.service;

import com.social.media.dto.UserDto;
import com.social.media.domain.shared.PageResponse;
import java.util.List;

public interface UserService {
    
    // CRUD básico
    PageResponse<UserDto> getAllUsers(int page, int size);
    
    UserDto getUserById(Long id);
    
    UserDto createUser(UserDto userDto);
    
    UserDto updateUser(Long id, UserDto userDto);
    
    void deleteUser(Long id);
    
    // Métodos de busca
    UserDto getUserByEmail(String email);
    
    java.util.Optional<UserDto> findByEmail(String email);
    
    PageResponse<UserDto> getUsersByRole(String role, int page, int size);
    
    PageResponse<UserDto> getActiveUsers(int page, int size);
    
    PageResponse<UserDto> searchUsersByName(String name, int page, int size);
    
    // Métodos de ação
    UserDto updateLastLogin(Long id);
    
    UserDto updateLastAccess(Long id);
    
    UserDto deactivateUser(Long id);
    
    UserDto activateUser(Long id);
}
