package com.valposystems.service; import com.valposystems.dto.UserDTO; import com.valposystems.model.User; import com.valposystems.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @Service public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } public List getAllUsers() { return userRepository.findAll().stream() .map(UserDTO::from) .collect(Collectors.toList()); } public UserDTO getUserById(Long id) { return userRepository.findById(id) .map(UserDTO::from) .orElse(null); } @Transactional public UserDTO createUser(UserDTO dto) { // Check if a user with that email already exists if (userRepository.existsByEmail(dto.getEmail())) { return null; } User user = new User(); user.setName(dto.getName()); user.setEmail(dto.getEmail()); user.setPassword("password123"); // In a real app, this would be encrypted user.setProfilePicUrl(dto.getProfilePicUrl()); user.setNotificationsEnabled(dto.isNotificationsEnabled()); user = userRepository.save(user); return UserDTO.from(user); } @Transactional public UserDTO updateUser(Long id, UserDTO dto) { return userRepository.findById(id) .map(user -> { user.setName(dto.getName()); user.setProfilePicUrl(dto.getProfilePicUrl()); user.setNotificationsEnabled(dto.isNotificationsEnabled()); return UserDTO.from(userRepository.save(user)); }) .orElse(null); } }