import {
  BaseEntity,
  Column,
  Entity,
  Index,
  JoinColumn,
  ManyToOne,
  PrimaryGeneratedColumn,
} from 'typeorm';
import { FreewayTollEntity } from './freeway-toll.entity';

@Index('fk_freeway_toll_bills_freeway_tolls1_idx', ['freewayTollId'], {})
@Entity('freeway_toll_bills', { schema: 'autotik' })
export class FreewayTollBillEntity extends BaseEntity {
  @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
  id: number;

  @Column('int', { name: 'freewayTollId' })
  freewayTollId: number;

  @Column('int', { name: 'amount', nullable: true })
  amount: number | null;

  @Column('int', { name: 'fee', nullable: true })
  fee: number | null;

  @Column('varchar', { name: 'freeway', nullable: true, length: 128 })
  freeway: string | null;

  @Column('int', { name: 'totalAmount', nullable: true })
  totalAmount: number | null;

  @Column('varchar', { name: 'paymentStatus', nullable: true, length: 45 })
  paymentStatus: string | null;

  @Column('varchar', {
    name: 'paymentStatusShowName',
    nullable: true,
    length: 45,
  })
  paymentStatusShowName: string | null;

  @Column('varchar', { name: 'issueDateTime', nullable: true, length: 45 })
  issueDateTime: string | null;

  @Column('varchar', { name: 'traverseDateTime', nullable: true, length: 45 })
  traverseDateTime: string | null;

  @Column('varchar', { name: 'uniqueId', nullable: true, length: 128 })
  uniqueId: string | null;

  /**
   * Relations
   */
  @ManyToOne(
    () => FreewayTollEntity,
    (freewayTolls) => freewayTolls.freewayTollBills,
    { onDelete: 'NO ACTION', onUpdate: 'NO ACTION' },
  )
  @JoinColumn([{ name: 'freewayTollId', referencedColumnName: 'id' }])
  freewayToll: FreewayTollEntity;
}
