import Joi from 'joi';

import { objectId } from '@/shared/validations/custom.validation';
import { generateJoiValidation } from '@/shared/utils';
import User from '@/modules/user/user.model';

export const createUser = {
  body: generateJoiValidation(User.schema),
};

export const getUsers = {
  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(),
    fields: Joi.string(),
    company: Joi.string(),
    search: Joi.string(),
    totalActiveUsers: Joi.boolean(),
  }),
};

export const getUser = {
  params: Joi.object().keys({
    userId: Joi.string().custom(objectId),
  }),
  query: Joi.object().keys({
    populate: Joi.string(),
    fields: Joi.string(),
  }),
};

export const updateUser = {
  params: Joi.object().keys({
    userId: Joi.required().custom(objectId),
  }),
  body: generateJoiValidation(User.schema, true),
};

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

export const resetPassword = {
  body: Joi.object().keys({
    oldPassword: Joi.string().required(),
    newPassword: Joi.string().required(),
  }),
};
