import ngModule from '../module';

class Report {
    constructor($httpParamSerializer, vnToken) {
        this.$httpParamSerializer = $httpParamSerializer;
        this.vnToken = vnToken;
    }

    /**
     * Shows a report in another window, automatically adds the authorization
     * token to params.
     *
     * @param {String} report The report name
     * @param {Object} params The report parameters
     */
    show(report, params) {
        params = Object.assign({
            authorization: this.vnToken.token
        }, params);
        const serializedParams = this.$httpParamSerializer(params);
        window.open(`api/report/${report}?${serializedParams}`);
    }

    /**
     * Shows a report in another window, automatically adds the authorization
     * token to params.
     *
     * @param {String} report The report name
     * @param {Object} params The report parameters
     */
    showCsv(report, params) {
        params = Object.assign({
            authorization: this.vnToken.token
        }, params);
        const serializedParams = this.$httpParamSerializer(params);
        window.open(`api/csv/${report}/download?${serializedParams}`);
    }
}
Report.$inject = ['$httpParamSerializer', 'vnToken'];

ngModule.service('vnReport', Report);