package com.hongyegroup.cpt_newsfeed.bean;

import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.google.gson.annotations.SerializedName;
import com.guadou.cs_cptservices.YYConstants;
import com.guadou.ninegrid.ImageInfo;

import java.io.Serializable;
import java.util.List;

/**
 * 朋友圈展示每一个动态的bean对象
 * 分为两种 一种为动态 一种为投票
 */
public class NewsFeedAdatperBean implements Serializable, MultiItemEntity {

    /* 动态 */
    @SerializedName("id")
    public String id;               //当前newsFeed的服务器id

    @SerializedName("type")
    public String type;                //当前newsFeed的类型 content是动态  poll是投票  video是视频模式

    @SerializedName("group_id")
    public String group_id;            //是否是圈子内的消息-圈子Id

    @SerializedName("group_name")
    public String group_name;       //圈子的名字

    @SerializedName("topics")
    public List<TopicBean> topics;           //相关的话题集合

    @SerializedName("avatar")
    public String avatar;           //当前newsFeed的发布者头像

    @SerializedName("publish_member_id")
    public String member_id;         //发布者的Id

    @SerializedName("publish_by")
    public String username;         //当前newsFeed的发布者姓名  如果为空展示YY Part Time Jobs

    @SerializedName("likes_count")
    public int likeNum;                    //当前newsFeed的点赞数量

    @SerializedName("likes")
    public List<LikeBean> likes;       //用于判断是否点赞

    @SerializedName("comments_count")
    public int commentNum;                 //当前newsFeed的评论数量

    @SerializedName("share_count")
    public int share_count;                 //当前newsFeed的分享数量

    public String follow;          //判断是否关注

    public int publish_fans_count;   //这个News的发布者的粉丝数量

    /* 投票 */
    @SerializedName("description")
    public String contentDesc = "";          //动态和投票的内容

    @SerializedName("question")
    public String ballotQuestion;        //投票的问题

    @SerializedName("poll_type")
    public String ballotOptionType;      //投票文本的类型是图片还是文本 Image

    @SerializedName("resources")
    public List<OptionBean> resources;  //动态的两种type的资源都在这里

    public int resource_type;   //resource的类型,1是默认的 2是视频


    // ================== 自定义属性 begin ↓ ======================

    public boolean myIsContentExpand;        //记录动态类型->当前newsFeed的内容是否展开了,默认为false（非服务器数据->列表是否展开了?）
    public boolean myIsMyOptionSelected;     //记录投票类型->是否已经选择了 。需要判断 如果votes的length全部为0 就没有选择
    public int myPollSelectedIndex = -1;    //已经选择的索引，默认没选择为-1
    public List<ImageInfo> myNewsResources;  //动态的资源
    public List<ImageInfo> myPollImages;      //投票的图片资源


    //    public List<String> myPoolTexts;       //投票的文字资源
//    public boolean isNewFollow = false;           //自定义的属性->是否是刚刚新关注的

    // ================== 自定义属性 end ↑ ======================

    //多类型布局
    @Override
    public int getItemType() {
        if (type.equals("Video")) {
            return YYConstants.NEWS_FEED_TYPE_VIDEO;
        } else if (type.equals("poll")) {
            return YYConstants.NEWS_FEED_TYPE_BALLOT;
        } else {
            return YYConstants.NEWS_FEED_TYPE_NEWS;
        }
    }


    //每一个投票选项的数据
    public static class OptionBean implements Serializable {
        @SerializedName("id")
        public String optionId;
        @SerializedName("text")
        public String textContent;
        @SerializedName("image")
        public String imgurl;
        @SerializedName("votes")
        public List<Object> votes;   //判断当前用户是否投票了
        @SerializedName("votes_count")
        public int votes_count;   //当前投票的总数量
    }

    @SerializedName("created_at")
    public String publishDate;   //不同type共有的发布时间

    public String micro_at;     //时间戳


    public static class LikeBean implements Serializable {
        public String likeable_type;
        public int emoticon_id = 1;

    }

    public static class TopicBean implements Serializable {
        public String topic_id;
        public String topic_name;
    }

}
