HashtagsXRep/hashtagsxrep

View on GitHub
src/main/java/cat/xarxarepublicana/hashtagsxrep/application/poll/CreatePollUseCase.java

Summary

Maintainability
A
1 hr
Test Coverage
package cat.xarxarepublicana.hashtagsxrep.application.poll;

import cat.xarxarepublicana.hashtagsxrep.domain.invite.InviteRepository;
import cat.xarxarepublicana.hashtagsxrep.domain.poll.Poll;
import cat.xarxarepublicana.hashtagsxrep.domain.poll.PollFactory;
import cat.xarxarepublicana.hashtagsxrep.domain.poll.PollRepository;
import cat.xarxarepublicana.hashtagsxrep.domain.user.User;
import java.time.LocalDateTime;

public class CreatePollUseCase {

  private final PollFactory pollFactory;
  private final PollRepository pollRepository;
  private final InviteRepository inviteRepository;

  public CreatePollUseCase(PollFactory pollFactory, PollRepository pollRepository, InviteRepository inviteRepository) {
    this.pollFactory = pollFactory;
    this.pollRepository = pollRepository;
    this.inviteRepository = inviteRepository;
  }

  public CreatePollResponse createPoll(
      User author,
      String description,
      LocalDateTime startProposalsTime,
      LocalDateTime endProposalsTime,
      LocalDateTime endVotingTime,
      LocalDateTime startEventTime,
      LocalDateTime endRankingTime,
      String type) {
    Poll poll = pollFactory.createPoll(author.getId(),
                                       author.getNickname(),
                                       description,
                                       startProposalsTime,
                                       endProposalsTime,
                                       endVotingTime,
                                       startEventTime,
                                       endRankingTime);
    pollRepository.save(poll);
    inviteRepository.inviteToPoll(poll.getId(), type);
    return new CreatePollResponse(poll);
  }

  public static class CreatePollResponse {
    private final Poll poll;

    public CreatePollResponse(Poll poll) {
      this.poll = poll;
    }

    public Poll getPoll() {
      return poll;
    }
  }
}