import { Exclude } from "class-transformer"; import { Column, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany } from "typeorm"; import { Role } from "./role.entity"; import { UserGroup } from "./user-group.entity"; import { BaseEntity } from "../../../common/entities/base.entity"; import { UserAnnouncement } from "../../announcements/entities/user-announcement.entity"; import { ContactUs } from "../../contact-us/entities/contact-us.entity"; import { Criticism } from "../../criticisms/entities/criticism.entity"; import { DanakService } from "../../danak-services/entities/danak-service.entity"; import { UserSetting } from "../../settings/entities/user-setting.entity"; import { TicketMessage } from "../../tickets/entities/ticket-message.entity"; import { Ticket } from "../../tickets/entities/ticket.entity"; @Entity() export class User extends BaseEntity { @Column({ type: "varchar", length: 150, nullable: true }) email: string; @Column({ type: "varchar", length: 11, unique: true, nullable: false }) phone: string; @Column({ type: "varchar", length: 50, unique: true, nullable: true }) userName: string; @Exclude() @Column({ type: "varchar", length: 150 }) password: string; @Column({ type: "varchar", length: 150 }) firstName: string; @Column({ type: "varchar", length: 200 }) lastName: string; @Column({ type: "varchar", length: 12, nullable: true }) birthDate: string; @Column({ type: "varchar", length: 100, unique: true, nullable: false }) nationalCode: string; @ManyToOne(() => Role, { eager: true, onDelete: "RESTRICT", nullable: false }) role: Role; @OneToMany(() => Ticket, (ticket) => ticket.user) tickets: Ticket[]; @OneToMany(() => TicketMessage, (ticketMessage) => ticketMessage.author) ticketMessage: TicketMessage[]; @ManyToMany(() => UserGroup, (group) => group.users) groups: UserGroup[]; @OneToMany(() => Criticism, (criticism) => criticism.user) criticisms: Criticism[]; @OneToMany(() => ContactUs, (contactUs) => contactUs.user) contactUs: ContactUs[]; @ManyToMany(() => DanakService, (danakService) => danakService.users) @JoinTable() danakServices: DanakService[]; @OneToMany(() => UserAnnouncement, (userAnnouncement) => userAnnouncement.user) userAnnouncements: UserAnnouncement[]; @OneToMany(() => UserSetting, (settings) => settings.user, { nullable: false }) settings: UserSetting; }