
import mongoose, { Schema, Document } from 'mongoose';

export interface IComplianceDocDocument extends Document {
    name: string;
    type: string;
    issuingAuthority: string;
    expiryDate: Date;
    status: 'Valid' | 'Expiring Soon' | 'Expired';
    projectId: mongoose.Types.ObjectId;
    documentUrl?: string;
    createdAt: Date;
    updatedAt: Date;
}

const complianceDocSchema = new Schema<IComplianceDocDocument>(
    {
        name: { type: String, required: true },
        type: { type: String, required: true },
        issuingAuthority: { type: String, required: true },
        expiryDate: { type: Date, required: true },
        status: {
            type: String,
            enum: ['Valid', 'Expiring Soon', 'Expired'],
            default: 'Valid',
        },
        projectId: { type: Schema.Types.Mixed, ref: 'Project', required: true },
        documentUrl: { type: String },
    },
    {
        timestamps: true,
    }
);

// Indexes
complianceDocSchema.index({ projectId: 1 });
complianceDocSchema.index({ status: 1 });
complianceDocSchema.index({ expiryDate: 1 });

export const ComplianceDoc = mongoose.model<IComplianceDocDocument>('ComplianceDoc', complianceDocSchema);
