import express from 'express';
import path from 'path';
import Axios from 'axios';    

let port: number = 80;
let server = express();
let dirname: string = __dirname;

// for parsing application/json
server.use( express.json() );
// for parsing application/x-www-form-urlencoded
server.use( express.urlencoded({ extended: true }) );

dirname = path.join(dirname, '..');
server.use(express.static(path.join(dirname, '/public')));

server.set('view engine', 'ejs');
server.set('views', path.join(dirname, '/views'));

server.post('/addstudent', async (req, res) => {
	try
	{
		 let containerName: string = "webservice";
		 let serviceResponse = await Axios.post(`http://${containerName}:1339/students`, {
			name: req.body["name-textbox"], 
			age: req.body["age-numberbox"], 
			course: req.body["course-textbox"]		                    
		 });
		 console.log(`Service response = ${serviceResponse.status}`);
		 res.redirect('thanks.html');
	}
	catch(error)
	{
		 console.log(error);
		 res.status(403).end();
	}
});

server.get('/readstudents', async (req, res) => {
	try
	{
		console.log("Get students");
		let containerName: string = "webservice";
		let serviceResponse = await Axios.get(`http://${containerName}:1339/students`);
								
		console.log(`Service response = ${serviceResponse.status}`);
		res.render('displayallstudents', { students: serviceResponse.data } );
	}
	catch(error)
	{
		console.log(error);
		res.status(403).end();
	}
});

server.listen(port, () => console.log(`Example web server listening at http://localhost:${port}`));	