import {
  Entity, PrimaryGeneratedColumn, Column,
  ManyToOne, JoinColumn, CreateDateColumn
} from 'typeorm';
import { User } from '../../users/entities/user.entity';

export enum NotificationType {
  LEAVE_SUBMITTED = 'LEAVE_SUBMITTED',
  LEAVE_APPROVED  = 'LEAVE_APPROVED',
  LEAVE_REJECTED  = 'LEAVE_REJECTED',
  LEAVE_CANCELLED = 'LEAVE_CANCELLED',
  LEAVE_REMINDER  = 'LEAVE_REMINDER',
  ANNOUNCEMENT    = 'ANNOUNCEMENT',
}

@Entity('notifications')
export class Notification {
  @PrimaryGeneratedColumn({ unsigned: true, type: 'bigint' })
  id: number;

  @ManyToOne(() => User)
  @JoinColumn({ name: 'user_id' })
  user: User;

  @Column({ type: 'enum', enum: NotificationType })
  type: NotificationType;

  @Column({ type: 'text' })
  message: string;

  @Column({ length: 255, nullable: true })
  link: string;

  @Column({ default: false })
  is_read: boolean;

  @CreateDateColumn()
  created_at: Date;
}