import { Schema, model } from 'mongoose';
import { toJSON, paginate } from '@/shared/utils/plugins';
import {
  IInvoiceSettingsDoc,
  IInvoiceSettingsModel,
} from '@/modules/InvoiceSettings/invoiceSettings.interface';

const invoiceSettingsSchema = new Schema<IInvoiceSettingsDoc>(
  {
    company: {
      type: Schema.Types.ObjectId,
      ref: 'Company',
      required: true,
      unique: true,
    },
    invoicePrefix: {
      type: String,
      trim: true,
    },
    startNumber: {
      type: String,
      trim: true,
    },
    termsAndConditions: {
      type: String,
    },
    createdBy: {
      type: Schema.Types.ObjectId,
      ref: 'User',
    },
    updatedBy: {
      type: Schema.Types.ObjectId,
      ref: 'User',
    },
  },
  {
    timestamps: true,
  },
);

invoiceSettingsSchema.plugin(toJSON);
invoiceSettingsSchema.plugin(paginate);

export const InvoiceSettings = model<
  IInvoiceSettingsDoc,
  IInvoiceSettingsModel
>('InvoiceSettings', invoiceSettingsSchema);
