package br.com.javace.javou.model.raffle;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import br.com.javace.javou.model.participant.Participant;
/**
* Created by danielbaccin on 21/07/15.
*/
public class Raffle{
private Random randomGenerator;
private ArrayList<Participant> participants;
public Raffle(ArrayList<Participant> participants) {
this.randomGenerator = new Random();
this.participants = participants;
}
private List<Participant> getParticipantsAttend(){
List<Participant> attendees = new ArrayList<>();
for (Participant participant : participants) {
if(participant.isAttend() && !participant.isRaffled()) //It can be drawn
attendees.add(participant);
}
return attendees;
}
private List<Participant> getParticipantsAttendSex(){
List<Participant> attendees = new ArrayList<>();
for (Participant participant : participants) {
if(participant.isAttend() && !participant.isRaffled() && participant.getSex()) //It can be drawn
attendees.add(participant);
}
return attendees;
}
public boolean isValid(){
for (Participant participant : participants) {
if(participant.isAttend() && !participant.isRaffled())
return true;
}
return false;
}
public boolean isValidSex(){
for (Participant participant : participants) {
if(participant.isAttend() && !participant.isRaffled() && participant.getSex())
return true;
}
return false;
}
public Participant getFortunate() {
List<Participant> participantsAttend = getParticipantsAttend();
if(participantsAttend.isEmpty()) {
return null;
}
int index = randomGenerator.nextInt(participantsAttend.size());
Participant participantFortunate = participantsAttend.get(index);
participantFortunate.setRaffled(true);
return participantFortunate;
}
public Participant getFortunateSex() {
List<Participant> participantsAttend = getParticipantsAttendSex();
if(participantsAttend.isEmpty()) {
return null;
}
int index = randomGenerator.nextInt(participantsAttend.size());
Participant participantFortunate = participantsAttend.get(index);
participantFortunate.setRaffled(true);
return participantFortunate;
}
}