package com.monitorabrasil.participacidadao.stores;
import com.monitorabrasil.participacidadao.actions.Action;
import com.monitorabrasil.participacidadao.actions.DialogaActions;
import com.monitorabrasil.participacidadao.dispatcher.Dispatcher;
import com.monitorabrasil.participacidadao.model.Pergunta;
import com.parse.ParseObject;
import com.squareup.otto.Subscribe;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
/**
* Created by Geraldo on 13/08/2015.
*/
public class DialogaStore extends Store{
private static DialogaStore instance;
private String status;
private String evento;
private List<ParseObject> temas;
private List<ParseObject> resultado; // lista de perguntas ordenadas
private Pergunta pergunta;
private List<ParseObject> perguntas;
public List<ParseObject> getPerguntas() {
return perguntas;
}
public void setPerguntas(List<ParseObject> perguntas) {
this.perguntas = perguntas;
}
public String getEvento() {
return evento;
}
public List<ParseObject> getResultado(){ return this.resultado;}
public void setEvento(String evento) {
this.evento = evento;
}
public Pergunta getPergunta() {
return pergunta;
}
public void setPergunta(Pergunta pergunta) {
this.pergunta = pergunta;
}
protected DialogaStore(Dispatcher dispatcher) {
super(dispatcher);
temas = new ArrayList<>();
resultado = new ArrayList<>();
perguntas = new ArrayList<>();
}
public static DialogaStore get(Dispatcher dispatcher) {
if (instance == null) {
instance = new DialogaStore(dispatcher);
}
return instance;
}
public List<ParseObject> getTemas(){
return temas;
}
@Override
@Subscribe
public void onAction(Action action) {
status = "erro";
this.evento = action.getType();
switch (action.getType()) {
case DialogaActions.DIALOGA_GET_TEMAS:
temas = ((List<ParseObject>) action.getData().get(DialogaActions.KEY_TEXT));
emitStoreChange();
break;
case DialogaActions.DIALOGA_GET_PERGUNTA_RESPOSTAS:
pergunta = ((Pergunta) action.getData().get(DialogaActions.KEY_TEXT));
emitStoreChange();
break;
case DialogaActions.DIALOGA_ENVIAR_RESPOSTA:
emitStoreChange();
break;
case DialogaActions.DIALOGA_ENVIAR_PERGUNTA:
emitStoreChange();
break;
case DialogaActions.DIALOGA_GET_RESULTADO:
resultado = ((List<ParseObject>) action.getData().get(DialogaActions.KEY_TEXT));
emitStoreChange();
break;
case DialogaActions.DIALOGA_GET_PERGUNTAS:
perguntas = ((List<ParseObject>) action.getData().get(DialogaActions.KEY_TEXT));
emitStoreChange();
break;
case DialogaActions.DIALOGA_GET_PERGUNTA_ALETORIA:
perguntas = ((List<ParseObject>) action.getData().get(DialogaActions.KEY_TEXT));
pergunta = new Pergunta(getRandomList(perguntas), null);
emitStoreChange();
break;
}
}
private Random random = new Random();
public ParseObject getRandomList(List<ParseObject> list) {
//0-4
int index = random.nextInt(list.size());
return list.get(index);
}
@Override
StoreChangeEvent changeEvent() {
DialogaStoreChangeEvent mDialogaStoreChangeEvent = new DialogaStoreChangeEvent();
return mDialogaStoreChangeEvent;
}
public class DialogaStoreChangeEvent implements StoreChangeEvent {
}
}