package ctbrec.ui.news;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.List;

import com.squareup.moshi.Json;

public class Status {

    @Json(name = "pinned")
    private Boolean pinned;
    @Json(name = "in_reply_to_id")
    private Object inReplyToId;
    @Json(name = "favourites_count")
    private Integer favouritesCount;
    @Json(name = "media_attachments")
    private List<Object> mediaAttachments = null;
    @Json(name = "created_at")
    private String createdAt;
    @Json(name = "replies_count")
    private Integer repliesCount;
    @Json(name = "language")
    private String language;
    @Json(name = "in_reply_to_account_id")
    private Object inReplyToAccountId;
    @Json(name = "content")
    private String content;
    @Json(name = "reblog")
    private Object reblog;
    @Json(name = "spoiler_text")
    private String spoilerText;
    @Json(name = "id")
    private String id;
    @Json(name = "reblogged")
    private Boolean reblogged;
    @Json(name = "muted")
    private Boolean muted;
    @Json(name = "emojis")
    private List<Object> emojis = null;
    @Json(name = "reblogs_count")
    private Integer reblogsCount;
    @Json(name = "visibility")
    private String visibility;
    @Json(name = "sensitive")
    private Boolean sensitive;
    @Json(name = "uri")
    private String uri;
    @Json(name = "url")
    private String url;
    @Json(name = "tags")
    private List<Object> tags = null;
    @Json(name = "application")
    private Object application;
    @Json(name = "favourited")
    private Boolean favourited;
    @Json(name = "mentions")
    private List<Object> mentions = null;
    @Json(name = "account")
    private Account account;
    @Json(name = "card")
    private Object card;

    public Boolean getPinned() {
        return pinned;
    }

    public void setPinned(Boolean pinned) {
        this.pinned = pinned;
    }

    public Object getInReplyToId() {
        return inReplyToId;
    }

    public void setInReplyToId(Object inReplyToId) {
        this.inReplyToId = inReplyToId;
    }

    public Integer getFavouritesCount() {
        return favouritesCount;
    }

    public void setFavouritesCount(Integer favouritesCount) {
        this.favouritesCount = favouritesCount;
    }

    public List<Object> getMediaAttachments() {
        return mediaAttachments;
    }

    public void setMediaAttachments(List<Object> mediaAttachments) {
        this.mediaAttachments = mediaAttachments;
    }

    public String getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(String createdAt) {
        this.createdAt = createdAt;
    }

    public Integer getRepliesCount() {
        return repliesCount;
    }

    public void setRepliesCount(Integer repliesCount) {
        this.repliesCount = repliesCount;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public Object getInReplyToAccountId() {
        return inReplyToAccountId;
    }

    public void setInReplyToAccountId(Object inReplyToAccountId) {
        this.inReplyToAccountId = inReplyToAccountId;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Object getReblog() {
        return reblog;
    }

    public void setReblog(Object reblog) {
        this.reblog = reblog;
    }

    public String getSpoilerText() {
        return spoilerText;
    }

    public void setSpoilerText(String spoilerText) {
        this.spoilerText = spoilerText;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Boolean getReblogged() {
        return reblogged;
    }

    public void setReblogged(Boolean reblogged) {
        this.reblogged = reblogged;
    }

    public Boolean getMuted() {
        return muted;
    }

    public void setMuted(Boolean muted) {
        this.muted = muted;
    }

    public List<Object> getEmojis() {
        return emojis;
    }

    public void setEmojis(List<Object> emojis) {
        this.emojis = emojis;
    }

    public Integer getReblogsCount() {
        return reblogsCount;
    }

    public void setReblogsCount(Integer reblogsCount) {
        this.reblogsCount = reblogsCount;
    }

    public String getVisibility() {
        return visibility;
    }

    public void setVisibility(String visibility) {
        this.visibility = visibility;
    }

    public Boolean getSensitive() {
        return sensitive;
    }

    public void setSensitive(Boolean sensitive) {
        this.sensitive = sensitive;
    }

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public List<Object> getTags() {
        return tags;
    }

    public void setTags(List<Object> tags) {
        this.tags = tags;
    }

    public Object getApplication() {
        return application;
    }

    public void setApplication(Object application) {
        this.application = application;
    }

    public Boolean getFavourited() {
        return favourited;
    }

    public void setFavourited(Boolean favourited) {
        this.favourited = favourited;
    }

    public List<Object> getMentions() {
        return mentions;
    }

    public void setMentions(List<Object> mentions) {
        this.mentions = mentions;
    }

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public Object getCard() {
        return card;
    }

    public void setCard(Object card) {
        this.card = card;
    }

    public ZonedDateTime getCreationTime() {
        String timestamp = getCreatedAt();
        Instant instant = Instant.parse(timestamp);
        ZonedDateTime time = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
        return time;
    }
}
