import mongoose, { Document, Schema } from 'mongoose';

export interface IWarrantyTicket extends Document {
  id: string;
  [key: string]: any;
}

const schema = new Schema<IWarrantyTicket>({
  id: { type: String, required: true, unique: true, index: true },
  customer: String,
  project: String,
  projectId: { type: Schema.Types.Mixed, index: true },
  device: String,
  serialNumber: String,
  sla: String,
  status: { type: String, default: 'Safe' },
  priority: { type: String, default: 'P4 - Low' },
  rmaCurrentStep: { type: Number, default: 0 },
  rmaStepNote: String,
  rmaSteps: [Schema.Types.Mixed],
  rmaStatus: { type: String, enum: ['received', 'warranty-check', 'diagnosed', 'submitted-to-manufacturer', 'waiting-manufacturer', 'replacement-ready', 'repaired', 'closed'], default: 'received' },
  rmaCode: String,
  manufacturerName: String,
  diagnosis: String,
  repairNotes: String,
  rejectionReason: String,
  replacementSerial: String,
  closureNotes: String,
  rmaHistory: [Schema.Types.Mixed],
  slaDeadline: Date,
  attachments: [Schema.Types.Mixed],
  workOrders: [Schema.Types.Mixed],
  assets: [Schema.Types.Mixed],
  rcaCause: String,
  rcaDescription: String,
  loanerInfo: String,
  manufacturerNote: String,
  rmaTrackingCode: String,
  fieldImages: [Schema.Types.Mixed],
  history: [Schema.Types.Mixed],
  csmIncomingRequestId: Schema.Types.Mixed,
  incomingRequestId: Schema.Types.Mixed,
}, { timestamps: true });

export const WarrantyTicket = mongoose.model<IWarrantyTicket>('WarrantyTicket', schema);
export default WarrantyTicket;