UNPKG

@gsb-core/core

Version:

GSB core services and classes for platform-independent web applications

203 lines 6.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RoleService = void 0; const gsb_entity_service_1 = require("./entity/gsb-entity.service"); const query_params_1 = require("../types/query-params"); const query_1 = require("../types/query"); const gsb_config_1 = require("../config/gsb-config"); const gsb_utils_1 = require("../utils/gsb-utils"); /** * Service for managing Roles in the application */ class RoleService { constructor() { this.ENTITY_NAME = 'GsbRole'; this.entityService = gsb_entity_service_1.GsbEntityService.getInstance(); } /** * Get role by ID * @param id The role ID * @returns The role or null if not found */ async getRoleById(id) { try { const role = await this.entityService.getById(this.ENTITY_NAME, id, (0, gsb_config_1.getGsbToken)(), (0, gsb_config_1.getGsbTenantCode)()); return role; } catch (error) { console.error('Error getting role by ID:', error); return null; } } /** * Get all roles with pagination * @param page The page number (starting from 1) * @param pageSize The number of items per page * @returns An array of roles and the total count */ async getRoles(page = 1, pageSize = 10) { try { const query = new query_params_1.QueryParams(this.ENTITY_NAME); // Set pagination query.startIndex = (page - 1) * pageSize; query.count = pageSize; query.calcTotalCount = true; // Sort by creation date query.sortCols = (0, gsb_utils_1.getGsbDateSortCols)(); const response = await this.entityService.query(query, (0, gsb_config_1.getGsbToken)(), (0, gsb_config_1.getGsbTenantCode)()); return { roles: (response.entities || []), totalCount: response.totalCount || 0 }; } catch (error) { console.error('Error getting roles:', error); return { roles: [], totalCount: 0 }; } } /** * Search for roles * @param searchTerm The search term * @param page The page number (starting from 1) * @param pageSize The number of items per page * @returns An array of roles and the total count */ async searchRoles(searchTerm, page = 1, pageSize = 10) { try { const query = new query_params_1.QueryParams(this.ENTITY_NAME); // Set search filter if (searchTerm) { query.searchText = searchTerm; } // Set pagination query.startIndex = (page - 1) * pageSize; query.count = pageSize; query.calcTotalCount = true; const response = await this.entityService.query(query, (0, gsb_config_1.getGsbToken)(), (0, gsb_config_1.getGsbTenantCode)()); return { roles: (response.entities || []), totalCount: response.totalCount || 0 }; } catch (error) { console.error('Error searching roles:', error); return { roles: [], totalCount: 0 }; } } /** * Create a new role * @param role The role to create * @returns The created role ID or null if failed */ async createRole(role) { try { // Set create date fields const request = { entDefName: this.ENTITY_NAME, entity: role, entityDef: {}, entityId: '', entDefId: '', filters: [] }; const response = await this.entityService.save(request, (0, gsb_config_1.getGsbToken)(), (0, gsb_config_1.getGsbTenantCode)()); if (!response.id) { return null; } return response.id; } catch (error) { console.error('Error creating role:', error); return null; } } /** * Update an existing role * @param role The role to update * @returns True if updated successfully, false otherwise */ async updateRole(role) { try { const request = { entDefName: this.ENTITY_NAME, entity: role, entityDef: {}, entityId: '', entDefId: '', filters: [] }; const response = await this.entityService.save(request, (0, gsb_config_1.getGsbToken)(), (0, gsb_config_1.getGsbTenantCode)()); return !!response.id; } catch (error) { console.error('Error updating role:', error); return false; } } /** * Delete a role * @param id The role ID to delete * @returns True if deleted successfully, false otherwise */ async deleteRole(id) { try { const request = { entDefName: this.ENTITY_NAME, entityId: id, entity: {}, entityDef: {}, entDefId: '', filters: [] }; const response = await this.entityService.delete(request, (0, gsb_config_1.getGsbToken)(), (0, gsb_config_1.getGsbTenantCode)()); return response.deleteCount === 1; } catch (error) { console.error('Error deleting role:', error); return false; } } /** * Get users in a role * @param roleId The role ID * @returns Array of users in the role */ async getUsersInRole(roleId) { try { const role = await this.getRoleById(roleId); if (!role || !role.users) { throw new Error('Role or users not found'); } const query = new query_params_1.QueryParams('GsbUser'); query.filter('roles', roleId, query_1.QueryFunction.Contains); const response = await this.entityService.query(query, (0, gsb_config_1.getGsbToken)(), (0, gsb_config_1.getGsbTenantCode)()); return response.entities; } catch (error) { console.error('Error getting users in role:', error); return []; } } /** * Add a user to a role * @param roleId The role ID * @param userId The user ID * @returns True if added successfully, false otherwise */ async addUserToRole(roleId, userId) { //addmappeditems to role return true; } /** * Remove a user from a role * @param roleId The role ID * @param userId The user ID * @returns True if removed successfully, false otherwise */ async removeUserFromRole(roleId, userId) { //remove mapped items from role return true; } } exports.RoleService = RoleService; //# sourceMappingURL=role.service.js.map