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

// Kunden tragen ein, welchen Charakter/welches Konzept sie sich gerne mal
// shooten lassen würden — rein informativ fürs Team (z. B. für die eigene
// Kostüm-/Referenzbild-Planung vor Conventions), keine verbindliche
// Auftragsanfrage. Getrennt vom eigentlichen Auftrags-Anfrageformular, das
// weiterhin der einzige Weg ist, ein Shooting tatsächlich zu buchen.
export interface CharacterWishDoc {
  _id: string;
  clientId: mongoose.Types.ObjectId;
  character: string;
  fandom: string;
  note: string;
  // Vom Team im Admin gesetzt (offen | angenommen | abgelehnt | umgesetzt) —
  // Kund:innen sehen den Stand nur als Plakette auf ihrer Wunschliste.
  status: "offen" | "angenommen" | "abgelehnt" | "umgesetzt";
  createdAt: Date;
}

const characterWishSchema = new Schema<CharacterWishDoc>(
  {
    clientId: { type: Schema.Types.ObjectId, ref: "Client", required: true, index: true },
    character: { type: String, required: true, trim: true, maxlength: 150 },
    fandom: { type: String, default: "", trim: true, maxlength: 150 },
    note: { type: String, default: "", trim: true, maxlength: 500 },
    status: {
      type: String,
      enum: ["offen", "angenommen", "abgelehnt", "umgesetzt"],
      default: "offen",
    },
  },
  { timestamps: { createdAt: true, updatedAt: false } }
);

export const CharacterWish =
  (models.CharacterWish as mongoose.Model<CharacterWishDoc>) ||
  model<CharacterWishDoc>("CharacterWish", characterWishSchema);
