HashtagsXRep/hashtagsxrep

View on GitHub
src/main/java/cat/xarxarepublicana/hashtagsxrep/application/group/AddUserUseCase.java

Summary

Maintainability
A
0 mins
Test Coverage
package cat.xarxarepublicana.hashtagsxrep.application.group;

import cat.xarxarepublicana.hashtagsxrep.domain.core.error.EntityNotFoundException;
import cat.xarxarepublicana.hashtagsxrep.domain.group.Group;
import cat.xarxarepublicana.hashtagsxrep.domain.group.GroupRepository;
import cat.xarxarepublicana.hashtagsxrep.domain.user.User;
import cat.xarxarepublicana.hashtagsxrep.domain.user.UserRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

@Component
public class AddUserUseCase {

  private final UserRepository userRepository;
  private final GroupRepository groupRepository;

  public AddUserUseCase(UserRepository userRepository, GroupRepository groupRepository) {
    this.userRepository = userRepository;
    this.groupRepository = groupRepository;
  }

  public void addUser(String groupId, String nickname) {
    User user = userRepository.findByNickname(StringUtils.removeStart(nickname, "@"));
    if (user == null) {
      throw new EntityNotFoundException("L'usuari no es troba al nostre sistema: "
                                            + nickname
                                            + ", potser no ha participat mai.");
    }
    Group group = groupRepository.findById(groupId);
    if (group == null) {
      throw new EntityNotFoundException("El grup no existeix " + groupId);
    }
    groupRepository.addUser(group, user);
  }
}