import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, OneToMany } from 'typeorm';
import { PesCampaign } from './pes-campaign.entity';
import { PesEmailEvent } from './pes-email-event.entity';

@Entity('pes_email_tracking')
export class PesEmailTracking {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column()
  email: string;

  @Column({ name: 'campaign_tracking_id' })
  campaignTrackingId: string; // This links to PesCampaign.trackingId

  @Column({ nullable: true,name: 'service_message_id' })
  serviceMessageId: string;

  @Column({ default: false, name: 'is_opened' })
  isOpened: boolean;

  @Column({ type: 'timestamp', nullable: true, name: 'first_opened_at' })
  firstOpenedAt: Date;

  @Column({ default: 0, name: 'open_count' })
  openCount: number;

  @Column({ default: 0, name: 'click_count' })
  clickCount: number;

  @CreateDateColumn({ type: 'timestamp', name: 'sent_at' })
  sentAt: Date;

  @ManyToOne(() => PesCampaign, campaign => campaign.emailTrackings)
  @JoinColumn({ name: 'campaign_id', referencedColumnName: 'campaignId' })
  campaign: PesCampaign;

  @OneToMany(() => PesEmailEvent, event => event.emailTracking)
  events: PesEmailEvent[];
}
