package br.gov.serpro.nfc.model;
import java.util.List;
import br.gov.serpro.nfc.service.KeynoteService;
import br.gov.serpro.nfc.service.ServiceFactory;
import com.activeandroid.ActiveAndroid;
import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;
import com.activeandroid.query.Delete;
import com.activeandroid.query.Select;
/**
* Model representando uma Palestra.
*
* @author Marlon Silva Carvalho
*/
@Table(name = "Keynotes")
public class Keynote extends Model {
@Column(name = "service_id")
public Long service_id;
@Column(name = "description")
public String description;
@Column(name = "date")
public String date;
@Column(name = "speaker")
public String speaker;
/**
* Obter a Lista de todas as palestras disponíveis.
*
* @return Lista de Palestras.
*/
public static List<Keynote> refresh() {
KeynoteService service = ServiceFactory.getKeynoteService();
List<Keynote> keynotes = service.list(1L);
ActiveAndroid.beginTransaction();
new Delete().from(Keynote.class).execute();
try {
for (Keynote keynote : keynotes) {
keynote.save();
}
ActiveAndroid.setTransactionSuccessful();
} finally {
ActiveAndroid.endTransaction();
}
return keynotes;
}
/**
* Obter a Lista de todas as palestras disponíveis.
*
* @return Lista de Palestras.
*/
public static List<Keynote> all() {
return new Select().from(Keynote.class).execute();
}
/**
* Realizar o checkin de um usuário nesta palestra.
*
* @param user
* Usuário que fará o checkin.
*/
public void checkin(User user) {
ServiceFactory.getKeynoteService().checkin(this, user);
}
/**
* Realizar o checkout de um usuário nesta palestra.
*
* @param user
* Usuário que fará o checkout.
*/
public void checkout(User user) {
ServiceFactory.getKeynoteService().checkout(this, user);
}
/**
* Obter uma Palestra pelo seu Identificador.
*
* @param id
* Identificador.
* @return
*/
public static Keynote byId(Long id) {
return new Select().from(Keynote.class).where("service_id=?", id).executeSingle();
}
/**
* Obter todas as palestras que estão acontecendo agora.
*
* @return Lista de Palestras.
*/
public static List<Keynote> takingPlaceNow() {
return all();
}
}