Untitled

mail@pastecode.io avatarunknown
plain_text
2 months ago
2.5 kB
4
Indexable
Never
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class UserService {
    private List<User> users = new ArrayList<>();

    public void register(User user) {
        getUserBy(user.getUsername())
                .ifPresent(u -> {
                    users.add(u);
                    System.out.println("Dodano użytkownika " + user);
                });
    }

    public boolean login(String username, String password) {
        return getUserBy(username)
                .map(u -> u.getPassword().equals(password))
                .orElse(false);
    }

    public void getUserDetails(String username, String password) {
        if (login(username, password)) {
            getUserBy(username)
                    .ifPresent(System.out::println);
        }
    }

    public void changeUserDetails(String username, String password, UserEditInfo userEditInfo) {
        if (login(username, password)) {
            getUserBy(username)
                    .ifPresent(u -> {
                        u.setName(userEditInfo.getName());
                        u.setSurname(userEditInfo.getSurname());
                        u.setEmail(userEditInfo.getEmail());
                    });
        }
    }

    public void changeUserPassword(String username, String password, String newPassword) {
        if (login(username, password)) {
            getUserBy(username)
                    .ifPresent(u -> u.setPassword(newPassword));
        }
    }

    public boolean isTheSameUser(User user, String username, String password) {
        if (login(username, password)) {
            User loggedUser = getUserBy(username).get();
            return loggedUser.equals(user);
        }
        return false;
    }

    public boolean isTheSameUserDummy(User user, String username, String password) {
        if (login(username, password)) {
            User loggedUser = getUserBy(username).get();
            return loggedUser == user;
        }
        return false;
    }

    public void deleteUser(String username, String password) {
        if (login(username, password)) {
            users.removeIf(user -> user.getUsername().equals(username) && user.getPassword().equals(password));
        }
    }

    public void deleteUser(User user) {
        deleteUser(user.getUsername(), user.getPassword());
    }

    private Optional<User> getUserBy(String username) {
        return users.stream()
                .filter(u -> u.getUsername().equals(username))
                .findFirst();
    }
}