let Joi = require('joi');
const { User, userSchema } = require('../../models/admin/admin');
export {};
/*
We can add multiple message like this
const ValidationSchemas = Joi.object({    
    name: Joi.string()  
      .min(6)
      .required()
      .messages({
        'string.empty': 'Display name cannot be empty',
        'string.min': 'Min 6 characteers',
      })
      .optional(),
    email: Joi.string().min(6).required().email().message('Must be a valid email address'),
    password: Joi.string().required().min(6).message('Password is required!'),
  });
  */

const AddAdminJoiSchema = Joi.object().keys({
    id: Joi.string().allow(null, ''),
    email: Joi.string().email().required().label('Enter the Email id'),
    password: Joi.string().required().label('Enter the Password'),
    first_name : Joi.string(),
    last_name : Joi.string(),
    phone_number : Joi.string(),
    profile_pic: Joi.string().allow('', null),
    is_active: Joi.boolean()
})

const EditAdminJoiSchema = Joi.object().keys({
    id: Joi.string().required().label('Enter the id'),
    email: Joi.string().email().required().label('Enter the Email id'),
    password: Joi.string().required().label('Enter the Password'),
    first_name : Joi.string(),
    last_name : Joi.string(),
    phone_number : Joi.string(),
    profile_pic: Joi.string().allow('', null),
    is_active: Joi.boolean()
})

const loginJoiSchema = Joi.object().keys({
    email: Joi.string().email().required().label('Enter the Email id') ,
    password: Joi.string().required().label('Enter the Password') ,
    device_token: Joi.array().allow(null, '')
})
const ForgotPasswordJoiSchema = Joi.object().keys({
    email: Joi.string().email().required().label('Enter the Email id'),
})

const UpdatePasswordJoiSchema = Joi.object().keys({
    token : Joi.string().required().label('Enter the Token'),
    password: Joi.string().required().label('Enter the Password'),

})

const UpdateAdmin = Joi.object().keys({
    id : Joi.string().required().label('Enter the id'),
    email: Joi.string().email().default('admin@trigma.com'),
    first_name : Joi.string(),
    last_name : Joi.string(),
    phone_number : Joi.string(),
    profile_pic: Joi.string().allow('', null),

})

const ChangePassword = Joi.object().keys({
    id : Joi.string().required().label('Enter the id'),
    oldPassword : Joi.string().required().label('Enter the OldPassword'),
    Password: Joi.string().required().label('Enter the Password'),

})

const InfoJoiSchema = Joi.object().keys({
    id : Joi.string().required().label('Enter the id'),
})

const DeactivateUserListing = Joi.object().keys({
    first_name: Joi.string().max(10).allow(null, ''),
    last_name: Joi.string().max(10).allow(null, ''),
    user_role: Joi.string().allow(null, ''),
    email: Joi.string().allow(null, ''),
    phone: Joi.string().allow(null, ''),
    createdAt : Joi.string().allow(null, ''),
    updatedAt : Joi.string().allow(null, '')
})

const AdminListing = Joi.object().keys({
    first_name: Joi.string().max(10).allow(null, ''),
    last_name: Joi.string().max(10).allow(null, ''),
    email: Joi.string().allow(null, ''),
    createdAt : Joi.string().allow(null, ''),
    updatedAt : Joi.string().allow(null, ''),
    page : Joi.string().allow(null, ''),
    is_active:Joi.boolean().allow(null, ''),

})

const ChangeAdminStatus = Joi.object().keys({
    id : Joi.string().required().label('Enter Id'),
    status : Joi.boolean().required().label('Enter user status'),
})

const DeleteAdmin = Joi.object().keys({
    id : Joi.string().required().label('Enter Id'),
})

const multipleDeletedAdmin = Joi.object().keys({
    id: Joi.array().items(Joi.string())
})

const ChangeUserStatus = Joi.object().keys({
    id : Joi.string().required().label('Enter user Id'),
    status : Joi.boolean().required().label('Enter user status'),
})


const ChangeUserAccountStatus = Joi.object().keys({
    userId : Joi.string().required().label('Enter customer Id'),
    user_account_status : Joi.string().required().label('Enter customer user_account_status'),
  })
module.exports = {AddAdminJoiSchema,EditAdminJoiSchema,AdminListing,ChangeAdminStatus,DeleteAdmin,multipleDeletedAdmin,loginJoiSchema,ChangeUserStatus,UpdateAdmin,DeactivateUserListing,ChangePassword, ForgotPasswordJoiSchema,UpdatePasswordJoiSchema,InfoJoiSchema,ChangeUserAccountStatus}