package dev.lions.unionflow.server.api.dto.notification;

import com.fasterxml.jackson.annotation.JsonInclude;
import jakarta.validation.constraints.*;

/**
 * DTO pour les préférences spécifiques à un canal de notification
 *
 * @author UnionFlow Team
 * @version 1.0
 * @since 2025-01-16
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PreferenceCanalNotificationDTO {

  /** Indique si ce canal est activé */
  private Boolean active;

  /** Niveau d'importance personnalisé (1-5) */
  @Min(value = 1, message = "L'importance doit être comprise entre 1 et 5")
  @Max(value = 5, message = "L'importance doit être comprise entre 1 et 5")
  private Integer importance;

  /** Son personnalisé pour ce canal */
  private String sonPersonnalise;

  /** Pattern de vibration personnalisé */
  private long[] patternVibration;

  /** Couleur LED personnalisée */
  private String couleurLED;

  /** Indique si le son est activé pour ce canal */
  private Boolean sonActive;

  /** Indique si la vibration est activée pour ce canal */
  private Boolean vibrationActive;

  /** Indique si la LED est activée pour ce canal */
  private Boolean ledActive;

  /** Indique si ce canal peut être désactivé par l'utilisateur */
  private Boolean peutEtreDesactive;

  // Constructeurs, getters et setters
  public PreferenceCanalNotificationDTO() {}

  public Boolean getActive() {
    return active;
  }

  public void setActive(Boolean active) {
    this.active = active;
  }

  public Integer getImportance() {
    return importance;
  }

  public void setImportance(Integer importance) {
    this.importance = importance;
  }

  public String getSonPersonnalise() {
    return sonPersonnalise;
  }

  public void setSonPersonnalise(String sonPersonnalise) {
    this.sonPersonnalise = sonPersonnalise;
  }

  public long[] getPatternVibration() {
    return patternVibration;
  }

  public void setPatternVibration(long[] patternVibration) {
    this.patternVibration = patternVibration;
  }

  public String getCouleurLED() {
    return couleurLED;
  }

  public void setCouleurLED(String couleurLED) {
    this.couleurLED = couleurLED;
  }

  public Boolean getSonActive() {
    return sonActive;
  }

  public void setSonActive(Boolean sonActive) {
    this.sonActive = sonActive;
  }

  public Boolean getVibrationActive() {
    return vibrationActive;
  }

  public void setVibrationActive(Boolean vibrationActive) {
    this.vibrationActive = vibrationActive;
  }

  public Boolean getLedActive() {
    return ledActive;
  }

  public void setLedActive(Boolean ledActive) {
    this.ledActive = ledActive;
  }

  public Boolean getPeutEtreDesactive() {
    return peutEtreDesactive;
  }

  public void setPeutEtreDesactive(Boolean peutEtreDesactive) {
    this.peutEtreDesactive = peutEtreDesactive;
  }
}
