import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm';
import { PesVerifiedUsers } from './pes_verified_users.entity';
import { PesCampaign } from './pes-campaign.entity';

@Entity('pes_landing_pages')
export class PesLandingPage {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ type: 'varchar', length: 100, unique: true, name: 'page_id' })
  pageId: string;

  @Column({ type: 'varchar', length: 255 })
  name: string;

  @Column({ type: 'text', nullable: true })
  description: string;

  @Column({ type: 'text' , nullable: true , name: 'html_content' })
  htmlContent: string;

  @Column({ type: 'boolean', default: false, name: 'capture_credentials' })
  captureCredentials: boolean;

  @Column({ type: 'boolean', default: false , name: 'capture_passwords' })
  capturePasswords: boolean;

  @Column({ type: 'varchar', length: 255, nullable: true , name: 'redirect_url' })
  redirectUrl: string;

  @Column({ type: 'varchar', length: 255 , nullable: true , name:'verified_user_id' })
  verifiedUserId: string;

  @Column({ type: 'boolean', default: true , name: 'is_active' })
  isActive: boolean;

  @Column({ type: 'int', default: 0 , name: 'visit_count' })
  visitCount: number;

  @Column({ type: 'int', default: 0 , name: 'submission_count' })
  submissionCount: number;

  @CreateDateColumn({ type: 'timestamp', name: 'created_at' })
  createdAt: Date;

  @UpdateDateColumn({ type: 'timestamp', name: 'updated_at' })
  updatedAt: Date;

  // Relations
  @ManyToOne(() => PesVerifiedUsers, user => user.sendingProfiles)
  @JoinColumn({ name: 'user_id', referencedColumnName: 'id' })
  verifiedUser: PesVerifiedUsers;

  @OneToMany(() => PesCampaign, campaign => campaign.landingPage)
  campaigns: PesCampaign[];
}
