import { ClientCompanyContract } from "src/modules/client-contract/entities/client-contract.entity"
import { ClientsCompany } from "src/modules/clients-companies/entities/clients-company.entity"
import { Customer } from "src/modules/customers/entities/customer.entity"
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  ManyToOne,
  JoinColumn,
  CreateDateColumn,
  UpdateDateColumn,
  DeleteDateColumn,
  OneToMany,
} from "typeorm"

@Entity("client_company_contacts")
export class ClientCompanyContact {
  @PrimaryGeneratedColumn()
  id: number

  @Column({ type: "int" })
  client_company_id: number

  @Column({ type: "varchar" })
  first_name: string

  @Column({ type: "varchar" })
  last_name: string

  @Column({ type: "varchar", nullable: true })
  email: string

  @Column({ type: "varchar", nullable: true })
  country_code: string

  @Column({ type: "varchar", nullable: true })
  phone_number: string

  @Column({ type: "varchar", nullable: true })
  position: string

  @Column({ type: "varchar", default: "active" })
  status: string

  @CreateDateColumn({ type: "timestamp", default: () => "NOW()" })
  created_at: Date

  @UpdateDateColumn({ type: "timestamp", default: () => "NOW()" })
  updated_at: Date

  @DeleteDateColumn({ type: "timestamp", nullable: true })
  deleted_at: Date

  @ManyToOne(
    () => ClientsCompany,
    (client_company) => client_company.client_contacts,
  )
  @JoinColumn({ name: "client_company_id" })
  client_company: ClientsCompany

  @OneToMany(() => Customer, (customer) => customer.client_contact)
  customer: Customer[]

  @OneToMany(
    () => ClientCompanyContract,
    (contract) => contract.authorized_contact,
  )
  contracts: ClientCompanyContract[]
}
