import Joi from 'joi';
import { generateJoiValidation } from '@/shared/validations/generateJoiValidation';
import { Invoice } from '@/modules/invoice/invoice.model';
import { objectId } from '@/shared/validations/custom.validation';

export const createInvoice = () => ({
  body: generateJoiValidation(Invoice.schema),
});

export const updateInvoice = () => ({
  query: Joi.object().keys({
    id: Joi.string().custom(objectId).required(),
  }),
  body: generateJoiValidation(Invoice.schema, true),
});

export const getInvoices = {
  query: Joi.object().keys({
    clientName: Joi.string(),
    status: Joi.string().valid('paid', 'unpaid', 'overdue'),
    company: Joi.string().custom(objectId),
    sortBy: Joi.string(),
    search: Joi.string(),
    limit: Joi.number().integer().min(1),
    page: Joi.number().integer().min(-1),
    includeTimeStamps: Joi.boolean(),
    from: Joi.string(),
    to: Joi.string(),
  }),
};

export const getInvoiceById = {
  params: Joi.object().keys({
    id: Joi.string().custom(objectId).required(),
  }),
};

export const deleteInvoiceById = {
  params: Joi.object().keys({
    id: Joi.string().custom(objectId).required(),
  }),
};
