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

export type ProposedBy = "admin" | "client";
export type ProposalStatus = "pending" | "accepted" | "rejected" | "countered";

export interface PriceProposalDoc {
  _id: string;
  orderId: mongoose.Types.ObjectId;
  proposedBy: ProposedBy;
  amount: number;
  note: string;
  status: ProposalStatus;
  createdAt: Date;
}

const priceProposalSchema = new Schema<PriceProposalDoc>(
  {
    orderId: { type: Schema.Types.ObjectId, ref: "Order", required: true, index: true },
    proposedBy: { type: String, enum: ["admin", "client"], required: true },
    amount: { type: Number, required: true, min: 0 },
    note: { type: String, trim: true, maxlength: 1000, default: "" },
    status: { type: String, enum: ["pending", "accepted", "rejected", "countered"], default: "pending" },
  },
  { timestamps: true }
);

export const PriceProposal =
  (models.PriceProposal as mongoose.Model<PriceProposalDoc>) ||
  model<PriceProposalDoc>("PriceProposal", priceProposalSchema);
