65 lines
2.0 KiB
Java

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<UserDTO> 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);
}
}