/* eslint-disable func-names */
/* eslint-disable no-param-reassign */
import { Schema, model, PaginateModel } from 'mongoose';
import paginate from 'mongoose-paginate-v2';
import { IAssetInfo } from '../utils/types';

const assetSchema = new Schema<IAssetInfo>(
  {
    company_id: {
      type: Schema.Types.ObjectId,
      required: true,
      ref: 'Company',
    },
    assetName: {
      type: String,
      required: true,
    },
    regNo: {
      type: String,
      required: true,
    },
    idNo: {
      type: String,
      required: true,
    },
    assetStatus: {
      type: Boolean,
      required: true,
    },
    assignedStatus: {
      type: Boolean,
      required: true,
    },
    assignee: {
      type: Schema.Types.ObjectId,
      ref: 'User',
    },
  },
  {
    timestamps: true,
    toJSON: {
      transform(_doc, ret) {
        delete ret.__v;
      },
    },
  },
);

assetSchema.plugin(paginate);
const Asset = model<IAssetInfo, PaginateModel<IAssetInfo>>(
  'Asset',
  assetSchema,
);

export = Asset;
