Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,5 @@ gcp1.json

dev-ops/report

config.json

4 changes: 3 additions & 1 deletion src/.env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ API_DOC_URL = "/entity-management/api-doc"
IS_AUTH_TOKEN_BEARER=false

AUTH_METHOD = native #or keycloak_public_key
KEYCLOAK_PUBLIC_KEY_PATH = path to the pem/secret file
KEYCLOAK_PUBLIC_KEY_PATH = path to the pem/secret file
ADMIN_TOKEN_HEADER_NAME = admin-access-token // admin access token header name
ADMIN_ACCESS_TOKEN = ivopeiovcie-----------lvkkdvkdm // admin access token
75 changes: 39 additions & 36 deletions src/controllers/v1/entities.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ module.exports = class Entities extends Abstract {
* @api {POST} /v1/entities/find all the API based on projection
* @apiVersion 1.0.0
* @apiName find
* @param {Object} req - The request object.
* @apiGroup Entities
* @apiSampleRequest {
"query" : {
Expand Down Expand Up @@ -87,6 +88,7 @@ module.exports = class Entities extends Abstract {
* @apiVersion 1.0.0
* @apiName Get Related Entities
* @apiGroup Entities
* @param {Object} req - The request object.
* @apiSampleRequest v1/entities/relatedEntities/5c0bbab881bdbe330655da7f
* @apiUse successBody
* @apiUse errorBody
Expand Down Expand Up @@ -128,7 +130,11 @@ module.exports = class Entities extends Abstract {
'entityTypeId',
'entityType',
]
let entityDocument = await entitiesQueries.entityDocuments({ _id: req.params._id }, projection)
let tenantId = req.userDetails.userInformation.tenantId
let entityDocument = await entitiesQueries.entityDocuments(
{ _id: req.params._id, tenantId: tenantId },
projection
)

if (entityDocument.length < 1) {
throw {
Expand All @@ -141,7 +147,8 @@ module.exports = class Entities extends Abstract {
entityDocument[0]._id,
entityDocument[0].entityTypeId,
entityDocument[0].entityType,
projection
projection,
tenantId
)
_.merge(result, entityDocument[0])
result['relatedEntities'] = relatedEntities.length > 0 ? relatedEntities : []
Expand All @@ -166,6 +173,7 @@ module.exports = class Entities extends Abstract {
* @apiVersion 1.0.0
* @apiName entityListBasedOnEntityType
* @apiGroup Entities
* @param {Object} req - The request object.
* @apiUse successBody
* @apiUse errorBody
* @apiParamExample {json} Response:
Expand Down Expand Up @@ -195,7 +203,8 @@ module.exports = class Entities extends Abstract {
req.pageNo,
req.pageSize,
req?.query?.paginate?.toLowerCase() == 'true' ? true : false,
req.query.language ? req.query.language : ''
req.query.language ? req.query.language : '',
req.userDetails
)
return resolve(entityData)
} catch (error) {
Expand All @@ -215,6 +224,7 @@ module.exports = class Entities extends Abstract {
* @apiName createMappingCsv
* @apiGroup Entities
* @apiParam {File} entityCSV Mandatory entity mapping file of type CSV.
* @param {Object} req - The request object.
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req - The request object containing the uploaded CSV file in `req.files.entityCSV`.
Expand Down Expand Up @@ -288,6 +298,7 @@ module.exports = class Entities extends Abstract {
* @apiName mappingUpload
* @apiGroup Entities
* @apiParam {File} entityMap Mandatory entity mapping file of type CSV.
* @param {Object} req - The request object.
* @apiUse successBody
* @apiUse errorBody
* @param {Array} req.files.entityMap - Array of entityMap data.
Expand Down Expand Up @@ -340,8 +351,6 @@ module.exports = class Entities extends Abstract {
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req - The request object containing parameters and user details.
* @param {Object} req.params - The request parameters.
* @param {string} req.params._id - The entity ID to filter roles.
* @returns {Promise<Object>} A promise that resolves to the response containing the fetched roles or an error object.
* * @returns {JSON} - Message of successfully response.
*
Expand Down Expand Up @@ -386,7 +395,9 @@ module.exports = class Entities extends Abstract {
req.pageNo,
req.pageSize,
req?.query?.paginate?.toLowerCase() == 'true' ? true : false,
req.query.entityType ? req.query.entityType : ''
req.query.entityType ? req.query.entityType : '',
req.query.language ? req.query.language : '',
req.userDetails.userInformation.tenantId
)
// Resolves the promise with the retrieved entity data
return resolve(userRoleDetails)
Expand All @@ -407,6 +418,7 @@ module.exports = class Entities extends Abstract {
* @apiName details
* @apiGroup Entities
* @apiHeader {String} X-authenticated-user-token Authenticity token
* @param {Object} req - The request object.
* @apiSampleRequest v1/entities/details/67dcf90f97174bab15241faa?&language=hi
* @apiUse successBody
* @apiUse errorBody
Expand Down Expand Up @@ -492,7 +504,8 @@ module.exports = class Entities extends Abstract {
let result = await entitiesHelper.details(
req.params._id ? req.params._id : '',
req.body ? req.body : {},
req.query.language ? req.query.language : ''
req.query.language ? req.query.language : '',
req.userDetails
)

return resolve(result)
Expand All @@ -517,9 +530,6 @@ module.exports = class Entities extends Abstract {
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req - requested entity data.
* @param {String} req.query.type - entity type.
* @param {String} req.params._id - entity id.
* @param {Object} req.body - entity information that need to be updated.
* @returns {JSON} - Updated entity information.
*
*
Expand Down Expand Up @@ -549,7 +559,7 @@ module.exports = class Entities extends Abstract {
return new Promise(async (resolve, reject) => {
try {
// Call 'entitiesHelper.update' to perform the entity update operation
let result = await entitiesHelper.update(req.params._id, req.body)
let result = await entitiesHelper.update(req.params._id, req.body, req.userDetails)

return resolve(result)
} catch (error) {
Expand All @@ -573,7 +583,6 @@ module.exports = class Entities extends Abstract {
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req - All requested Data.
* @param {Object} req.files - requested files.
* @returns {JSON} - Added entities information.
*
* "result": [
Expand Down Expand Up @@ -602,8 +611,6 @@ module.exports = class Entities extends Abstract {
// Prepare query parameters for adding the entity
let queryParams = {
type: req.query.type,
// programId: req.query.programId,
// solutionId: req.query.solutionId,
parentEntityId: req.query.parentEntityId,
}
// Call 'entitiesHelper.add' to perform the entity addition operation
Expand Down Expand Up @@ -634,7 +641,6 @@ module.exports = class Entities extends Abstract {
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req - requested data.
* @param {Object} req.body.locationIds - registry data.
* @returns {Object} -
*
* "result": [
Expand All @@ -660,7 +666,7 @@ module.exports = class Entities extends Abstract {
return new Promise(async (resolve, reject) => {
try {
// Call 'entitiesHelper.listByLocationIds' to retrieve entities based on location IDs
let entitiesData = await entitiesHelper.listByLocationIds(req.body.locationIds)
let entitiesData = await entitiesHelper.listByLocationIds(req.body.locationIds, req.userDetails)

entitiesData.result = entitiesData.data

Expand All @@ -683,6 +689,7 @@ module.exports = class Entities extends Abstract {
* @apiGroup Entities
* @apiHeader {String} X-authenticated-user-token Authenticity token
* @apiSampleRequest v1/entities/subEntityListBasedOnRoleAndLocation
* @param {Object} req - The request object.
* @apiUse successBody
* @apiUse errorBody
* @param {String} req.params._id - entityId.
Expand Down Expand Up @@ -716,7 +723,10 @@ module.exports = class Entities extends Abstract {
return new Promise(async (resolve, reject) => {
try {
// Call 'entitiesHelper.subEntityListBasedOnRoleAndLocation' to retrieve sub-entity list
const entityTypeMappingData = await entitiesHelper.subEntityListBasedOnRoleAndLocation(req.params._id)
const entityTypeMappingData = await entitiesHelper.subEntityListBasedOnRoleAndLocation(
req.params._id,
req.userDetails
)
return resolve(entityTypeMappingData)
} catch (error) {
return reject({
Expand All @@ -737,7 +747,6 @@ module.exports = class Entities extends Abstract {
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req - requested data.
* @param {String} req.params._id - requested entity type.
* @returns {JSON} - Array of entities.

"result": [
Expand Down Expand Up @@ -782,12 +791,7 @@ module.exports = class Entities extends Abstract {
* @apiSampleRequest /v1/entities/list
* @apiUse successBody
* @apiUse errorBody
* @param {String} req.query.type - type of entity requested.
* @param {String} req.params._id - requested entity id.
* @param {Number} req.pageSize - total size of the page.
* @param {Number} req.pageNo - page number.
* @param {string} req.query.schoolTypes - comma seperated school types.
* @param {string} req.query.administrationTypes - comma seperated administration types.
* @param {Object} req - The request object.
* @apiParamExample {json} Response:
* "result": [
{
Expand All @@ -811,7 +815,8 @@ module.exports = class Entities extends Abstract {
req.pageSize,
req.pageSize * (req.pageNo - 1),
req.schoolTypes,
req.administrationTypes
req.administrationTypes,
req.userDetails
)

return resolve(result)
Expand Down Expand Up @@ -881,7 +886,8 @@ module.exports = class Entities extends Abstract {
req.searchText,
req.pageSize,
req.pageNo,
req.query.language ? req.query.language : ''
req.query.language ? req.query.language : '',
req.userDetails
)
return resolve(entityDocuments)
} catch (error) {
Expand Down Expand Up @@ -916,16 +922,19 @@ module.exports = class Entities extends Abstract {
* List of entities.
* @method
* @name listByIds
* @param {Object} req - requested data.
* @param {String} req.params._id - requested entity type.
* @param {Object} req - requested data.
* @returns {JSON} - Array of entities.
*/

listByIds(req) {
return new Promise(async (resolve, reject) => {
try {
// Call 'entitiesHelper.listByEntityIds' to retrieve entities based on provided entity IDs and fields
const entities = await entitiesHelper.listByEntityIds(req.body.entities, req.body.fields)
const entities = await entitiesHelper.listByEntityIds(
req.body.entities,
req.body.fields,
req.userDetails
)
return resolve(entities)
} catch (error) {
return reject({
Expand All @@ -948,10 +957,6 @@ module.exports = class Entities extends Abstract {
* @apiUse errorBody
* @apiParamExample {json} Response:
* @param {Object} req - requested data.
* @param {String} req.query.type - requested entity type.
* @param {Object} req.userDetails - logged in user details.
* @param {Object} req.files.entities - entities data.
* @param {Object} req.files.translationFile - translation data.
* @returns {CSV} - A CSV with name Entity-Upload is saved inside the folder
* public/reports/currentDate
*
Expand Down Expand Up @@ -1025,8 +1030,6 @@ module.exports = class Entities extends Abstract {
* @apiUse errorBody
* @apiParamExample {json} Response:
* @param {Object} req - requested data.
* @param {Object} req.files.entities - entities data.
* @param {Object} req.files.translationFile - entities data.
* @returns {CSV} - A CSV with name Entity-Upload is saved inside the folder
* public/reports/currentDate
*
Expand All @@ -1049,7 +1052,7 @@ module.exports = class Entities extends Abstract {
translationFile = JSON.parse(req.files.translationFile.data.toString())
}
// Call 'entitiesHelper.bulkUpdate' to update entities based on CSV data and user details
let newEntityData = await entitiesHelper.bulkUpdate(entityCSVData, translationFile)
let newEntityData = await entitiesHelper.bulkUpdate(entityCSVData, translationFile, userDetails)

// Check if entities were updated successfully
if (newEntityData.length > 0) {
Expand Down
30 changes: 19 additions & 11 deletions src/controllers/v1/entityTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,26 @@ module.exports = class EntityTypes extends Abstract {
}
]
*/
async list() {
async list(req) {
return new Promise(async (resolve, reject) => {
try {
// Call 'entityTypesHelper.list' to retrieve a list of entity types
// 'all' parameter retrieves all entity types, and { name: 1 } specifies projection to include only 'name' field
let result = await entityTypesHelper.list('all', { name: 1 })
let organizationId
let query = {}

// create query to fetch assets
query['tenantId'] = req.userDetails.tenantAndOrgInfo
? req.userDetails.tenantAndOrgInfo.tenantId
: req.userDetails.userInformation.tenantId
query['orgIds'] = req.userDetails.tenantAndOrgInfo
? { $in: req.userDetails.tenantAndOrgInfo.orgIds }
: { $in: [req.userDetails.userInformation.organizationId] }

// handle currentOrgOnly filter
if (req.query['currentOrgOnly'] && req.query['currentOrgOnly'] == 'true') {
organizationId = req.userDetails.userInformation.organizationId
query['orgIds'] = { $in: [organizationId] }
}
let result = await entityTypesHelper.list(query, { name: 1 })

return resolve(result)
} catch (error) {
Expand Down Expand Up @@ -123,7 +137,6 @@ module.exports = class EntityTypes extends Abstract {
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req -request data.
* @param {Object} req.files.entityTypes -entityTypes data.
* @returns {CSV} create single entity Types data.
*
* "result": {
Expand Down Expand Up @@ -166,9 +179,6 @@ module.exports = class EntityTypes extends Abstract {
* @apiUse successBody
* @apiUse errorBody
* @param {Object} req - requested entityType data.
* @param {String} req.query.type - entityType type.
* @param {String} req.params._id - entityType id.
* @param {Object} req.body - entityType information that need to be updated.
* @returns {JSON} - Updated entityType information.
* "result": {
"profileForm": [],
Expand Down Expand Up @@ -199,7 +209,7 @@ module.exports = class EntityTypes extends Abstract {
return new Promise(async (resolve, reject) => {
try {
// Call 'entityTypesHelper.update' to update an existing entity type
let result = await entityTypesHelper.update(req.params._id, req.body, req.userDetails.userInformation)
let result = await entityTypesHelper.update(req.params._id, req.body, req.userDetails)

return resolve(result)
} catch (error) {
Expand All @@ -223,7 +233,6 @@ module.exports = class EntityTypes extends Abstract {
* @apiUse errorBody
* @apiParamExample {json} Response:
* @param {Object} req -request data.
* @param {Object} req.files.entityTypes -entityTypes data.
* @returns {CSV} Bulk create entity Types data.
*/
async bulkCreate(req) {
Expand Down Expand Up @@ -288,7 +297,6 @@ module.exports = class EntityTypes extends Abstract {
* @apiUse errorBody
* @apiParamExample {json} Response:
* @param {Object} req -request data.
* @param {Object} req.files.entityTypes -entityTypes data.
* @returns {CSV} Bulk update entity Types data.
*/
async bulkUpdate(req) {
Expand Down
Loading