/**
 * @namespace Route
 * @property {module:Class} Class
 */
/** Class Resource Routes
 *  Routing the Controller Object through resource endpoints
 * @module Class
 * @requires express
 */
'use strict'
/**
 * express module
 * @const
 */
import express from 'express'
/**
 * passport module
 * @const
 */
import passport from 'passport'
/**
 * Class Controller Module
 * @const
 */
import Class from '../controllers/Class.Controller'
/**
 * Protected Route Middleware
 * @const
 */
const protect = passport.authenticate('jwt', {
	session: false
})
/**
 * Express router to mount user related functions on.
 * @type {object}
 * @const
 */
let router = express.Router()
/**
 * Class Controller Object
 * @type {object}
 * @const
 */
let cl = new Class()
/**
 * GET /class/
 * Auth Required
 * @name /class/
 * @function
 * @return {json} -Welcome Endpoint Msg.
 * @todo write comments
 */
router.get('/', protect, (req, res) => {
	res.json({
		'msg': 'Welcome to class endpoints'
	})
})
/**
 * POST /class/
 * Save chapter Endpoint
 * Auth Required
 * @name /chapter/
 * @function
 * @todo write comments
 */
router.post('/', protect, (req, res) => {
	cl.save(req, res)
})
/**
 * GET /class/:id
 * Get class by ID Endpoint
 * Auth Required
 * @name /class/:id
 * @function
 * @todo write comments
 */
router.get('/:id', protect, (req, res) => {
	cl.getById(req, res)
})
/**
 * PUT /class/:id
 * Update class by ID Endpoint
 * Auth Required
 * @name /class/:id
 * @function
 * @todo write comments
 */
router.put('/:id', protect, (req, res) => {
	cl.updateById(req, res)
})
/**
 * DELETE /class/:id
 * Remove class by ID Endpoint
 * Auth Required
 * @name /class/:id
 * @function
 * @todo write comments
 */
router.delete('/:id', protect, (req, res) => {
	cl.removeById(req, res)
})
/**
 * GET /class/teacher/:teacher_id
 * Get All the Classes for a Teacher ID Endpoint
 * Auth Required
 * @name /class/teacher/:teacher_id
 * @function
 * @todo write comments
 */
router.get('/teacher/:teacher_id', protect, (req, res) => {
	cl.teacherClasses(req, res)
})

export default router