package com.xjrsoft.module.oa.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author Zexy
 */
@Data
public class AddProclamationDto {

    private static final long serialVersionUID = 1L;

    /**
     * 类型（1-新闻2-公告）
     */
    @ApiModelProperty("类型（1-新闻2-公告）")
    @NotNull(message = "类型（1-新闻2-公告）！")
    @Min(value = 1, message = "类型必须大于0")
    private Integer typeId;


    @ApiModelProperty("状态 1=未发布 2=已发布 3=下架")
    @Min(value = 1, message = "类型必须大于0")
    private Integer status;

    /**
     * 完整标题
     */
    @ApiModelProperty("标题")
    @Length(min = 1, max = 250, message = "标题最多250个字符！")
    private String fullHead;

    /**
     * 标题颜色
     */
    @ApiModelProperty("标题颜色")
    @Length(min = 1, max = 50, message = "标题颜色最多50个字符！")
    private String fullHeadColor;

    /**
     * 发送部门
     */
    @ApiModelProperty("发送部门")
    private Long sendDeptId;

    /**
     * 发布时间
     */
    @ApiModelProperty("发布时间")
    private LocalDateTime releaseTime;

    /**
     * 紧急程度  1=一般 2=紧急
     */
    @ApiModelProperty("紧急程度  1=一般 2=紧急")
    private Integer emergent;

    /**
     * 接收人回复要求 1=必须回复 2=不允许回复 3=可以回复 (不强制要求)
     */
    @ApiModelProperty("接收人回复要求 1=必须回复 2=不允许回复 3=可以回复 (不强制要求)")
    private Integer openReply;

    /**
     * 发送范围 1=全校师生 2=全校教职工 3=指定人员
     */
    @ApiModelProperty("发送范围 1=全校师生 2=全校教职工 3=指定人员")
    private Integer sendRange;

    /**
     * 张贴结束时间
     */
    @ApiModelProperty("张贴结束时间")
    private LocalDateTime sendEndDate;

    /**
     * 新闻内容
     */
    @ApiModelProperty("新闻内容")
    @Length(min = 1, max = 1000, message = "新闻内容最多1000个字符！")
    private String newsContent;

    /**
     * 附件子表
     */
    @ApiModelProperty("附件子表")
    @TableField(exist = false)
    @EntityMapping(thisField = "id", joinField = "newsId")
    private List<AddNewsAppendixDto> appendixList;

    /**
     * 关系子表
     */
    @ApiModelProperty("关系子表")
    @TableField(exist = false)
    @EntityMapping(thisField = "id", joinField = "newsId")
    private List<AddNewsRelationDto> relationList;
}
