import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { VirtualColumn } from '../../../utils/decorators/virtual-column.decorator';
import { BooleanTransformer } from '../../../utils/transformers/BooleanTransformer';

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

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

  @Column('varchar', { name: 'surName', nullable: true, length: 50 })
  surName: 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: 'userIp', nullable: true, length: 50 })
  userIp: string | null;

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

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

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

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

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

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

  /**
   * Virtual columns
   */
  @VirtualColumn('isAnswered', {
    transformer: new BooleanTransformer(),
  })
  isAnswered: boolean;

  @VirtualColumn('isReaded', {
    transformer: new BooleanTransformer(),
  })
  isReaded: boolean;
}
