/*
 * (c) 2020 Pluto Inc.
 */
package tv.pluto.mongo.entities.common;

import com.google.gson.annotations.JsonAdapter;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.BsonType;
import org.bson.codecs.pojo.annotations.BsonRepresentation;
import tv.pluto.mongo.utils.json.DateAdapter;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class NextTimeline {
  @BsonRepresentation(BsonType.OBJECT_ID)
  private String _id = "";

  @BsonRepresentation(BsonType.OBJECT_ID)
  private String channel = "";

  @JsonAdapter(DateAdapter.class)
  private Date start;

  private Boolean promotional;
  private String programmingType = "";

  public String get_id() {
    return _id == null ? "" : _id;
  }

  public String getChannel() {
    return channel == null ? "" : channel;
  }

  public Date getStart() {
    return start;
  }

  public Boolean getPromotional() {
    return promotional != null && promotional;
  }

  public String getProgrammingType() {
    return programmingType == null ? "" : programmingType;
  }

  public boolean isEmpty() {
    return (_id == null || _id.isEmpty())
        && (channel == null || channel.isEmpty())
        && (start == null)
        && (promotional == null || !promotional)
        && (programmingType == null || programmingType.isEmpty());
  }
}
