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

import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.BsonType;
import org.bson.codecs.pojo.annotations.BsonProperty;
import org.bson.codecs.pojo.annotations.BsonRepresentation;
import tv.pluto.mongo.entities.common.AdvertisingId;
import tv.pluto.mongo.entities.common.Api;
import tv.pluto.mongo.entities.common.DistributeAs;
import tv.pluto.mongo.utils.json.LocalDateTimeAdapter;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Partners {
  @BsonRepresentation(BsonType.OBJECT_ID)
  private String id;

  @JsonAdapter(LocalDateTimeAdapter.class)
  private LocalDateTime updatedAt;

  private Date createdAt;
  private String name = "";
  private Api api = new Api();

  @BsonProperty("isBluEvo")
  @SerializedName("isBluEvo")
  private Boolean isbluEvo;

  private String ingestor = "";
  private Boolean useLambda;
  private String bluevoApiVersion = "";
  private String apiAuthorName = "";
  private Boolean autoIngestion;
  private String ingestionInterval = "";
  private List<String> feeds = Collections.emptyList();
  private Boolean captions_required;
  private Advertising advertising;
  private String code = "";
  private AdvertisingId advertisingId;
  private ComScore comScore;

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

  private DistributeAs distributeAs = new DistributeAs();
  private String encodingProfile = "";

  public Boolean getIsbluEvo() {
    return isbluEvo != null && isbluEvo;
  }

  public Boolean getUseLambda() {
    return useLambda != null && useLambda;
  }

  public Boolean getAutoIngestion() {
    return autoIngestion != null && autoIngestion;
  }

  public Boolean getCaptionsRequired() {
    return captions_required != null && captions_required;
  }

  public String getName() {
    return name == null ? "" : name;
  }

  public String getIngestor() {
    return ingestor == null ? "" : ingestor;
  }

  public String getBluevoApiVersion() {
    return bluevoApiVersion == null ? "" : bluevoApiVersion;
  }

  public String getApiAuthorName() {
    return apiAuthorName == null ? "" : apiAuthorName;
  }

  public String getIngestionInterval() {
    return ingestionInterval == null ? "" : ingestionInterval;
  }

  public String getCode() {
    return code == null ? "" : code;
  }

  public String getParent() {
    return parent == null ? "" : parent;
  }

  public String getEncodingProfile() {
    return encodingProfile == null ? "" : encodingProfile;
  }
}
