blob: c81b30e1cb849c9777c14e8aa270a4807a4d8f3d [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import {FimsPermissionDescriptor} from './fims-permission-descriptor';
import {IdentityPermittableGroupIds} from '../../identity/domain/permittable-group-ids.model';
import {OfficePermittableGroupIds} from '../../office/domain/permittable-group-ids.model';
import {CustomerPermittableGroupIds} from '../../customer/domain/permittable-group-ids';
import {AccountingPermittableGroupIds} from '../../accounting/domain/permittable-group-ids';
import {PortfolioPermittableGroupIds} from '../../portfolio/domain/permittable-group-ids';
import {PermissionId} from './permission-id.type';
import {Injectable} from '@angular/core';
import {DepositAccountPermittableGroupIds} from '../../depositAccount/domain/permittable-group-ids';
import {TellerPermittableGroupIds} from '../../teller/domain/permittable-group-ids';
import {ReportingPermittableGroupIds} from '../../reporting/domain/permittable-group-ids';
import {ChequePermittableGroupIds} from '../../cheque/domain/permittable-group-ids';
import {PayrollPermittableGroupIds} from '../../payroll/domain/permittable-group-ids';
interface PermittableGroupMap {
[s: string]: FimsPermissionDescriptor;
}
/**
* Maps permittable group ids to internal keys
*/
@Injectable()
export class PermittableGroupIdMapper {
private _permittableGroupMap: PermittableGroupMap = {};
constructor() {
this._permittableGroupMap[OfficePermittableGroupIds.EMPLOYEE_MANAGEMENT] = {id: 'office_employees', label: 'Employees'};
this._permittableGroupMap[OfficePermittableGroupIds.OFFICE_MANAGEMENT] = {id: 'office_offices', label: 'Offices'};
this._permittableGroupMap[OfficePermittableGroupIds.SELF_MANAGEMENT] = {
id: 'office_self',
label: 'User created resources(Offices & Employees)'
};
this._permittableGroupMap[IdentityPermittableGroupIds.IDENTITY_MANAGEMENT] = {id: 'identity_identities', label: 'Identities'};
this._permittableGroupMap[IdentityPermittableGroupIds.ROLE_MANAGEMENT] = {id: 'identity_roles', label: 'Roles'};
this._permittableGroupMap[IdentityPermittableGroupIds.SELF_MANAGEMENT] = {
id: 'identity_self',
label: 'User created resources(Identity & Roles)'
};
this._permittableGroupMap[CustomerPermittableGroupIds.CUSTOMER_MANAGEMENT] = {id: 'customer_customers', label: 'Members'};
this._permittableGroupMap[CustomerPermittableGroupIds.TASK_MANAGEMENT] = {id: 'customer_tasks', label: 'Tasks'};
this._permittableGroupMap[CustomerPermittableGroupIds.CATALOG_MANAGEMENT] = {id: 'catalog_catalogs', label: 'Custom fields'};
this._permittableGroupMap[CustomerPermittableGroupIds.IDENTITY_CARD_MANAGEMENT] = {
id: 'customer_identifications',
label: 'Member identification cards'
};
this._permittableGroupMap[CustomerPermittableGroupIds.PORTRAIT_MANAGEMENT] = {id: 'customer_portrait', label: 'Member portrait'};
this._permittableGroupMap[CustomerPermittableGroupIds.CUSTOMER_DOCUMENT] = {id: 'customer_documents', label: 'Member documents'};
this._permittableGroupMap[AccountingPermittableGroupIds.ACCOUNT_MANAGEMENT] = {id: 'accounting_accounts', label: 'Accounts'};
this._permittableGroupMap[AccountingPermittableGroupIds.JOURNAL_MANAGEMENT] = {id: 'accounting_journals', label: 'Journal'};
this._permittableGroupMap[AccountingPermittableGroupIds.LEDGER_MANAGEMENT] = {id: 'accounting_ledgers', label: 'Ledger'};
this._permittableGroupMap[AccountingPermittableGroupIds.TRANSACTION_TYPES] = {id: 'accounting_tx_types', label: 'Transaction types'};
this._permittableGroupMap[AccountingPermittableGroupIds.THOTH_INCOME_STMT] = {
id: 'accounting_income_statement',
label: 'Income statement'
};
this._permittableGroupMap[AccountingPermittableGroupIds.THOTH_FIN_CONDITION] = {
id: 'accounting_fin_condition',
label: 'Financial condition'
};
this._permittableGroupMap[PortfolioPermittableGroupIds.PRODUCT_OPERATIONS_MANAGEMENT] = {
id: 'portfolio_product_operations',
label: 'Loan product operations'
};
this._permittableGroupMap[PortfolioPermittableGroupIds.PRODUCT_LOSS_PROVISIONING_MANAGEMENT] = {
id: 'portfolio_loss_provision', label: 'Loan loss provision'
};
this._permittableGroupMap[PortfolioPermittableGroupIds.PRODUCT_MANAGEMENT] = {id: 'portfolio_products', label: 'Loan products'};
this._permittableGroupMap[PortfolioPermittableGroupIds.CASE_MANAGEMENT] = {id: 'portfolio_cases', label: 'Member loans'};
this._permittableGroupMap[PortfolioPermittableGroupIds.CASE_DOCUMENT_MANAGEMENT] = {
id: 'portfolio_documents',
label: 'Member loan documents'
};
this._permittableGroupMap[DepositAccountPermittableGroupIds.DEFINITION_MANAGEMENT] = {
id: 'deposit_definitions',
label: 'Deposit account management'
};
this._permittableGroupMap[DepositAccountPermittableGroupIds.INSTANCE_MANAGEMENT] = {
id: 'deposit_instances',
label: 'Deposit account for members'
};
this._permittableGroupMap[TellerPermittableGroupIds.TELLER_MANAGEMENT] = {id: 'teller_management', label: 'Teller management'};
this._permittableGroupMap[TellerPermittableGroupIds.TELLER_OPERATION] = {id: 'teller_operations', label: 'Teller operations'};
this._permittableGroupMap[ReportingPermittableGroupIds.REPORT_MANAGEMENT] = {id: 'reporting_management', label: 'Report management'};
this._permittableGroupMap[ChequePermittableGroupIds.CHEQUE_TRANSACTION] = {id: 'cheque_transaction', label: 'Cheque transaction'};
this._permittableGroupMap[ChequePermittableGroupIds.CHEQUE_MANAGEMENT] = {id: 'cheque_management', label: 'Cheque management'};
this._permittableGroupMap[PayrollPermittableGroupIds.CONFIGURATION] = {id: 'payroll_configuration', label: 'Payroll configuration'};
this._permittableGroupMap[PayrollPermittableGroupIds.DISTRIBUTION] = {id: 'payroll_distribution', label: 'Payroll distribution'};
}
public map(permittableGroupId: string): FimsPermissionDescriptor {
const descriptor: FimsPermissionDescriptor = this._permittableGroupMap[permittableGroupId];
if (!descriptor) {
console.warn(`Could not find permission descriptor for permittable group id '${permittableGroupId}'`);
}
return descriptor;
}
public isValid(id: PermissionId): boolean {
for (const key in this._permittableGroupMap) {
if (this._permittableGroupMap.hasOwnProperty(key)) {
const descriptor: FimsPermissionDescriptor = this._permittableGroupMap[key];
if (descriptor.id === id) {
return true;
}
}
}
return false;
}
}