@gsb-core/core
Version:
GSB core services and classes for platform-independent web applications
203 lines • 6.99 kB
JavaScript
;
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