package com.viettel.campaign.model;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

@Entity
@Table(name = "CAMPAIGN")
@Getter
@Setter
public class Campaign implements Serializable {

    @Id
    @NotNull
    @GeneratedValue(generator = "campaign_seq")
    @SequenceGenerator(name = "campaign_seq", sequenceName = "campaign_seq", allocationSize = 1)
    @Basic(optional = false)
    @Column(name = "CAMPAIGN_ID")
    private Long campaignId;
    @Column(name = "COMPANY_SITE_ID")
    private Long companySiteId;
    @Column(name = "CAMPAIGN_CODE")
    private String campaignCode;
    @Column(name = "CAMPAIGN_NAME")
    private String campaignName;
    @Column(name = "CHANEL")
    private Long chanel;
    @Column(name = "CONTENT")
    private String content;
    @Column(name = "CUSTOMER_NUMBER")
    private Long customerNumber;
    @Column(name = "TARGET")
    private String target;
    @Column(name = "STATUS")
    private Long status;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "START_TIME")
    private Date startTime;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "END_TIME")
    private Date endTime;
    @Column(name = "MAX_RECALL")
    private Integer maxRecall;
    @Column(name = "RECALL_TYPE")
    private Integer recallType;
    @Column(name = "RECALL_DURATION")
    private Integer recallDuration;
    @Column(name = "CREATE_BY")
    private String createBy;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "CREATE_TIME")
    private Date createTime;
    @Column(name = "UPDATE_BY")
    private String updateBy;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "UPDATE_TIME")
    private Date updateTime;
    @Column(name = "CAMPAIGN_TYPE")
    private String campaignType;
    @Column(name = "PRODUCT")
    private String product;
    @Column(name = "PROCESS_STATUS")
    private Integer processStatus;
    @Column(name = "DIAL_MODE")
    private Long dialMode;
    @Column(name = "DEPT_CODE")
    private String deptCode;
    @Column(name = "TIME_RANGE")
    private String timeRange;
    @Column(name = "DAY_OF_WEEK")
    private String dayOfWeek;
    @Column(name = "CURRENT_TIME_MODE")
    private Long currentTimeMode;
    @Column(name = "WRAPUP_TIME_CONNECT")
    private Long wrapupTimeConnect;
    @Column(name = "WRAPUP_TIME_DISCONNECT")
    private Long wrapupTimeDisconnect;
    @Column(name = "PREVIEW_TIME")
    private Long previewTime;
    @Column(name = "RATE_DIAL")
    private Long rateDial;
    @Column(name = "RATE_MISS")
    private Long rateMiss;
    @Column(name = "AVG_TIME_PROCESS")
    private Long avgTimeProcess;
    @Column(name = "IS_APPLY_CUST_LOCK")
    private Long isApplyCustLock;
    @Column(name = "TARGET_TYPE")
    private Long targetType;
    @Column(name = "IS_TARGET")
    private Long isTarget;
    @Column(name = "CAMPAIGN_IVR_CALLED_ID")
    private Long campaignIvrCalledId;
    @Column(name = "CONCURRENT_CALL")
    private Long concurrentCall;
    @Column(name = "CALL_OUT_TIME_IN_DAY")
    private String callOutTimeInDay;
    @Column(name = "MUSIC_LIST")
    private String musicList;
    @Column(name = "TIME_PLAY_MUSIC")
    private Integer timePlayMusic;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "CAMPAIGN_START")
    private Date campaignStart;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "CAMPAIGN_END")
    private Date campaignEnd;
    @Column(name = "TIME_WAIT_AGENT")
    private Integer timeWaitAgent;
    @Column(name = "QUEST_INDEX")
    private Long questIndex;

}
