import Joi from 'joi';

import { generateJoiValidation } from '@/shared/validations/generateJoiValidation';
import { Company } from '@/modules/company/company.model';
import { objectId } from '@/shared/validations/custom.validation';

export const createCompany = () => ({
  body: generateJoiValidation(Company.schema).keys({
    firstName: Joi.string().required(),
    lastName: Joi.string().required(),
    email: Joi.string().email().required(),
    phone: Joi.object().keys({
      dialCode: Joi.number().required(),
      number: Joi.number().required(),
    }),
  }),
});

export const updateCompany = () => ({
  query: Joi.object().keys({
    id: Joi.string().custom(objectId).required(),
  }),
  body: generateJoiValidation(Company.schema, true).keys({
    panNumber: Joi.string().allow(null).optional(),
    gstNumber: Joi.string().allow(null).optional(),
    logo: Joi.string().allow(null).optional(),
  }),
});

export const getCompanies = {
  query: Joi.object().keys({
    name: Joi.string(),
    role: Joi.string(),
    sortBy: Joi.string(),
    projectBy: Joi.string(),
    limit: Joi.number().integer().min(1),
    page: Joi.number().integer().min(-1),
    populate: Joi.string(),
    status: Joi.string(),
    companyType: Joi.string(),
    search: Joi.string(),
    state: Joi.string(),
  }),
};

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

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