var express 			= require('express');
var router 				= express.Router();
var session 			= require('express-session');
var admin_controller 	= require('../controllers/adminController');
var Category 			= require('../models/category');
var Parrot 				= require('../models/parrot');


router.use('/', function(req, res, next) {
	Category.fetchAll(function (err, categories) {
		req.categories = categories;
		next();
	});
})
router.get('/', function(req, res, next) {
	res.render('index', {layout:'clientLayout', categories: req.categories});
});

router.get('/login', function(req, res, next) {
  res.render('login', {layout: false});
});

router.post('/login', admin_controller.login_action);

router.get('/search/:searchString', function(req, res, next) {
	let search = req.params.searchString;
	Parrot.search(search,function(err, parrots) {
		if (parrots && parrots.length > 0) {
			res.render('clientSearch', {layout: 'clientLayout', search: search, parrots: parrots, categories: req.categories});
		} else {
			res.render('clientSearch', {layout: 'clientLayout', search: search, error: "There are no parrots matching your search", categories: req.categories});
		}
		
	})
});

router.use('/:url', function(req, res, next) {
	Category.findOne({'url':req.params.url, 'isDeleted': false}).populate({
    path: 'parrots',
    match: { 'isDeleted': false },
  }).exec(function(err, result){
		if (err) {
			return res.redirect('/');
		} else {
			req.category = result;
			next();
		}
	});
});

router.get('/:url', function(req, res, next){
	if (req.category) {
		return res.render('clientCategory', {parrots: req.category.parrots, category: req.category, layout:'clientLayout', categories: req.categories});
	} else {
		return res.redirect('/');
	}
});

router.use('/:catURL/:parrotURL', function(req, res, next) {

	if (req.category) {
		var category = req.category;
		for (var i = 0; i < category.parrots.length; i++) {
			var parrot = category.parrots[i];
			if (parrot.url == req.params.parrotURL) {
				req.parrot = parrot;
				return next();
			}
		}
	}
});

router.get('/:catURL/:parrotURL', function(req, res, next) {
	var parrot = req.parrot;
	var category = req.category;
	return res.render('clientParrot', {layout:'clientLayout', parrot: parrot, category: category, categories: req.categories});
})



module.exports = router;
