package org.zendesk.client.v2.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Date;
import java.util.List;
/**
* @author stephenc
* @since 04/04/2013 14:25
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class Ticket extends Request implements SearchResultEntity {
private static final long serialVersionUID = 1L;
private String externalId;
private Type type;
private Priority priority;
private String recipient;
private Long submitterId;
private Long assigneeId;
private Long groupId;
private List<Long> collaboratorIds;
private List<Collaborator> collaborators;
private Long forumTopicId;
private Long problemId;
private boolean hasIncidents;
private Date dueAt;
private List<String> tags;
private List<CustomFieldValue> customFields;
private SatisfactionRating satisfactionRating;
private List<Long> sharingAgreementIds;
private List<Long> followupIds;
private Long ticketFormId;
private Long brandId;
public Ticket() {
}
public Ticket(Requester requester, String subject, Comment comment) {
this.subject = subject;
this.requester = requester;
this.comment = comment;
}
public Ticket(long requesterId, String subject, Comment comment) {
this.subject = subject;
this.requesterId = requesterId;
this.comment = comment;
}
@JsonProperty("assignee_id")
public Long getAssigneeId() {
return assigneeId;
}
public void setAssigneeId(Long assigneeId) {
this.assigneeId = assigneeId;
}
@JsonProperty("collaborator_ids")
public List<Long> getCollaboratorIds() {
return collaboratorIds;
}
public void setCollaboratorIds(List<Long> collaboratorIds) {
this.collaboratorIds = collaboratorIds;
}
@JsonProperty("collaborators")
private List<Collaborator> getCollaborators() {
return collaborators;
}
public void setCollaborators(List<Collaborator> collaborators) {
this.collaborators = collaborators;
}
@JsonProperty("custom_fields")
public List<CustomFieldValue> getCustomFields() {
return customFields;
}
public void setCustomFields(List<CustomFieldValue> customFields) {
this.customFields = customFields;
}
@JsonProperty("due_at")
public Date getDueAt() {
return dueAt;
}
public void setDueAt(Date dueAt) {
this.dueAt = dueAt;
}
@JsonProperty("external_id")
public String getExternalId() {
return externalId;
}
public void setExternalId(String externalId) {
this.externalId = externalId;
}
@JsonProperty("followup_ids")
public List<Long> getFollowupIds() {
return followupIds;
}
public void setFollowupIds(List<Long> followupIds) {
this.followupIds = followupIds;
}
@JsonProperty("forum_topic_id")
public Long getForumTopicId() {
return forumTopicId;
}
public void setForumTopicId(Long forumTopicId) {
this.forumTopicId = forumTopicId;
}
@JsonProperty("group_id")
public Long getGroupId() {
return groupId;
}
public void setGroupId(Long groupId) {
this.groupId = groupId;
}
@JsonProperty("has_incidents")
public boolean isHasIncidents() {
return hasIncidents;
}
public void setHasIncidents(boolean hasIncidents) {
this.hasIncidents = hasIncidents;
}
public Priority getPriority() {
return priority;
}
public void setPriority(Priority priority) {
this.priority = priority;
}
@JsonProperty("problem_id")
public Long getProblemId() {
return problemId;
}
public void setProblemId(Long problemId) {
this.problemId = problemId;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
@JsonProperty("brand_id")
public Long getBrandId() {
return brandId;
}
public void setBrandId(Long brandId) {
this.brandId = brandId;
}
public Requester getRequester() {
return requester;
}
public void setRequester(Requester requester) {
this.requester = requester;
if (requester != null) {
this.requesterId = null;
}
}
@JsonProperty("satisfaction_rating")
public SatisfactionRating getSatisfactionRating() {
return satisfactionRating;
}
public void setSatisfactionRating(SatisfactionRating satisfactionRating) {
this.satisfactionRating = satisfactionRating;
}
@JsonProperty("sharing_agreement_ids")
public List<Long> getSharingAgreementIds() {
return sharingAgreementIds;
}
public void setSharingAgreementIds(List<Long> sharingAgreementIds) {
this.sharingAgreementIds = sharingAgreementIds;
}
@JsonProperty("submitter_id")
public Long getSubmitterId() {
return submitterId;
}
public void setSubmitterId(Long submitterId) {
this.submitterId = submitterId;
}
public List<String> getTags() {
return tags;
}
public void setTags(List<String> tags) {
this.tags = tags;
}
@JsonProperty("ticket_form_id")
public Long getTicketFormId() {
return ticketFormId;
}
public void setTicketFormId(Long ticketFormId) {
this.ticketFormId = ticketFormId;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("Ticket");
sb.append("{assigneeId=").append(assigneeId);
sb.append(", id=").append(id);
sb.append(", url='").append(url).append('\'');
sb.append(", externalId='").append(externalId).append('\'');
sb.append(", type='").append(type).append('\'');
sb.append(", subject='").append(subject).append('\'');
sb.append(", description='").append(description).append('\'');
sb.append(", priority='").append(priority).append('\'');
sb.append(", status='").append(status).append('\'');
sb.append(", recipient='").append(recipient).append('\'');
sb.append(", requesterId=").append(requesterId);
sb.append(", submitterId=").append(submitterId);
sb.append(", organizationId=").append(organizationId);
sb.append(", groupId=").append(groupId);
sb.append(", collaboratorIds=").append(collaboratorIds);
sb.append(", forumTopicId=").append(forumTopicId);
sb.append(", problemId=").append(problemId);
sb.append(", hasIncidents=").append(hasIncidents);
sb.append(", dueAt=").append(dueAt);
sb.append(", tags=").append(tags);
sb.append(", via=").append(via);
sb.append(", customFields=").append(customFields);
sb.append(", satisfactionRating=").append(satisfactionRating);
sb.append(", sharingAgreementIds=").append(sharingAgreementIds);
sb.append(", followupIds=").append(followupIds);
sb.append(", ticketFormId=").append(ticketFormId);
sb.append(", brandId=").append(brandId);
sb.append(", createdAt=").append(createdAt);
sb.append(", updatedAt=").append(updatedAt);
sb.append('}');
return sb.toString();
}
public static class Requester {
private Integer localeId;
private String name;
private String email;
public Requester() {
}
public Requester(String email) {
this.email = email;
}
public Requester(String name, String email) {
this.name = name;
this.email = email;
}
public Requester(Integer localeId, String name, String email) {
this.localeId = localeId;
this.name = name;
this.email = email;
}
@JsonProperty("locale_id")
public Integer getLocaleId() {
return localeId;
}
public void setLocaleId(Integer localeId) {
this.localeId = localeId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("Requester");
sb.append("{localeId=").append(localeId);
sb.append(", name='").append(name).append('\'');
sb.append(", email='").append(email).append('\'');
sb.append('}');
return sb.toString();
}
}
}