import { Request, Response } from 'express'
import { AppUserDao } from '../../dao/_index'
import { body, validationResult } from 'express-validator'


const createUserValidationRules = [
  body('pwd', 'Password is required').notEmpty(),
  body('email', 'Email is required').notEmpty(),
  body('email', 'A valid email is required').isEmail()
]

const loginValidationRules = [
  body('pwd', 'Password is required').notEmpty(),
  body('email', 'Email is required').notEmpty(),
  body('email', 'A valid email is required').isEmail()
]

export function getValidationRules(method) {
  switch (method) {
    case 'CreateUser': {
      return createUserValidationRules
    }
    case 'Login': {
      return loginValidationRules
    }
  }
}

export function createUser(req: Request, res: Response) {
  let errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(400).json({ errors: errors.array() });
  }

  return AppUserDao.createUserDao(req.body).then(user => res.json(user))
}

export function login(req: Request, res: Response) {
  let errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(400).json({ errors: errors.array() });
  }

  return AppUserDao.login(req.body).then(user => res.json(user))
}