@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
51 lines (50 loc) • 2.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const reportStoreService_1 = __importDefault(require("./reportStoreService"));
const logger_1 = __importDefault(require("../utils/logger"));
class DownloadPermissionService extends reportStoreService_1.default {
constructor(userDataStore) {
super(userDataStore);
logger_1.default.info('Service created: DownloadPermissionService');
}
async saveDownloadPermissionData(userId, reportId, id) {
const userConfig = await this.getState(userId);
// Init downloads if not present
if (!userConfig.downloadPermissions) {
userConfig.downloadPermissions = [];
}
const permissionExists = await this.downloadEnabled(userId, reportId, id);
if (!permissionExists) {
userConfig.downloadPermissions.push({ reportId, id });
logger_1.default.info(`Download permission granted for ${userId}: ${reportId} - ${id}`);
await this.saveState(userId, userConfig);
}
}
async removeDownloadPermissionData(userId, reportId, id) {
const userConfig = await this.getState(userId);
const index = userConfig.downloadPermissions.findIndex((downloadConfig) => {
return downloadConfig.id === id;
});
if (index >= 0) {
userConfig.downloadPermissions.splice(index, 1);
}
await this.saveState(userId, userConfig);
}
async downloadEnabled(userId, reportId, id) {
const userConfig = await this.getState(userId);
if (!userConfig.downloadPermissions)
return false;
const config = userConfig.downloadPermissions.find((downloadConfig) => {
return downloadConfig.id === id && downloadConfig.reportId === reportId;
});
return !!config;
}
async getAllDownloadPermissions(userId) {
const userConfig = await this.getState(userId);
return userConfig.downloadPermissions;
}
}
exports.default = DownloadPermissionService;