/**
 * ResiduoCatalogo Entity
 * Catálogo de tipos de residuos
 *
 * @module HSE
 * @table hse.residuos_catalogo
 * @ddl schemas/03-hse-schema-ddl.sql
 * @rf RF-MAA017-006
 */

import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  Index,
} from 'typeorm';

export type CategoriaResiduo = 'peligroso' | 'manejo_especial' | 'urbano';

@Entity({ schema: 'hse', name: 'residuos_catalogo' })
@Index(['codigo'], { unique: true })
export class ResiduoCatalogo {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ type: 'varchar', length: 20, unique: true })
  codigo: string;

  @Column({ type: 'varchar', length: 200 })
  nombre: string;

  @Column({
    type: 'enum',
    enum: ['peligroso', 'manejo_especial', 'urbano'],
  })
  categoria: CategoriaResiduo;

  @Column({ name: 'caracteristicas_cretib', type: 'varchar', length: 6, nullable: true })
  caracteristicasCretib: string;

  @Column({ name: 'norma_referencia', type: 'varchar', length: 50, nullable: true })
  normaReferencia: string;

  @Column({ name: 'manejo_requerido', type: 'text', nullable: true })
  manejoRequerido: string;

  @Column({ name: 'tiempo_max_almacen_dias', type: 'integer', nullable: true })
  tiempoMaxAlmacenDias: number;

  @Column({ name: 'requiere_manifiesto', type: 'boolean', default: false })
  requiereManifiesto: boolean;

  @Column({ type: 'boolean', default: true })
  activo: boolean;

  @CreateDateColumn({ name: 'created_at', type: 'timestamptz' })
  createdAt: Date;
}
