Source: routes/assets/groups.js

let assetsgroupshelper = require('../../models/assetsgroups');
let roleshelper = require('../../models/roles');
const Organizations = require('../../models/organizations');


/**
 * Module offers routes for assets groups handling
 * @module routes/assetsgroups
 */
module.exports = {
    /**
     * Route loading Assets Groups List.
     * @function
     * @memberof module:routes/assetsgroups
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    getAssetsGroupsList: (req, res) => {
        let assetsgroups = new assetsgroupshelper(req.app.logger);
        assetsgroups.getListOfAssetGroups((resultAssetsGroups) => {
            res.render('assets/groups.ejs', {
                title: 'ALARMiator | Gerätegruppen',
                navarea: 'assets',
                avatarpath: req.session.avatar,
                name: req.session.name,
                organizationname: req.session.organization,
                session: req.session,
                assetsgroups: resultAssetsGroups
            });
        });      
    },
    /**
     * Route loading Assets Groups add page.
     * @function
     * @memberof module:routes/assetsgroups
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    addAssetsGroupPage: (req, res) => {
        let roles = new roleshelper(req.app.logger);
        let organizations = new Organizations(req.app.logger);

        organizations.getListOfOrganizations((resultOrganizations) => {
            roles.getListOfRoles((resultRoles) => {
                res.render('assets/groups_add.ejs', {
                    title: 'ALARMiator',
                    navarea: 'assets',
                    avatarpath: req.session.avatar,
                    name: req.session.name,
                    organizationname: req.session.organization,
                    session: req.session,
                    roles: resultRoles,
                    organizations: resultOrganizations,
                    message: ''
                });
            });
        })
    },
    /**
     * Route adding new Assets Groups and redirecting to list aferwards.
     * @function
     * @memberof module:routes/assetsgroups
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    addAssetsGroup: (req, res) => {
        var assetgroups = new assetsgroupshelper(req.app.logger);
        assetgroups.addAssetsGroup(req.body, (success) => {
            if (success) {
                res.redirect('/assets/groups/list');
            } else {
                res.redirect('/assets/groups/list');
            }
        })
    },
    /**
     * Route loading Assets Groups edit page.
     * @function
     * @memberof module:routes/assetsgroups
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    editGroupPage: (req, res) => {
        let groupId = req.params.id;
        var assetsgroups = new assetsgroupshelper(req.app.logger);
        assetsgroups.getAssetGroup(groupId, (rows) => {
            let roles = new roleshelper(req.app.logger);
            roles.getListOfRoles((resultRoles) => {
                let organizations = new Organizations(req.app.logger);
                organizations.getListOfOrganizations((resultOrganizations) => {

                    res.render('assets/groups_edit.ejs', {
                        title: 'Edit  Group',
                        navarea: 'assets',
                        avatarpath: req.session.avatar,
                        name: req.session.name,
                        organizationname: req.session.organization,
                        session: req.session,
                        group: rows[0],
                        roles: resultRoles,
                        organizations: resultOrganizations,
                        message: ''
                    });
                });
            });
        })
    },
    /**
     * Route updating Assets Group and redirecting to list afterwards.
     * @function
     * @memberof module:routes/assetsgroups
     * @param {object} req - Express request
     * @param {object} res - Express response.
     */
    editGroup: (req, res) => {
        let groupId = req.params.id;
        let roleId = req.body.roleid;
        let groupName = req.body.groupname;

        var assetsGroups = new assetsgroupshelper(req.app.logger);
        assetsGroups.editAssetsGroup(req.body, groupId, (success) => {
            if (success) {
                res.redirect('/assets/groups/list');
            } else {
                res.redirect('/assets/groups/list');
            }
        })
    },
    /**
     * Route for deletion of an asset group
     * @memberof module:routes/assetsgroups
     * @param {object} req - Express request
     * @param {object} res - Express response.
     * 
     */
    deleteGroup: (req, res) => {
        let groupId = req.params.id;
        var assetsGroups = new assetsgroupshelper(req.app.logger);
        assetsGroups.deleteGroup(groupId, (success) => {
            if (success) {
                res.redirect('/assets/groups/list');
            } else {
                res.redirect('/assets/groups/list');
            }
        })
    }
};