43 lines
1.6 KiB
TypeScript
Executable File
43 lines
1.6 KiB
TypeScript
Executable File
import { Column, Entity, ManyToOne, OneToMany } from "typeorm";
|
|
|
|
import { TicketCategory } from "./ticket-category.entity";
|
|
import { TicketMessage } from "./ticket-message.entity";
|
|
import { BaseEntity } from "../../../common/entities/base.entity";
|
|
import { DanakService } from "../../danak-services/entities/danak-service.entity";
|
|
import { User } from "../../users/entities/user.entity";
|
|
import { TicketPriority } from "../enums/ticket-priority.enum";
|
|
import { TicketStatus } from "../enums/ticket-status.enum";
|
|
|
|
@Entity()
|
|
export class Ticket extends BaseEntity {
|
|
@Column({ type: "int", generated: "identity", insert: false })
|
|
numericId: number;
|
|
|
|
// @Column({ type: "varchar", length: 150, nullable: false })
|
|
// title: string;
|
|
|
|
@Column({ type: "varchar", length: 150, nullable: false })
|
|
subject: string;
|
|
|
|
@Column({ type: "enum", enum: TicketStatus, default: TicketStatus.PENDING })
|
|
status: TicketStatus;
|
|
|
|
@Column({ type: "enum", enum: TicketPriority, nullable: false })
|
|
priority: TicketPriority;
|
|
|
|
@ManyToOne(() => DanakService, (danakService) => danakService.tickets, { onDelete: "RESTRICT", nullable: true })
|
|
danakService: DanakService | null;
|
|
|
|
@ManyToOne(() => User, (user) => user.tickets, { nullable: true })
|
|
assignedTo: User;
|
|
|
|
@ManyToOne(() => User, (user) => user.tickets, { onDelete: "CASCADE", nullable: false })
|
|
user: User;
|
|
|
|
@ManyToOne(() => TicketCategory, (category) => category.tickets, { onDelete: "RESTRICT", nullable: false })
|
|
category: TicketCategory;
|
|
|
|
@OneToMany(() => TicketMessage, (message) => message.ticket, { cascade: true })
|
|
messages: TicketMessage[];
|
|
}
|