package com.iqser.red.service.persistence.service.v1.api.shared.model;


import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Pattern;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "Object containing entry type with an array of r-g-b colors.")
public class CreateTypeValue {

    @Schema(description = "The nonnull entry type.")
    @NotEmpty
    @Pattern(regexp = "[A-Za-z0-9_-]*", message = "Technical Name ( type ) must match [A-Za-z0-9_-]")
    private String type;

    @Schema(description = "The value of color must be a correct hex color")
    private String hexColor;

    @Schema(description = "The value of color for recommendations must be a correct hex color")
    private String recommendationHexColor;

    @Schema(description = "The value of color for skipped must be a correct hex color")
    private String skippedHexColor;

    @Schema(description = "The rank of this dictionary, higher rank means higher importance.")
    private int rank;

    @Schema(description = "True if the type just for hint, not for redaction, default is false.")
    private boolean hint;

    @Schema(description = "The DossierTemplate Id for this type")
    private String dossierTemplateId;

    @Schema(description = "True if the entries in this type should be matched case insensitively, default is " + "false.")
    private boolean caseInsensitive;

    @Schema(description = "True if the type just for recommendations, not for redaction, default is false.")
    private boolean recommendation;

    @Schema(description = "The description of the dictionary type")
    private String description;

    @Schema(description = "If true the ui will add a action to add values to dictionary")
    private boolean addToDictionaryAction;

    @Schema(description = "Label of the type")
    private String label;

    @Schema(description = "If the Entity has a dictionary")
    private boolean hasDictionary;

    @Schema(description = "If the ui should hide entries of this type by default if they are skipped")
    private boolean autoHideSkipped;

    @Schema(description = "Flag to indicate the dictionary is on dossier level only")
    private boolean dossierDictionaryOnly;

}
