package com.simuwang.base.pojo.dos;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.simuwang.base.common.enums.EmailCron;
import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
import com.simuwang.base.pojo.vo.MailboxInfoVO;
import lombok.Data;

import java.util.Date;

@Data
@TableName("mailbox_info")
public class MailboxInfoDO {
    /**
     * 主键Id
     */
    @TableId(value = "id")
    private Integer id;
//    /**
//     * 用户id
//     */
//    @TableField(value = "user_id")
//    private Integer userId;
    /**
     * 邮箱类型:1-QQ邮箱,2-腾讯企业邮箱,3-网易邮箱,4-新浪邮箱,99-其他
     */
    @TableField(value = "type")
    private Integer type;
    /**
     * 邮箱账号
     */
    @TableField(value = "email")
    private String email;
    /**
     * 邮箱密码
     */
    @TableField(value = "password")
    private String password;
    /**
     * 协议
     */
    @TableField(value = "protocol")
    private String protocol;
    /**
     * 收件服务器
     */
    @TableField(value = "server")
    private String server;
    /**
     * 端口
     */
    @TableField(value = "port")
    private String port;
    /**
     * cron表达式
     */
    @TableField(value = "cron")
    private String cron;
    /**
     * 是否开启，0-不开启，1-开启
     */
    @TableField(value = "open_status")
    private Integer openStatus;
    /**
     * 备注信息
     */
    @TableField(value = "description")
    private String description;
    /**
     * 记录的有效性；1-有效；0-无效；
     */
    @TableField(value = "isvalid")
    private Integer isvalid;
    /**
     * 创建者Id;第一次创建时与Creator值相同，修改时与修改人值相同
     */
    @TableField(value = "creatorid")
    private Integer creatorId;
    /**
     * 修改者Id;第一次创建时与Creator值相同，修改时与修改人值相同
     */
    @TableField(value = "updaterid")
    private Integer updaterId;
    /**
     * 创建时间,默认第一次创建的getdate()时间
     */
    @TableField(value = "createtime")
    private Date createTime;
    /**
     * 修改时间;第一次创建时与CreatTime值相同，修改时与修改时间相同
     */
    @TableField(value = "updatetime")
    private Date updateTime;


    public MailboxInfoTableVO toTableVo() {
        MailboxInfoTableVO vo =new MailboxInfoTableVO();
        vo.setCron(EmailCron.getEmailCronByCron(this.cron).getText());
        vo.setId(this.id);
        vo.setEmail(this.email);
        vo.setDescription(this.description);
        vo.setOpenStatus(this.openStatus);
        return vo;
    }

    public MailboxInfoVO toVo() {
        MailboxInfoVO vo =new MailboxInfoVO();
        vo.setCron(EmailCron.getEmailCronByCron(this.cron).getText());
        vo.setId(this.id);
        vo.setEmail(this.email);
        vo.setDescription(this.description);
        vo.setOpenStatus(this.openStatus);
        vo.setPort(this.port);
        vo.setServer(this.server);
        vo.setProtocol(this.protocol);
        vo.setType(this.type);
        vo.setPassword(this.password);
        return vo;
    }
}