import {
  Column, CreateDateColumn, DeleteDateColumn, Entity,
  PrimaryGeneratedColumn, UpdateDateColumn,
} from 'typeorm';

@Entity('minutes')
export class Minute {
  @PrimaryGeneratedColumn('uuid') id: string;

  @Column({ type: 'varchar', length: 40 }) minuteNumber: string;
  @Column({ type: 'varchar', length: 30, nullable: true }) fiscalYear: string | null;

  @Column({ type: 'varchar', length: 20, default: 'board' })
  meetingType: 'board' | 'agm' | 'egm' | 'special' | 'sub_committee';

  @Column({ type: 'date' }) meetingDate: string;
  @Column({ type: 'varchar', length: 20, nullable: true }) meetingDateBs: string | null;
  @Column({ type: 'varchar', length: 30, nullable: true }) meetingTime: string | null;
  @Column({ type: 'text', nullable: true }) venue: string | null;

  @Column({ type: 'varchar', length: 200, nullable: true }) chairperson: string | null;
  @Column({ type: 'varchar', length: 200, nullable: true }) secretary: string | null;
  @Column({ type: 'integer', nullable: true }) totalAttendees: number | null;

  @Column({ type: 'text', nullable: true }) attendees: string | null;
  @Column({ type: 'text', nullable: true }) agenda: string | null;
  @Column({ type: 'text', nullable: true }) decisions: string | null;
  @Column({ type: 'text', nullable: true }) nextMeetingDate: string | null;

  @Column({ type: 'varchar', length: 20, default: 'draft' })
  status: 'draft' | 'approved' | 'published';

  @Column({ type: 'varchar', length: 200, nullable: true }) approvedBy: string | null;
  @Column({ type: 'date', nullable: true }) approvedDate: string | null;

  @Column({ type: 'text', nullable: true }) remarks: string | null;
  @Column({ type: 'varchar', nullable: true }) officeId: string | null;
  @Column({ type: 'varchar', nullable: true }) createdById: string | null;
  @Column({ type: 'varchar', length: 200, nullable: true }) createdByName: string | null;

  @CreateDateColumn() createdAt: Date;
  @UpdateDateColumn() updatedAt: Date;
  @DeleteDateColumn() deletedAt: Date | null;
}
