// Rules for project label.
export const colorRules = (msg) => {
  return [
    v => !!v || msg.colorRequired
  ]
}

export const labelNameRules = (msg) => {
  return [
    v => !!v || msg.labelRequired,
    v => (v && v.length <= 30) || msg.labelLessThan30Chars
  ]
}

// Rules for project member.
export const userNameRules = (msg) => {
  return [
    v => !!v || msg.userNameRequired,
    v => (v && v.length <= 30) || msg.userNameLessThan30Chars
  ]
}

export const roleRules = (msg) => {
  return [
    v => !!v || msg.roleRequired
  ]
}

// Rules for a project.
export const projectNameRules = (msg) => {
  return [
    v => !!v || msg.projectNameRequired,
    v => (v && v.length <= 30) || msg.projectNameLessThan30Chars
  ]
}

export const descriptionRules = (msg) => {
  return [
    v => !!v || msg.descriptionRequired,
    v => (v && v.length <= 100) || msg.descriptionLessThan30Chars
  ]
}

export const projectTypeRules = (msg) => {
  return [
    v => !!v || msg.projectTypeRequired
  ]
}

// Rules for Document.
export const fileFormatRules = (msg) => {
  return [
    v => !!v || msg.fileFormatRequired
  ]
}

export const uploadFileRules = (msg) => {
  return [
    v => !!v || msg.fileRequired,
    v => !v || v.some(file => file.size < 100000000) || msg.fileLessThan1MB
  ]
}

export const uploadSingleFileRules = (msg) => {
  return [
    v => !!v || msg.fileRequired,
    v => !v || v.size < 1000000 || msg.fileLessThan1MB
  ]
}

// Rules for user.
export const passwordRules = (msg) => {
  return [
    v => !!v || msg.passwordRequired,
    v => (v && v.length <= 30) || msg.passwordLessThan30Chars
  ]
}

export const templateNameRules = () => {
  return [
    v => !!v || 'Name is required'
  ]
}