import { Request, Response, NextFunction } from 'express'
import { validate } from 'super-easy-validator'
import helpers from '../../utils/helpers'


async function checkId(req: Request, res: Response, next: NextFunction) {
	await helpers.runApi(res, () => {
		const rules = {
			id: 'mongoid'
		}

		const { errors } = validate(rules, req.params)
		if (errors) {
			return res.status(400).json({ message: errors[0] })
		}

		return next()
	})
}

async function postFeedback(req: Request, res: Response, next: NextFunction) {
	await helpers.runApi(res, () => {
		const paramRules = { id: 'mongoid' }
		const { errors: paramErrors } = validate(paramRules, req.params)
		if (paramErrors) {
			return res.status(400).json({ message: paramErrors[0] })
		}

		const bodyRules = { feedback: 'string|enums:good,ok,bad' }
		const { errors: bodyErrors } = validate(bodyRules, req.body)
		if (bodyErrors) {
			return res.status(400).json({ message: bodyErrors[0] })
		}

		return next()
	})
}

const validations = {
	checkId,
	postFeedback,
}

export default validations
