UserServiceImpl.java

package com.aleprimo.Booking_System_App.service.serviceImpl;


import com.aleprimo.Booking_System_App.entity.User;
import com.aleprimo.Booking_System_App.exception.ResourceNotFoundException;
import com.aleprimo.Booking_System_App.persistence.UserDAO;
import com.aleprimo.Booking_System_App.service.UserService;

import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

    private final UserDAO userDAO;

    @Override

    public User createUser(User user) {
        return userDAO.save(user);
    }

    @Override

    public User updateUser(Long id, User user) {
        User existing = userDAO.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado"));
        existing.setName(user.getName());
        existing.setEmail(user.getEmail());
        existing.setPassword(user.getPassword());
        existing.setRoles(user.getRoles());
        return userDAO.save(existing);
    }

    @Override

    public void deleteUser(Long id) {
        userDAO.deleteById(id);
    }

    @Override

    public Optional<User> getUserById(Long id) {
        return userDAO.findById(id);
    }

    @Override

    public Optional<User> getUserByEmail(String email) {
        return userDAO.findByEmail(email);
    }

    @Override

    public Page<User> getAllUsers(Pageable pageable) {
        List<User> users = userDAO.findAll();
        int start = (int) pageable.getOffset();
        int end = Math.min(start + pageable.getPageSize(), users.size());
        return new PageImpl<>(users.subList(start, end), pageable, users.size());
    }
}