/**
 * @flow
 */
import React from 'react';

const checkFuns = {
  userNum,
};

function userNum(param) {
  console.log('userNum', param);
  if (param < 1) {
    return '<2';
  }
  return '';
}

function checkParams(funName, params) {
  const msg = checkFuns[funName] ? checkFuns[funName](params[funName]) : '';
  return msg;
}

function getKeys(param) {
  const keys = []
  for (let i in param) {
    keys.push(i); //属性
    //arr.push(obj[i]); //值
  }
  return keys
}


export const validateParams = (fun, params, errCallback = () => {}) => {
  console.log('validateParams_in', getKeys(params) )
  if (params && getKeys(params)) {
    let msg = '';
    getKeys(params).some((element, index, self) => {
      msg = checkParams(element, params);

      return !!msg;
    });
    console.log('validateParams',msg)
    return msg ? () => errCallback(msg) : () => fun(params);
  }
  return () => fun(params);
}

export function validateAllParams(fun, params, errCallback = () => {}) {
  if (params && getKeys(params)) {
    const messages = [];
    getKeys(params).forEach((element) => {
      const msg = checkParams(element, params);
      if (msg) {
        messages.unshift(msg);
      }
    });
    return messages.length > 0 ? () => errCallback(messages) : fun;
  }
  return () => fun(params);
}

export default {
  validateParams,
  validateAllParams,
};
