Source: routes/assets/assets.js

// for date handling
var moment = require('moment');
moment().format();

// helpers
let assetsgroupshelper = require('../../models/assetsgroups');
let assetshelper = require('../../models/assets');
let assetsparameterhelper = require('../../models/assetsparametershelper');
let warehousehelper = require('../../models/warehouses');
let momentHelperObj = require('../../models/momenthelper');
let momenthelper = new momentHelperObj();

/**
 * Module offers routes for assets handling
 * @module routes/assets
 */
module.exports = {
    /**
     * Route loading Assets List.
     * @function
     * @memberof module:routes/assets
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    getAssetsList: (req, res) => {
        let assets = new assetshelper(req.app.logger);
        assets.getListOfAssets((resultAssets) => {
            res.render('assets/assets.ejs', {
                title: 'ALARMiator | Geräte',
                navarea: 'assets',
                avatarpath: req.session.avatar,
                name: req.session.name,
                organizationname: req.session.organization,
                session: req.session,
                assets: resultAssets
            });
        });
    },
    /**
     * Route loading Page for adding a new asset.
     * @function
     * @memberof module:routes/assets
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    addAssetsPage: (req, res) => {
        let groups = new assetsgroupshelper(req.app.logger);
        let warehouses = new warehousehelper(req.app.logger);
        groups.getListOfAssetGroups((resultGroups) => {
            let assets = new assetshelper(req.app.logger);
            assets.getListOfAssetsStates((resultStates) => {
                warehouses.getListOfWarehouses((resultWarehouses) => {
                    //console.log(resultStates.length);
                    res.render('assets/assets_add.ejs', {
                        title: 'ALARMiator',
                        navarea: 'assets',
                        avatarpath: req.session.avatar,
                        name: req.session.name,
                        organizationname: req.session.organization,
                        session: req.session,
                        groups: resultGroups,
                        states: resultStates,
                        warehouses: resultWarehouses,
                        message: ''
                    });
                })
            })
        });
    },
    /**
     * Route storing a new asset to core database and redirecting to asstes list afterwards.
     * @function
     * @memberof module:routes/assets
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    addAssets: (req, res) => {
        var assets = new assetshelper(req.app.logger);
        assets.addAsset(req.body, (success) => {
            if (success) {
                res.redirect('/assets/assets/list');
            } else {
                res.redirect('/assets/assets/list');
            }
        })
    },
    /**
     * Route for edit Page of an asset.
     * @function
     * @memberof module:routes/assets
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    editAssetsPage: (req, res) => {

        let assetId = req.params.id;
        let assets = new assetshelper(req.app.logger);        
        let groups = new assetsgroupshelper(req.app.logger);
        let warehouses = new warehousehelper(req.app.logger);

        groups.getListOfAssetGroups((resultGroups) => {
            assets.getListOfAssetsStates((resultStates) => {
                warehouses.getListOfWarehouses((resultWarehouses) => {
                    assets.getAssetwithId(assetId, (assetRow) => {
                        if (assetRow === null) {
                            req.app.logger.error('ROUTES-ASSETS | Error loading asset information from database for id ' + assetId + ': ' + err.message);
                            res.redirect('/assets/assets/list');
                        } else {
                            // Render dates to form representation
                            if (assetRow[0]['date_bought'] !== null) {
                                assetRow[0]['date_bought'] = momenthelper.mysqlDateToForm(assetRow[0]['date_bought']);
                            }
                            if (assetRow[0]['date_manufactured'] !== null) {
                                assetRow[0]['date_manufactured'] = momenthelper.mysqlDateToForm(assetRow[0]['date_manufactured']);
                            }
                            if (assetRow[0]['date_putOperational'] !== null) {
                                assetRow[0]['date_putOperational'] = momenthelper.mysqlDateToForm(assetRow[0]['date_putOperational']);
                            }
                            if (assetRow[0]['date_outOfService'] !== null) {
                                assetRow[0]['date_outOfService'] = momenthelper.mysqlDateToForm(assetRow[0]['date_outOfService']);
                            }
                            if (assetRow[0]['date_lastMnt'] !== null) {
                                assetRow[0]['date_lastMnt'] = momenthelper.mysqlDateToForm(assetRow[0]['date_lastMnt']);
                            }

                            res.render('assets/assets_edit.ejs', {
                                title: 'ALARMiator',
                                navarea: 'assets',
                                avatarpath: req.session.avatar,
                                name: req.session.name,
                                organizationname: req.session.organization,
                                session: req.session,
                                groups: resultGroups,
                                states: resultStates,
                                warehouses: resultWarehouses,
                                asset: assetRow[0]
                            });
                        }
                    })
                    
                })
            })
        });
    },
    /**
     * Route for updating an asset in core database and redirecting to assets list afterwards.
     * @function
     * @memberof module:routes/assets
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    editAsset: (req, res) => {
        let assetId = req.body.assetId;
        let assets = new assetshelper(req.app.logger);
        assets.updateAsset(req.body, (success) => {
            if (success) {
                console.log('editAsset returned with success');
                res.redirect('/assets/assets/list');
            } else {
                res.redirect('/assets/assets/edit/' + assetId);
            }
        })
    },
    /**
     * Route for deleting an asset from core database.
     * @function
     * @memberof module:routes/assets
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    deleteAsset: (req, res) => {
        var assetId = req.params.id;
        let query = "DELETE FROM assets WHERE id = ?";

        let assets = new assetshelper(req.app.logger);
        assets.removeAsset(assetId, (success) => {
            if (success) {
                res.redirect('/assets/assets/list');
            } else {
                res.redirect('/assets/assets/list');
            }
        })
    }

};