Files
lcbp3/backend/src/modules/rfa/entities/rfa-workflow-template-step.entity.ts
2025-11-24 08:15:15 +07:00

65 lines
1.6 KiB
TypeScript

import {
Entity,
PrimaryGeneratedColumn,
Column,
ManyToOne,
JoinColumn,
} from 'typeorm';
import { RfaWorkflowTemplate } from './rfa-workflow-template.entity';
import { Organization } from '../../project/entities/organization.entity';
import { Role } from '../../user/entities/role.entity';
// ✅ 1. สร้าง Enum เพื่อให้ Type Safe
export enum RfaActionType {
REVIEW = 'REVIEW',
APPROVE = 'APPROVE',
ACKNOWLEDGE = 'ACKNOWLEDGE',
}
@Entity('rfa_workflow_template_steps')
export class RfaWorkflowTemplateStep {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'template_id' })
templateId!: number;
@Column({ name: 'step_number' })
stepNumber!: number;
@Column({ name: 'organization_id' })
organizationId!: number;
@Column({ name: 'role_id', nullable: true })
roleId?: number;
@Column({
name: 'action_type',
type: 'enum',
enum: RfaActionType, // ✅ 2. ใช้ Enum ตรงนี้
nullable: true,
})
actionType?: RfaActionType; // ✅ 3. เปลี่ยน type จาก string เป็น Enum
@Column({ name: 'duration_days', nullable: true })
durationDays?: number;
@Column({ name: 'is_optional', default: false })
isOptional!: boolean;
// Relations
@ManyToOne(() => RfaWorkflowTemplate, (template) => template.steps, {
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'template_id' })
template!: RfaWorkflowTemplate;
@ManyToOne(() => Organization)
@JoinColumn({ name: 'organization_id' })
organization!: Organization;
@ManyToOne(() => Role)
@JoinColumn({ name: 'role_id' })
role?: Role;
}