import { Column, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, } from "typeorm"; import { Company } from "./Company"; import { Partner } from "./Partner"; import { PartnerPlatformSectionPermission } from "./PartnerPlatformSectionPermission"; @Entity("partner_role", { comment: "Roles que se le pueden agregar a un usuario (partner) en la plataforma.", }) export class PartnerRole { @PrimaryGeneratedColumn({ type: "int", comment: "Número de identificación (ID) único de cada registro.", }) id: number; @Column({ length: 10, type: "varchar", unique: true, comment: "Código único del rol.", }) code: string; @ManyToOne(() => Company, (company) => company.roles_company, { onDelete: "CASCADE", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "company" }) company: Company | null; @Column({ length: 40, type: "varchar", comment: 'Id de la variable que se encuentra en los archivos "locale" para el multilenguaje.\r\n\r\nCabe recordar qué los usuarios también pueden crear roles, estos deben ir normal, sin id para el lenguaje.', }) name: string; @Column({ length: 200, nullable: true, default: null, type: "varchar", comment: 'Id de la variable que se encuentra en los archivos "locale" para el multilenguaje.\r\n\r\nCabe recordar qué los usuarios también pueden crear roles, estos deben ir normal, sin id para el lenguaje.', }) description: string | null; @Column({ default: 1, type: "int", width: 1, comment: "Estado del registro, es decir:\r\n1. Activo: Es visible en la plataforma.\r\n0. Inactivo: No será visible en la plataforma.", }) status: number; @ManyToMany( () => PartnerPlatformSectionPermission, (partnerPermission) => partnerPermission.roles_permissions ) @JoinTable({ name: "partner_role_permission", joinColumn: { name: "role", referencedColumnName: "id", }, inverseJoinColumn: { name: "permission", referencedColumnName: "id", }, }) roles_permissions: PartnerPlatformSectionPermission[]; @ManyToMany(() => Partner, (partner) => partner.partners_roles) @JoinTable({ name: "partner_assigned_role", joinColumn: { name: "role", referencedColumnName: "id", }, inverseJoinColumn: { name: "partner", referencedColumnName: "id", }, }) partners_roles: Partner[]; }