import mongoose from "mongoose";

// Schema for property tax information
const propertyTaxInfoSchema = mongoose.Schema({
  propertytaxowned: { type: String },
  ownedyear: { type: String },
  taxassessed: { type: String },
  taxyear: { type: String },
});

// Schema for images
const imageSchema = mongoose.Schema({
  title: { type: String }, // Title of the image
  file: { type: String }, // Uploaded image URL
});

const propertySchema = mongoose.Schema({
  address: { type: String, required: true },
  city: { type: String, required: true },
  state: { type: String, required: true },
  county: { type: String, required: true },
  zip: { type: String, required: true },
  parcel: { type: String, required: true },
  subdivision: { type: String, required: true },
  legal: { type: String, required: true },
  costpersqft: { type: String, required: true },
  propertyType: { type: String, required: true },
  lotacres: { type: String, required: true },
  yearBuild: { type: String, required: true },
  totallivingsqft: { type: String, required: true },
  beds: { type: String, required: true },
  baths: { type: String, required: true },
  stories: { type: String, required: true },
  garage: { type: String, required: true },
  garagesqft: { type: String, required: true },
  poolspa: { type: String, required: true },
  fireplaces: { type: String, required: true },
  ac: { type: String, required: true },
  heating: { type: String, required: true },
  buildingstyle: { type: String, required: true },
  sitevacant: { type: String, required: true },
  extwall: { type: String, required: true },
  roofing: { type: String, required: true },
  totalSqft: { type: String, required: true },
  // Remove individual property tax fields and replace with array
  propertyTaxInfo: [propertyTaxInfoSchema], // Array of tax info objects
  images: [imageSchema],
  googleMapLink: { type: String },
  userfirstname: String,
  usermiddlename: String,
  userlastname: String,
  usertitle: String,
  creator: String,
  useremail: String,
  propertyId: String,
  userId: String,
  createdAt: {
    type: Date,
    default: new Date(),
  },
  publishedAt: {
    type: Date,
    default: new Date(),
  },
  currentYear: {
    type: Number,
    default: new Date().getFullYear(),
  },
  closeDateAtoB:{
    type: Date,
    required: true,
  },
  closeDateBtoC:{
    type: Date,
    required: true,
  },
  renovationRisk: {
    type: Number,
    required: true,
  },
  purchaseCost: {
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  costPaidAtoB: [
    {
      title: {
        type: String,
        required: true, // Set to true if this field is mandatory
      },
      price: {
        type: Number,
        required: true, // Set to true if this field is mandatory
      },
    },
  ],
  totalCostsAtoB: {
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  credits: [
    {
      title: {
        type: String,
        required: true, // Set to true if this field is mandatory
      },
      price: {
        type: Number,
        required: true, // Set to true if this field is mandatory
      },
    },
  ],
  totalcredits: {
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  totalCostsAtoBaftercredits: {
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  cashAdjustments: [
    {
      title: {
        type: String,
        required: true, // Set to true if this field is mandatory
      },
      price: {
        type: Number,
        required: true, // Set to true if this field is mandatory
      },
    },
  ],
  totalcashAdjustments:{
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  totalcashsurplus :{
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  incidentalCost: [
    {
      title: {
        type: String,
        required: true, // Set to true if this field is mandatory
      },
      price: {
        type: Number,
        required: true, // Set to true if this field is mandatory
      },
    },
  ],
  totalincidentalCost: {
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  utilMaintenance: [
    {
      title: {
        type: String,
        required: true, // Set to true if this field is mandatory
      },
      price: {
        type: Number,
        required: true, // Set to true if this field is mandatory
      },
    },
  ],
  totalutilMaintenanceCost: {
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  renovationCost: [
    {
      title: {
        type: String,
        required: true, // Set to true if this field is mandatory
      },
      price: {
        type: Number,
        required: true, // Set to true if this field is mandatory
      },
    },
  ],
  totalrenovationCost:{
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  costsAfterPropertyAcquisition:{
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
  sellpricebtoc:{
    type: Number,
    required: true, // Set to true if this field is mandatory
  },
});

const PropertyModal = mongoose.model("property", propertySchema);

export default PropertyModal;
