package com.fs.course.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 重粉看课历史 - 综合信息VO
 */
@Data
public class RepeatCourseHistoryVO {

    /** 客户名称 */
    private String name;
    /** 客户头像 */
    private String avatar;
    /** 备注 */
    private String remark;
    /** 重粉状态 0正常 1重粉 */
    private Integer userRepeat;

    /** 客户企微发课看过的项目列表（send_type=2；等价项目如百膳食养/安康食养分别展示，重粉项目 isRepeat=1） */
    private List<RepeatProjectVO> projectList;

    /** 关联销售列表 */
    private List<RelatedSalesVO> salesList;

    /** 课程学习进度列表 */
    private List<CourseProgressVO> courseList;

    /**
     * 客户企微发课看过的项目（含等价项目分项展示）
     */
    @Data
    public static class RepeatProjectVO {
        /** 项目ID */
        private Long projectId;
        /** 项目名称 */
        private String projectName;
        /** 是否该项目下重粉 0否 1是 */
        private Integer isRepeat;
    }

    /**
     * 关联销售信息
     */
    @Data
    public static class RelatedSalesVO {
        /** 企微用户名（销售名） */
        private String qwUserName;
        /** 所属企微主体名称 */
        private String corpName;
        /** 添加时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date addTime;
        /** 状态 0正常 1员工离职待接替 2正在接替 3流失 4删除 */
        private Integer status;
        /** 当前用户是否有权查看该主体信息 */
        private Boolean hasPermission;
    }

    /**
     * 课程学习进度
     */
    @Data
    public static class CourseProgressVO {
        /** 课程ID */
        private Long courseId;
        /** 课程名称 */
        private String courseName;
        /** 课程所属项目ID */
        private Integer projectId;
        /** 课程总节数 */
        private Integer totalCount;
        /** 已学习节数（有看课记录的小节数） */
        private Integer watchedCount;
        /** 完课百分比 */
        private Integer percentage;
        /** 最新学习小节名称 */
        private String latestSection;
        /** 最新学习时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date latestTime;
        /** 是否已完课 */
        private Boolean finished;
        /** 发送课程的销售企微名 */
        private String qwUserName;
        /** 发送课程的企微主体名 */
        private String corpName;
        /** 当前用户是否有权查看该主体信息 */
        private Boolean hasPermission;
    }
}
