module.exports = function(Self) {
    Self.remoteMethodCtx('getUserConfig', {
        description: 'returns the information from UserConfig model for the active user',
        accepts: [],
        returns: {
            type: 'object',
            root: true
        },
        http: {
            path: `/getUserConfig`,
            verb: 'get'
        }
    });

    Self.getUserConfig = async(ctx, options) => {
        const models = Self.app.models;
        const myOptions = {};

        if (typeof options == 'object')
            Object.assign(myOptions, options);

        let userConfig = await models.UserConfig.findOne({
            where: {userFk: ctx.req.accessToken.userId}
        }, myOptions);

        const companyFilter = {where: {code: 'VNL'}};
        const company = await models.Company.findOne(companyFilter, myOptions);

        const warehouseFilter = {where: {code: 'ALG'}};
        const warehouse = await models.Warehouse.findOne(warehouseFilter, myOptions);

        if (!userConfig) {
            let newConfig = {
                warehouseFk: warehouse.id,
                companyFk: company.id,
                userFk: ctx.req.accessToken.userId
            };

            userConfig = await models.UserConfig.create(newConfig, myOptions);
        }
        return userConfig;
    };
};