001package com.plivo.api.models.multipartycall;
002
003import com.plivo.api.exceptions.PlivoValidationException;
004import com.plivo.api.models.base.ListResponse;
005import com.plivo.api.models.base.VoiceLister;
006import com.plivo.api.util.PropertyFilter;
007import com.plivo.api.validators.OneOf;
008import com.plivo.api.validators.SubAccount;
009import com.plivo.api.validators.Validate;
010import retrofit2.Call;
011
012public class MultiPartyCallList extends VoiceLister<MultiPartyCall> {
013
014  @SubAccount
015  private String subAccount;
016  private String friendlyName;
017  @OneOf(message = "should be one of [initialized, active, ended]", options = {"initialized", "active", "ended"})
018  private String status;
019  private Integer terminationCauseCode;
020  private PropertyFilter<String> creationTime;
021  private PropertyFilter<String> endTime;
022
023  public String subAccount() {
024    return subAccount;
025  }
026
027  public String friendlyName() {
028    return friendlyName;
029  }
030
031  public String status() {
032    return status;
033  }
034
035  public Integer terminationCauseCode() {
036    return terminationCauseCode;
037  }
038
039  public PropertyFilter<String> creationTime() {
040    return creationTime;
041  }
042
043  public PropertyFilter<String> endTime() {
044    return endTime;
045  }
046
047  public MultiPartyCallList subAccount(String subAccount) {
048    this.subAccount = subAccount;
049    return this;
050  }
051
052  public MultiPartyCallList friendlyName(String friendlyName) {
053    this.friendlyName = friendlyName;
054    return this;
055  }
056
057  public MultiPartyCallList status(String status) {
058    this.status = status;
059    return this;
060  }
061
062  public MultiPartyCallList terminationCauseCode(Integer terminationCauseCode) {
063    this.terminationCauseCode = terminationCauseCode;
064    return this;
065  }
066
067  public MultiPartyCallList creationTime(PropertyFilter<String> creationTime) throws PlivoValidationException  {
068    MultiPartyCallUtils.validMultiPartyTime("creationTime", creationTime);
069    this.creationTime = creationTime;
070    return this;
071  }
072
073  public MultiPartyCallList endTime(PropertyFilter<String> endTime) throws PlivoValidationException  {
074    MultiPartyCallUtils.validMultiPartyTime("endTime", endTime);
075    this.endTime = endTime;
076    return this;
077  }
078
079  @Override
080  protected Call<ListResponse<MultiPartyCall>> obtainCall() throws PlivoValidationException {
081    Validate.check(this);
082    return client().getVoiceApiService().mpcList(client().getAuthId(), toMap());
083  }
084
085  @Override
086  protected Call<ListResponse<MultiPartyCall>> obtainFallback1Call() throws PlivoValidationException {
087    Validate.check(this);
088    return client().getVoiceFallback1Service().mpcList(client().getAuthId(), toMap());
089  }
090
091  @Override
092  protected Call<ListResponse<MultiPartyCall>> obtainFallback2Call() throws PlivoValidationException {
093    Validate.check(this);
094    return client().getVoiceFallback2Service().mpcList(client().getAuthId(), toMap());
095  }
096}