import {
    Entity,
    PrimaryGeneratedColumn,
    Column,
    CreateDateColumn,
    ManyToOne,
    JoinColumn,
    Index,
} from 'typeorm';
import { Users } from './users.entity';

export enum WhatsAppRegistrationStatus {
    REGISTERED = 'registered',
    NON_REGISTERED = 'non_registered',
}

export enum WhatsAppMessageDirection {
    INBOUND = 'inbound',
    OUTBOUND = 'outbound',
}

@Entity('whatsapp_messages')
export class WhatsAppMessage {
    @PrimaryGeneratedColumn('uuid')
    id: string;

    @Index({ unique: true })
    @Column({ nullable: true })
    whatsapp_message_id: string;

    @Index()
    @Column()
    phone_number: string;

    @ManyToOne(() => Users, { nullable: true, onDelete: 'SET NULL' })
    @JoinColumn({ name: 'user_id' })
    user: Users;

    @Column({
        type: 'enum',
        enum: WhatsAppRegistrationStatus,
    })
    registration_status: WhatsAppRegistrationStatus;

    @Column({ nullable: true })
    message_type: string;

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

    @Column({ nullable: true })
    customer_name: string;

    @Column({
        type: 'enum',
        enum: WhatsAppMessageDirection,
        default: WhatsAppMessageDirection.INBOUND,
    })
    direction: WhatsAppMessageDirection;

    @Column({ default: false })
    is_auto_reply: boolean;

    @Column({ type: 'jsonb', nullable: true })
    raw_payload: Record<string, any>;

    @CreateDateColumn()
    created_at: Date;
}
