import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';

export enum CommissionType {
    PERCENT_OF_NET = 'PERCENT_OF_NET', // percentage of net premium (excl. GST)
    FLAT = 'FLAT'                      // fixed amount per policy
}

@Schema({
    timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' },
})
export class Product extends Document {
    @Prop({ type: String, required: true, trim: true })
    name: string;

    @Prop({ type: Types.ObjectId, ref: 'categories', required: true, index: true })
    category_id: Types.ObjectId;

    @Prop({ type: Types.ObjectId, ref: 'insurers', required: true, index: true })
    insurer_id: Types.ObjectId;

    @Prop({ type: Number, required: true, min: 0, max: 100 })
    gst_rate: number; // percent, set per product because it can differ by category

    @Prop({ type: String, enum: CommissionType, required: true })
    commission_type: CommissionType;

    @Prop({ type: Number, required: true, min: 0 })
    commission_value: number; // percent when PERCENT_OF_NET, rupees per policy when FLAT

    @Prop({ type: Boolean, default: true })
    is_active: boolean;

    @Prop({ type: Types.ObjectId, ref: 'users', default: null })
    created_by: Types.ObjectId;
}

export const ProductSchema = SchemaFactory.createForClass(Product);
ProductSchema.index({ insurer_id: 1, name: 1 }, { unique: true, collation: { locale: 'en', strength: 2 } });
