package com.caliverse.admin.domain.entity;

import java.time.LocalDateTime;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class InGame {
    @JsonProperty("row_num")
    private Long rowNum;
    private Long id;
    //채팅 타입
    @JsonProperty("message_type")
    private MESSAGETYPE messageType;
    //송출 일자
    @JsonProperty("send_dt")
    private LocalDateTime sendDt;
    //종료 일자
    @JsonProperty("end_dt")
    private LocalDateTime endDt;
    // 메시지
    @JsonProperty("game_message")
    private String gameMessage;
    // 송출 총횟수
    private Long total;
    // 송출 완료 횟수
    @JsonProperty("send_cnt")
    private Long sendCnt;
    // 반복 발송
    @JsonProperty("is_repeat")
    private boolean isRepeat;
    // 반복 타입
    @JsonProperty("repeat_type")
    private REPEATTYPE repeatType;
    // 반복 시간
    @JsonProperty("repeat_dt")
    private String repeatDt;
    // 반복 횟수
    @JsonProperty("repeat_cnt")
    private Long repeatCnt;
    // 등록자 이메일주소
    @JsonProperty("create_by")
    private String createBy;
    // 등록자 이름
    @JsonProperty("create_name")
    private String createName;
    // 전송 상태
    @JsonProperty("send_status")
    private SENDSTATUS sendStatus;

    // 수정자 이메일주소
    @JsonProperty("update_by")
    private String updateBy;
    // 수정자 이름
    @JsonProperty("update_name")
    private String updateName;
    @JsonProperty("create_dt")
    private LocalDateTime createDt;
    @JsonProperty("update_dt")
    private LocalDateTime updateDt;

    private String content;

    public boolean getIsRepeat(){
        return isRepeat;
    }

    // 메시지 타입
    public enum MESSAGETYPE{
        CHATTING,
        CHATTING_TOAST
        ;
    }
    // 반복 타입
    public enum REPEATTYPE{
        COUNT,
        DATE,
        TIME
        ;
    }

    public enum SENDSTATUS {
        WAIT,
        RUNNING,
        FINISH,
        FAIL
        ;
    }
}
