<commit_before>var models  = require('../models');
var express = require('express');
var router  = express.Router();


router.get('/', function(req, res) {
	models.Serie.findAll().then(function(series) {
		res.send(series);
	});
});

router.post('/', function(req, res) {	
	models.Serie.create({
		title: req.body.title,
		description: req.body.description,
		UsuarioId: req.body.user
	}).then(function() {
		res.status(201).send("Serie creada correctamente");
	});
});

router.delete('/:id', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				models.Serie.destroy({
					where: {
						id: id
					}
				}).then(function() {
					res.send("serie Eliminada");
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				var options = {};
				for (var param in req.body) {
					options[param] =  req.body[param];
				}
				
				serie.update(options)
				.then(function () {
					res.status(204).end();
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.get('/:id', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie) {
			if (serie) {
				models.Temporada.findAll({
					attributes : ['id', 'season'],
					where : {
						SerieId : id
					}
				}).then(function (temporadas) {
					serie.dataValues.temporadas = temporadas;
					
					models.Comentario.findAll({
						attributes : ['id', 'comment', 'createdAt', 'UsuarioId'],
						where : {
							SerieId : id
						}
					}).then(function (comentarios) {
						serie.dataValues.comentarios = comentarios;
						
						res.send(serie);
					});
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id/comentario/:comment', function(req, res) {
	var id = req.params.id;
	var commentId = req.params.comment;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	if (isNaN(commentId)) {
		res.status(400).send("Error: El id del comentario no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getComentarios().then(function (comentarios) {
					var isComentario = false;
					comentarios.forEach(function(comentario) {
						if (comentario.dataValues.id == commentId) {
							isComentario = true;
							comentario.update({
								comment: req.body.comment
							}).then(function() {
								res.status(204).end();
							});
						}
					});
					if (!isComentario) {
						res.status(404).send("El comentario no existe o no pertenece a esta serie");
					}
				})
				serie.update({
					comment : req.body.comment
				}).then(function() {
					res.status(204);
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/comentario', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				models.Comentario.create({
					SerieId : id,
					UsuarioId : req.body.user,
					comment : req.body.comment
				}).then(function() {
					res.status(201).send("Comentario creado correctamente");
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/temporada', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function(temporadas) {
					models.Temporada.create({
						SerieId : id,
						season : temporadas.length + 1
					}).then(function() {
						res.status(201).send("Temporada creada correctamente");
					});
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.delete('/:id/temporada/:season', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else { 
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function(temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							models.Temporada.destroy({
								where : {
									id :seasonId
								}
							}).then(function() {
								res.send("Temporada eliminada").end();
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.get('/:id/temporada/:season', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								res.send(capitulos);
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/temporada/:season/capitulo', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							models.Capitulo.create({
								title : req.body.title,
								TemporadaId : seasonId
							}).then(function () {
								res.status(201).send("Capítulo creado correctamente");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.delete('/:id/temporada/:season/capitulo/:episode', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if (capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										models.Capitulo.destroy({
											where : {
												id : episodeId
											}
										}).then(function () {
											res.send("Capitulo eliminado").end();
										})
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id/temporada/:season/capitulo/:episode', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if (capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.update({
											title : req.body.title
										}).then(function () {
											res.status(204).end();
										})
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.get('/:id/temporada/:season/capitulo/:episode', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.getComentarios({ attributes : ["id", "comment", "createdAt", "updatedAt", 'UsuarioId']}).then(function (comentarios) {
											res.send(comentarios);
										});
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/temporada/:season/capitulo/:episode/comentario', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										models.Comentario.create({
											comment: req.body.comment,
											UsuarioId: req.body.user,
											CapituloId: episodeId
										}).then(function () {
											res.status(201).send("Comentario creado correctamente");
										})
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.delete('/:id/temporada/:season/capitulo/:episode/comentario/:comment', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	var commentId = req.params.comment;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else if (isNaN(commentId)) {
		res.status(400).send("Error: El id del comentario no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.getComentarios().then(function (comentarios) {
											var isComment = false;
											comentarios.forEach(function(comentario) {
												if(comentario.dataValues.id == commentId) {
													isComment = true;
													models.Comentario.destroy({
														where: {
															id : commentId
														}
													}).then(function () {
														res.send("Comentario eliminado").end();
													});
												}
											});
											if(!isComment)
												res.status(404).send("El comentario no existe o no pertenece a este capítulo");
										});
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id/temporada/:season/capitulo/:episode/comentario/:comment', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	var commentId = req.params.comment;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else if (isNaN(commentId)) {
		res.status(400).send("Error: El id del comentario no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.getComentarios().then(function (comentarios) {
											var isComment = false;
											comentarios.forEach(function(comentario) {
												if(comentario.dataValues.id == commentId) {
													isComment = true;
													comentario.update({
														comment : req.body.comment
													}).then(function () {
														res.status(204).end();
													});
												}
											});
											if(!isComment)
												res.status(404).send("El comentario no existe o no pertenece a este capítulo");
										});
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

module.exports = router;<commit_msg>DELETE comentario de serie<commit_after>var models  = require('../models');
var express = require('express');
var router  = express.Router();


router.get('/', function(req, res) {
	models.Serie.findAll().then(function(series) {
		res.send(series);
	});
});

router.post('/', function(req, res) {	
	models.Serie.create({
		title: req.body.title,
		description: req.body.description,
		UsuarioId: req.body.user
	}).then(function() {
		res.status(201).send("Serie creada correctamente");
	});
});

router.delete('/:id', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				models.Serie.destroy({
					where: {
						id: id
					}
				}).then(function() {
					res.send("serie Eliminada");
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				var options = {};
				for (var param in req.body) {
					options[param] =  req.body[param];
				}
				
				serie.update(options)
				.then(function () {
					res.status(204).end();
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.get('/:id', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie) {
			if (serie) {
				models.Temporada.findAll({
					attributes : ['id', 'season'],
					where : {
						SerieId : id
					}
				}).then(function (temporadas) {
					serie.dataValues.temporadas = temporadas;
					
					models.Comentario.findAll({
						attributes : ['id', 'comment', 'createdAt', 'UsuarioId'],
						where : {
							SerieId : id
						}
					}).then(function (comentarios) {
						serie.dataValues.comentarios = comentarios;
						
						res.send(serie);
					});
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id/comentario/:comment', function(req, res) {
	var id = req.params.id;
	var commentId = req.params.comment;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	if (isNaN(commentId)) {
		res.status(400).send("Error: El id del comentario no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getComentarios().then(function (comentarios) {
					var isComentario = false;
					comentarios.forEach(function(comentario) {
						if (comentario.dataValues.id == commentId) {
							isComentario = true;
							comentario.update({
								comment: req.body.comment
							}).then(function() {
								res.status(204).end();
							});
						}
					});
					if (!isComentario) {
						res.status(404).send("El comentario no existe o no pertenece a esta serie");
					}
				})
				serie.update({
					comment : req.body.comment
				}).then(function() {
					res.status(204);
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.delete('/:id/comentario/:comment', function(req, res) {
	var id = req.params.id;
	var commentId = req.params.comment;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	if (isNaN(commentId)) {
		res.status(400).send("Error: El id del comentario no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getComentarios().then(function (comentarios) {
					var isComentario = false;
					comentarios.forEach(function(comentario) {
						if (comentario.dataValues.id == commentId) {
							isComentario = true;
							models.Comentario.destroy({
								where: {
									id: commentId
								}
							}).then(function() {
								res.status(204).end();
							});
						}
					});
					if (!isComentario) {
						res.status(404).send("El comentario no existe o no pertenece a esta serie");
					}
				})
				serie.update({
					comment : req.body.comment
				}).then(function() {
					res.status(204);
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/comentario', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				models.Comentario.create({
					SerieId : id,
					UsuarioId : req.body.user,
					comment : req.body.comment
				}).then(function() {
					res.status(201).send("Comentario creado correctamente");
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/temporada', function(req, res) {
	var id = req.params.id;
	if (isNaN(id)) {
		res.status(400).send("Error: El id no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function(temporadas) {
					models.Temporada.create({
						SerieId : id,
						season : temporadas.length + 1
					}).then(function() {
						res.status(201).send("Temporada creada correctamente");
					});
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.delete('/:id/temporada/:season', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else { 
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function(temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							models.Temporada.destroy({
								where : {
									id :seasonId
								}
							}).then(function() {
								res.send("Temporada eliminada").end();
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.get('/:id/temporada/:season', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								res.send(capitulos);
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/temporada/:season/capitulo', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							models.Capitulo.create({
								title : req.body.title,
								TemporadaId : seasonId
							}).then(function () {
								res.status(201).send("Capítulo creado correctamente");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.delete('/:id/temporada/:season/capitulo/:episode', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if (capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										models.Capitulo.destroy({
											where : {
												id : episodeId
											}
										}).then(function () {
											res.send("Capitulo eliminado").end();
										})
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id/temporada/:season/capitulo/:episode', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if (capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.update({
											title : req.body.title
										}).then(function () {
											res.status(204).end();
										})
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.get('/:id/temporada/:season/capitulo/:episode', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.getComentarios({ attributes : ["id", "comment", "createdAt", "updatedAt", 'UsuarioId']}).then(function (comentarios) {
											res.send(comentarios);
										});
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.post('/:id/temporada/:season/capitulo/:episode/comentario', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										models.Comentario.create({
											comment: req.body.comment,
											UsuarioId: req.body.user,
											CapituloId: episodeId
										}).then(function () {
											res.status(201).send("Comentario creado correctamente");
										})
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.delete('/:id/temporada/:season/capitulo/:episode/comentario/:comment', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	var commentId = req.params.comment;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else if (isNaN(commentId)) {
		res.status(400).send("Error: El id del comentario no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.getComentarios().then(function (comentarios) {
											var isComment = false;
											comentarios.forEach(function(comentario) {
												if(comentario.dataValues.id == commentId) {
													isComment = true;
													models.Comentario.destroy({
														where: {
															id : commentId
														}
													}).then(function () {
														res.send("Comentario eliminado").end();
													});
												}
											});
											if(!isComment)
												res.status(404).send("El comentario no existe o no pertenece a este capítulo");
										});
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

router.put('/:id/temporada/:season/capitulo/:episode/comentario/:comment', function(req, res) {
	var id = req.params.id;
	var seasonId = req.params.season;
	var episodeId = req.params.episode;
	var commentId = req.params.comment;
	if (isNaN(id)) {
		res.status(400).send("Error: El id de la serie no es un número");
	}
	else if (isNaN(seasonId)) {
		res.status(400).send("Error: El id de la temporada no es un número");
	}
	else if (isNaN(episodeId)) {
		res.status(400).send("Error: El id del capitulo no es un número");
	}
	else if (isNaN(commentId)) {
		res.status(400).send("Error: El id del comentario no es un número");
	}
	else {
		models.Serie.findById(id).then(function(serie){
			if (serie) {
				serie.getTemporadas().then(function (temporadas) {
					var isSeason = false;
					temporadas.forEach(function (temporada) {
						if(temporada.dataValues.id == seasonId) {
							isSeason = true;
							temporada.getCapitulos().then(function (capitulos) {
								var isEpisode = false;
								capitulos.forEach(function (capitulo) {
									if(capitulo.dataValues.id == episodeId) {
										isEpisode = true;
										capitulo.getComentarios().then(function (comentarios) {
											var isComment = false;
											comentarios.forEach(function(comentario) {
												if(comentario.dataValues.id == commentId) {
													isComment = true;
													comentario.update({
														comment : req.body.comment
													}).then(function () {
														res.status(204).end();
													});
												}
											});
											if(!isComment)
												res.status(404).send("El comentario no existe o no pertenece a este capítulo");
										});
									}
								});
								if(!isEpisode)
									res.status(404).send("El capítulo no existe o no pertenece a esta temporada");
							});
						}
					});
					if (!isSeason) {
						res.status(404).send("La temporada no existe o no pertenece a esta serie");
					}
				});
			}
			else {
				res.status(404).send("La serie no existe");
			}
		});
	}
});

module.exports = router;
{'fraction_non_alphanumeric': 0.1566402131083856, 'fraction_numerical': 0.013208280148731894, 'mean_word_length': 2.5356617286373, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 36, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6491470', 'n_tokens_mistral': 16951, 'n_tokens_neox': 12675, 'n_words': 2561}