import { Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, } from "typeorm"; import { Local } from "./Local"; import { jsonTransformer } from "../transformers/jsonTransformer"; import { Partner } from "./Partner"; import { Master } from "./Master"; @Entity({ comment: "Tabla creada para guardar las solicitudes de cambios de los locales.", name: "local_change", }) export class LocalChange { @PrimaryGeneratedColumn({ type: "int", comment: "ID único de cada registro.", }) id: number; @ManyToOne(() => Local, (local) => local.locals_changes, { onDelete: "CASCADE", onUpdate: "NO ACTION", }) @JoinColumn({ name: "local" }) local: Local; @Column({ type: "json", // transformer: jsonTransformer, comment: "Nuevos cambios, la información se guarda como JSON.", }) changes: any | null; @Column({ type: "datetime", default: () => "CURRENT_TIMESTAMP", comment: "Fecha de creación del registro.", }) created: Date; @ManyToOne(() => Partner, (partner) => partner.local_changes, { onDelete: "CASCADE", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "created_by" }) created_by: Partner | null; @ManyToOne(() => Master, (master) => master.local_changes, { onDelete: "CASCADE", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "assigned_to" }) assigned_to: Master | null; @Column({ type: "int", width: 1, comment: "Operación que se está realizando en los cambios:\n1. Creación del local.\n2: Edición del local.", }) operation_type: number; @Column({ type: "varchar", length: 400, nullable: true, default: null, comment: "Comentarios del registro.", }) comments: string | null; @Column({ type: "int", width: 1, comment: "Estado en el que se encuentra los cambios realizados.\n1: Pendiente de revisión: Cuando el usuario 'partner' crea los cambios.\n2: Aprobado: Cuando el usuario 'master' - 'IA' aprueba los cambios que el 'partner' realizó.\n3: Rechazado: Cuando el usuario 'master' - 'IA' rechaza los cambios por alguna razón.\n4: Cambios descartados: Cuando el usuario 'partner' descarta los cambios, si 'operation_type' es 1 (creación), entonces el status y visible en la tabla 'local' deberían quedar en 0, eso quiere decir que el local que se creó se eliminó.", }) status: number; }