package com.caliverse.admin.dynamodb.domain.atrrib;

import com.caliverse.admin.domain.entity.EQuestType;
import com.caliverse.admin.dynamodb.entity.UgqQuestInfo;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.*;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;

import java.util.List;

@Setter
@ToString(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class QuestAttrib{
    @JsonProperty("quest_id")
    private Integer questId;
    @JsonProperty("quest_type")
    private EQuestType questType;
    @JsonProperty("ugq_quest_info")
    private UgqQuestInfo ugqQuestInfo;
    @JsonProperty("quest_assign_time")
    private String questAssignTime;
    @JsonProperty("current_task_num")
    private Integer currentTaskNum;
    @JsonProperty("task_start_time")
    private String taskStartTime;
    @JsonProperty("quest_complete_time")
    private String questCompleteTime;
    @JsonProperty("active_events")
    private List<String> activeEvents;
    @JsonProperty("has_counter")
    private Integer hasCounter;
    @JsonProperty("min_counter")
    private Integer minCounter;
    @JsonProperty("max_counter")
    private Integer maxCounter;
    @JsonProperty("current_counter")
    private Integer currentCounter;
    @JsonProperty("is_complete")
    private Integer isComplete;
    @JsonProperty("replaced_reward_groupId")
    private Integer replacedRewardGroupId;
    @JsonProperty("has_timer")
    private Integer hasTimer;
    @JsonProperty("timer_complete_time")
    private String timerCompleteTime;
    @JsonProperty("is_current_task_complete")
    private Integer isCurrentTaskComplete;
    @JsonProperty("completed_idx_strings")
    private List<String> completedIdxStrings;

    @DynamoDbAttribute("quest_id")
    public Integer getQuestId() {
        return questId;
    }

    @DynamoDbAttribute("quest_type")
    public EQuestType getQuestType() {
        return questType;
    }

    @DynamoDbAttribute("ugq_quest_info")
    public UgqQuestInfo getUgqQuestInfo() {
        return ugqQuestInfo;
    }

    @DynamoDbAttribute("quest_assign_time")
    public String getQuestAssignTime() {
        return questAssignTime;
    }

    @DynamoDbAttribute("current_task_num")
    public Integer getCurrentTaskNum() {
        return currentTaskNum;
    }

    @DynamoDbAttribute("task_start_time")
    public String getTaskStartTime() {
        return taskStartTime;
    }

    @DynamoDbAttribute("quest_complete_time")
    public String getQuestCompleteTime() {
        return questCompleteTime;
    }

    @DynamoDbAttribute("active_events")
    public List<String> getActiveEvents() {
        return activeEvents;
    }

    @DynamoDbAttribute("has_counter")
    public Integer getHasCounter() {
        return hasCounter;
    }

    @DynamoDbAttribute("min_counter")
    public Integer getMinCounter() {
        return minCounter;
    }

    @DynamoDbAttribute("max_counter")
    public Integer getMaxCounter() {
        return maxCounter;
    }

    @DynamoDbAttribute("current_counter")
    public Integer getCurrentCounter() {
        return currentCounter;
    }

    @DynamoDbAttribute("is_complete")
    public Integer getIsComplete() {
        return isComplete;
    }

    @DynamoDbAttribute("replaced_reward_groupId")
    public Integer getReplacedRewardGroupId() {
        return replacedRewardGroupId;
    }

    @DynamoDbAttribute("has_timer")
    public Integer getHasTimer() {
        return hasTimer;
    }

    @DynamoDbAttribute("timer_complete_time")
    public String getTimerCompleteTime() {
        return timerCompleteTime;
    }

    @DynamoDbAttribute("is_current_task_complete")
    public Integer getIsCurrentTaskComplete() {
        return isCurrentTaskComplete;
    }

    @DynamoDbAttribute("completed_idx_strings")
    public List<String> getCompletedIdxStrings() {
        return completedIdxStrings;
    }
}
