const {Report} = require('vn-print');

module.exports = Self => {
    Self.remoteMethodCtx('previousLabel', {
        description: 'Returns the previa label pdf',
        accessType: 'READ',
        accepts: [
            {
                arg: 'id',
                type: 'number',
                required: true,
                description: 'The item id',
                http: {source: 'path'}
            }],
        returns: [
            {
                arg: 'body',
                type: 'file',
                root: true
            }, {
                arg: 'Content-Type',
                type: 'String',
                http: {target: 'header'}
            }, {
                arg: 'Content-Disposition',
                type: 'String',
                http: {target: 'header'}
            }
        ],
        http: {
            path: '/:id/previousLabel',
            verb: 'GET'
        }
    });

    Self.previousLabel = async(ctx, id) => {
        const args = Object.assign({}, ctx.args);
        const params = {lang: ctx.req.getLocale()};

        delete args.ctx;
        for (const param in args)
            params[param] = args[param];

        const report = new Report('previa-label', params);
        const stream = await report.toPdfStream();

        return [stream, 'application/pdf', `filename="previa-${id}.pdf"`];
    };
};