import { Invoice } from "src/modules/invoices/entities/invoice.entity"
import { ClientsCompany } from "src/modules/clients-companies/entities/clients-company.entity"
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  UpdateDateColumn,
  DeleteDateColumn,
  ManyToOne,
  JoinColumn,
} from "typeorm"

@Entity("payments")
export class Payment {
  @PrimaryGeneratedColumn()
  id: number

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

  @Column({ type: "int", nullable: true })
  client_id: number

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

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

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

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

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

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

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

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

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

  @ManyToOne(() => Invoice, (invoice) => invoice.payments)
  @JoinColumn({ name: "invoice_id" })
  invoice: Invoice

  @ManyToOne(() => ClientsCompany, (client) => client.invoices)
  @JoinColumn({ name: "client_id" })
  client_company: ClientsCompany
}
