package dev.lions.unionflow.server.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.UniqueConstraint;

/**
 * Entité persistée représentant un type d'organisation.
 *
 * <p>Cette entité permet de gérer dynamiquement le catalogue des types d'organisations
 * (codes, libellés, description, ordre d'affichage, activation/désactivation).
 *
 * <p>Le champ {@code code} doit rester synchronisé avec l'enum {@link
 * dev.lions.unionflow.server.api.enums.organisation.TypeOrganisation} pour les types
 * standards fournis par la plateforme.
 */
@Entity
@Table(
    name = "uf_type_organisation",
    uniqueConstraints = {
      @UniqueConstraint(
          name = "uk_type_organisation_code",
          columnNames = {"code"})
    })
public class TypeOrganisationEntity extends BaseEntity {

  @Column(name = "code", length = 50, nullable = false, unique = true)
  private String code;

  @Column(name = "libelle", length = 150, nullable = false)
  private String libelle;

  @Column(name = "description", length = 500)
  private String description;

  @Column(name = "ordre_affichage")
  private Integer ordreAffichage;

  public String getCode() {
    return code;
  }

  public void setCode(String code) {
    this.code = code;
  }

  public String getLibelle() {
    return libelle;
  }

  public void setLibelle(String libelle) {
    this.libelle = libelle;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public Integer getOrdreAffichage() {
    return ordreAffichage;
  }

  public void setOrdreAffichage(Integer ordreAffichage) {
    this.ordreAffichage = ordreAffichage;
  }
}


