import mongoose, { Schema, models, model } from "mongoose";

// Eigenständiges Kombi-/Paket-Angebot — bewusst NICHT als Kombination
// bestehender Service/PriceTier-Datensätze modelliert (das würde bei
// Preisänderungen an den Einzelangeboten unerwartet den Paketpreis
// verschieben), sondern als eigener, admin-gepflegter Preis mit Freitext-
// Beschreibung, was enthalten ist. compareAtPrice ist optional und rein für
// die "Du sparst X"-Anzeige gedacht.
export interface BundleDoc {
  _id: string;
  title: string;
  titleEn: string;
  description: string;
  descriptionEn: string;
  price: number;
  compareAtPrice: number;
  active: boolean;
  sortOrder: number;
  createdAt: Date;
  updatedAt: Date;
}

const bundleSchema = new Schema<BundleDoc>(
  {
    title: { type: String, required: true, trim: true, maxlength: 150 },
    titleEn: { type: String, default: "", trim: true, maxlength: 150 },
    description: { type: String, default: "", trim: true, maxlength: 1000 },
    descriptionEn: { type: String, default: "", trim: true, maxlength: 1000 },
    price: { type: Number, required: true, min: 0 },
    compareAtPrice: { type: Number, default: 0, min: 0 },
    active: { type: Boolean, default: true },
    sortOrder: { type: Number, default: 0 },
  },
  { timestamps: true }
);

export const Bundle = (models.Bundle as mongoose.Model<BundleDoc>) || model<BundleDoc>("Bundle", bundleSchema);
