package co.touchlab.droidconandroid.data; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Date; import java.util.List; import co.touchlab.droidconandroid.utils.TimeUtils; import co.touchlab.squeaky.field.DatabaseField; import co.touchlab.squeaky.field.ForeignCollectionField; import co.touchlab.squeaky.table.DatabaseTable; /** * Created by kgalligan on 6/28/14. */ @DatabaseTable public class Event implements ScheduleBlock { @DatabaseField(id = true) public long id; @DatabaseField public String name; @DatabaseField public String description; @DatabaseField public String category; @NotNull @DatabaseField(foreign = true, canBeNull = false, foreignAutoRefresh = true) public Venue venue; @DatabaseField public Long startDateLong; @DatabaseField public Long endDateLong; @DatabaseField public boolean publicEvent; @DatabaseField public Integer rsvpLimit; @DatabaseField public Integer rsvpCount; @DatabaseField public String rsvpUuid; @ForeignCollectionField(foreignFieldName = "event") public List<EventSpeaker> speakerList; @DatabaseField public Integer vote; public long getId() { return id; } public String getName() { return name; } public String getDescription() { return description; } public String getCategory() { return category; } @NotNull public Venue getVenue() { return venue; } public Long getStartDateLong() { return startDateLong; } public Long getEndDateLong() { return endDateLong; } public boolean isPublicEvent() { return publicEvent; } public Integer getRsvpLimit() { return rsvpLimit; } public Integer getRsvpCount() { return rsvpCount; } public List<EventSpeaker> getSpeakerList() { return speakerList; } public Integer getVote() { return vote; } public boolean isRsvped() { return rsvpUuid != null; } public boolean isPast() { return endDateLong != null && System.currentTimeMillis() > endDateLong; } public boolean isNow() { return startDateLong != null && endDateLong != null && System .currentTimeMillis() < endDateLong && System.currentTimeMillis() > startDateLong; } @Override public boolean isBlock() { return false; } @Override public Long getStartLong() { return startDateLong; } @Override public Long getEndLong() { return endDateLong; } public String getStartFormatted() { return TimeUtils.DATE_FORMAT.get().format(new Date(startDateLong)); } public String getEndFormatted() { return TimeUtils.DATE_FORMAT.get().format(new Date(endDateLong)); } public String getRsvpUuid() { return rsvpUuid; } public void setRsvpUuid(String rsvpUuid) { this.rsvpUuid = rsvpUuid; } public String allSpeakersString() { List<String> names =new ArrayList<>(); for(EventSpeaker eventSpeaker : speakerList) { UserAccount userAccount = eventSpeaker.userAccount; if(userAccount != null) names.add(userAccount.name); } return StringUtils.join(names, ", "); } }