const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const cors = require('cors');
const logger = require('morgan');
const path = require('path');
const config = require('./config');
const so = require('./includes/storeObject');

const app = express();

const api_route = require('./route/api');

// storeObject interval clear
const clearStore = setInterval(() =>{
    so.clear();
}, 30000)

app.set('port', process.env.PORT || config.system.port);

app.use(logger('short'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({
    resave: false,
    saveUninitialized: true,
    secret: '6520833345e05e0dcfce'
}));
app.use(cors());

app.use(express.static(path.resolve(__dirname, 'public')));
app.use('/semantic', express.static(path.resolve(__dirname, 'node_modules', 'semantic-ui-css')));
app.use('/react-datetime', express.static(path.resolve(__dirname, 'node_modules', 'react-datetime', 'css')));

const server = app.listen(app.get('port'), () => {
    console.log(`Server start on port ${server.address().port}`);
});

// use route 
app.use('/api', api_route);

app.get('/', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'views', 'index.html'));
});

app.get(['/admin','/admin/*'], (req,res) => {
    res.sendFile(path.resolve(__dirname, 'views', 'admin.html'));
});