import { BooleanTransformer } from 'src/utils/transformers/BooleanTransformer';
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity('siteinfos')
export class SiteInfoEntity extends BaseEntity {
  @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
  id: number;

  @Column('char', { name: 'userId', nullable: true, length: 36 })
  userId: string | null;

  @Column('text', { name: 'about', nullable: true })
  about: string | null;

  @Column('text', { name: 'messageHome', nullable: true })
  messageHome: string | null;

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

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

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

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

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

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

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

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

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

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

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

  @Column('tinyint', {
    name: 'saturdayServiceClosed',
    nullable: true,
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  saturdayServiceClosed: boolean | null;

  @Column('tinyint', {
    name: 'sundayServiceClosed',
    nullable: true,
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  sundayServiceClosed: boolean | null;

  @Column('tinyint', {
    name: 'mondayServiceClosed',
    nullable: true,
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  mondayServiceClosed: boolean | null;

  @Column('tinyint', {
    name: 'tuesdayServiceClosed',
    nullable: true,
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  tuesdayServiceClosed: boolean | null;

  @Column('tinyint', {
    name: 'wednesdayServiceClosed',
    nullable: true,
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  wednesdayServiceClosed: boolean | null;

  @Column('tinyint', {
    name: 'thursdayServiceClosed',
    nullable: true,
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  thursdayServiceClosed: boolean | null;

  @Column('tinyint', {
    name: 'fridayServiceClosed',
    nullable: true,
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  fridayServiceClosed: boolean | null;

  @Column('text', { name: 'messageBeforeOrder', nullable: true })
  messageBeforeOrder: string | null;

  @Column('int', { name: 'minOrder', default: () => "'300000'" })
  minOrder: number;

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

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

  @Column('int', { name: 'professionalTechnician', default: () => "'0'" })
  professionalTechnician: number;

  @Column('int', { name: 'maxNumberServiceInTime', default: () => "'0'" })
  maxNumberServiceInTime: number;

  @Column('int', { name: 'servicePerformed', default: () => "'0'" })
  servicePerformed: number;

  @Column('int', { name: 'activeCustomer', default: () => "'0'" })
  activeCustomer: number;

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

  @Column('text', { name: 'ruleOilGovernment', nullable: true })
  ruleOilGovernment: string | null;

  @Column('int', {
    name: 'drivingOffenseInquiryBasicAmount',
    default: () => "'0'",
  })
  drivingOffenseInquiryBasicAmount: number;

  @Column('int', {
    name: 'drivingOffenseInquiryAdvancedAmount',
    default: () => "'0'",
  })
  drivingOffenseInquiryAdvancedAmount: number;

  @Column('int', {
    name: 'negativeScoreInquiryBasicAmount',
    default: () => "'0'",
  })
  negativeScoreInquiryBasicAmount: number;

  @Column('int', {
    name: 'negativeScoreInquiryAdvancedAmount',
    default: () => "'0'",
  })
  negativeScoreInquiryAdvancedAmount: number;

  @Column('int', { name: 'freewayTollInquiryAmount', default: () => "'0'" })
  freewayTollInquiryAmount: number;

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

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

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

  @Column('datetime', { name: 'createdAt' })
  createdAt: Date;

  @Column('datetime', { name: 'updatedAt' })
  updatedAt: Date;
}
