Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
e9cf645
Issue #251045 feat: Hierarchical Categories Implementation
vaivk369 Jan 8, 2026
554d27a
added details API
vaivk369 Jan 8, 2026
030f146
Issue #000 fix: metainformation added
vaivk369 Jan 8, 2026
ceb9598
Issue #000 fix: parent_id is not defined
vaivk369 Jan 8, 2026
173caa3
Issue #000 fix: parent_id is not defined
vaivk369 Jan 8, 2026
5aa79a8
Coderabbit comments resolved
vaivk369 Jan 8, 2026
a77b037
Resolving commnets
vaivk369 Jan 9, 2026
a6b6f27
Resolving commnets
vaivk369 Jan 9, 2026
785dbe9
Resolving commnets
vaivk369 Jan 9, 2026
28fe71d
Update .env.sample
AbhilashKD Jan 10, 2026
567f3fd
Merge pull request #1 from vaivk369/new-dev
vaivk369 Jan 10, 2026
be237cf
Create brac-dev-deployment.yaml
AbhilashKD Jan 10, 2026
4883172
Explicitly export AWS variables in deployment script
AbhilashKD Jan 10, 2026
73288b4
Update brac-dev-deployment.yaml
AbhilashKD Jan 10, 2026
c6880eb
Issue #000 fix: if entityId is passed to the importFromLibray, error …
vaivk369 Jan 12, 2026
119f728
Issue #000 fix: if entityId is passed to the importFromLibray, error …
vaivk369 Jan 12, 2026
3c71067
Merge pull request #2 from vaivk369/import-lib-entityID
vaivk369 Jan 12, 2026
ee6f92b
Issue #000 fix: ProgramUser mapping
vaivk369 Jan 20, 2026
09709aa
Merge pull request #3 from vaivk369/vk-idp-mt
vaivk369 Jan 20, 2026
df605d8
Routes added
vaivk369 Jan 20, 2026
90ab393
Routes added
vaivk369 Jan 20, 2026
567600d
Merge branch 'develop' into vk-idp-mt
vaivk369 Jan 20, 2026
d05b050
Merge pull request #4 from vaivk369/vk-idp-mt
vaivk369 Jan 20, 2026
af22646
Issue#252622 Feat: Importing project from multiple templates
Sachintechjoomla Jan 20, 2026
f381ced
Issue#252622 Feat: Importing project from multiple templates
Sachintechjoomla Jan 20, 2026
e4489a1
Issue#252622 Feat: Importing project from multiple templates
Sachintechjoomla Jan 20, 2026
91ec872
Routes added
vaivk369 Jan 20, 2026
8a3a639
Merge branch 'vk-idp-mt' of github.com:vaivk369/sl-project-service in…
vaivk369 Jan 20, 2026
7507135
Merge pull request #5 from vaivk369/vk-idp-mt
vaivk369 Jan 20, 2026
07f7e35
filter by search and status
vaivk369 Jan 20, 2026
92cf1ed
Merge pull request #6 from vaivk369/vk-idp-mt
vaivk369 Jan 20, 2026
31c6edd
Issue #000 fix: limit and page not working
vaivk369 Jan 21, 2026
38354e4
Merge pull request #7 from vaivk369/vk-idp-mt
vaivk369 Jan 21, 2026
73cada4
Issue#252622 Feat: Importing project from multiple templates
Sachintechjoomla Jan 21, 2026
f630f70
Merge pull request #8 from Sachintechjoomla/Issue#252622
vaivk369 Jan 21, 2026
79d5a80
Issue #000 fix: getEntities by entityId
vaivk369 Jan 21, 2026
38974d3
Merge pull request #9 from vaivk369/vk-idp-mt
vaivk369 Jan 21, 2026
60906ab
Feat: API to update the specific entity of the LC entities
vaivk369 Jan 21, 2026
fd02bfa
Merge pull request #11 from vaivk369/vk-idp-mt
vaivk369 Jan 21, 2026
3d62845
Feat: API to update the specific entity of the LC entities
vaivk369 Jan 21, 2026
77cfb22
Merge pull request #12 from vaivk369/vk-idp-mt
vaivk369 Jan 21, 2026
bee293d
Issue #000 fix: updating overview count on craeteOrUpdate and updateE…
vaivk369 Jan 21, 2026
d8944a5
Merge pull request #13 from vaivk369/vk-idp-mt
vaivk369 Jan 21, 2026
7ae4667
Issue #000 fix: fetching user profile from user service directly inst…
vaivk369 Jan 22, 2026
e66f7f5
Issue #000 update user entity status when idp is assignned, and creat…
vaivk369 Jan 22, 2026
643cafb
Merge pull request #14 from vaivk369/vk-createProjectPlan
vaivk369 Jan 22, 2026
86b2021
Issue #000 fix: user activity kafka consumer added which will listen …
vaivk369 Jan 22, 2026
b5c84b8
Merge pull request #15 from vaivk369/vk-createProjectPlan
vaivk369 Jan 22, 2026
2951691
Issue #000 fix: user activity kafka consumer removed as it was async
vaivk369 Jan 22, 2026
a44c198
Merge pull request #16 from vaivk369/vk-createProjectPlan
vaivk369 Jan 22, 2026
c659189
Issue #000 fix: check for program reference
vaivk369 Jan 23, 2026
a47316e
Merge pull request #17 from vaivk369/vk-createProjectPlan
vaivk369 Jan 23, 2026
4c3287d
Merge pull request #18 from vaivk369/vk-merge-upstream
vaivk369 Jan 23, 2026
9650f12
Issue #000 fix: remove timestamp from the name of the child observation
vaivk369 Jan 23, 2026
28830cd
Issue #000 fix: add templates and acl to the project plan
vaivk369 Jan 27, 2026
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: 1 addition & 1 deletion .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,4 @@ ORG_UPDATES_TOPIC = elevate_project_org_extension_event_listener

USER_ACCOUNT_EVENT_TOPIC = elevate_user_account_event_listener // Kafka topic to listen user account events
SESSION_VERIFICATION_METHOD = user_service_authenticated // session verification method
USER_SERVICE_INTERNAL_ACCESS_TOKEN_HEADER_KEY = internal_access_token // user service's internal access token header key
USER_SERVICE_INTERNAL_ACCESS_TOKEN_HEADER_KEY = internal_access_token // user service's internal access token header key.
81 changes: 81 additions & 0 deletions .github/workflows/brac-dev-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Dev Build & Deploy Project Service (BRAC)

on:
push:
branches:
- develop

env:
AWS_REGION: ${{ secrets.AWS_REGION }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_BRAC }}
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}

jobs:
build-and-deploy:
runs-on: ubuntu-latest

permissions:
contents: read

steps:
- name: Checkout code
uses: actions/checkout@v4

# =========================
# AWS Authentication
# =========================
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

# =========================
# Login to Amazon ECR
# =========================
- name: Login to Amazon ECR
uses: aws-actions/amazon-ecr-login@v2

# =========================
# Build & Push Image
# =========================
- name: Build and Push Docker Image to ECR
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: |
${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:latest-brac
${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:${{ github.sha }}

# =========================
# Deploy on Server
# =========================
- name: Deploy Stack
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST_NAME_DEV }}
username: ${{ secrets.USERNAME_DEV }}
key: ${{ secrets.SSH_KEY_DEV }}
port: ${{ secrets.PORT_DEV }}
script: |
set -e

# Export AWS variables explicitly
export AWS_REGION="${{ secrets.AWS_REGION }}"
export AWS_ACCOUNT_ID="${{ secrets.AWS_ACCOUNT_ID }}"

cd ${{ secrets.TARGET_DIR_DEV }}

if [ -f .env ]; then
mv .env .env-bkp
fi

echo '${{ secrets.DEV_ENV_BRAC }}' > .env

aws ecr get-login-password --region "$AWS_REGION" \
| docker login --username AWS \
--password-stdin "$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com"

./deploy.sh
21 changes: 17 additions & 4 deletions config/kafka.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const USER_DELETE_ON_OFF = process.env.USER_DELETE_ON_OFF
const COURSES_TOPIC = process.env.USER_COURSES_SUBMISSION_TOPIC
const ORG_EXTENSION_TOPIC = process.env.ORG_UPDATES_TOPIC
const USER_ACCOUNT_EVENT_TOPIC = process.env.USER_ACCOUNT_EVENT_TOPIC
const USER_ACTIVITY_TOPIC = process.env.USER_ACTIVITY_TOPIC

/**
* Kafka configurations.
Expand Down Expand Up @@ -59,6 +60,9 @@ const connect = function () {

// consume event that produced by the user service
_sendToKafkaConsumers(USER_ACCOUNT_EVENT_TOPIC, process.env.KAFKA_URL)

_sendToKafkaConsumers(USER_ACTIVITY_TOPIC, process.env.KAFKA_URL)

return {
kafkaProducer: producer,
kafkaClient: client,
Expand All @@ -85,10 +89,10 @@ var _sendToKafkaConsumers = function (topic, host) {
)

consumer.on('message', async function (message) {
console.log('-------Kafka consumer log starts here------------------')
console.log('Topic Name: ', topic)
console.log('Message: ', JSON.stringify(message))
console.log('-------Kafka consumer log ends here------------------')
// console.log('-------Kafka consumer log starts here------------------')
// console.log('Topic Name: ', topic)
// console.log('Message: ', JSON.stringify(message))
// console.log('-------Kafka consumer log ends here------------------')

if (message && message.topic === SUBMISSION_TOPIC) {
submissionsConsumer.messageReceived(message)
Expand Down Expand Up @@ -117,6 +121,11 @@ var _sendToKafkaConsumers = function (topic, host) {
if (message && message.topic === USER_ACCOUNT_EVENT_TOPIC) {
userExtensionConsumer.messageReceived(message)
}

// call projectActivity consumer
if (message && message.topic === USER_ACTIVITY_TOPIC) {
userActivitiesConsumer.messageReceived(message)
}
})

consumer.on('error', async function (error) {
Expand All @@ -143,6 +152,10 @@ var _sendToKafkaConsumers = function (topic, host) {
if (error.topics && error.topics[0] === USER_ACCOUNT_EVENT_TOPIC) {
userExtensionConsumer.errorTriggered(error)
}

if (error.topics && error.topics[0] === USER_ACTIVITY_TOPIC) {
userActivitiesConsumer.errorTriggered(error)
}
})
}
}
Expand Down
70 changes: 70 additions & 0 deletions constants/interface-routes/elevate-project/configs.json
Original file line number Diff line number Diff line change
Expand Up @@ -905,6 +905,62 @@
],
"service": "project"
},
{
"sourceRoute": "/project/v1/library/categories/delete/:id",
"type": "DELETE",
"priority": "MUST_HAVE",
"inSequence": false,
"orchestrated": false,
"targetPackages": [
{
"basePackageName": "project",
"packageName": "elevate-project"
}
],
"service": "project"
},
{
"sourceRoute": "/project/v1/library/categories/details/:id",
"type": "GET",
"priority": "MUST_HAVE",
"inSequence": false,
"orchestrated": false,
"targetPackages": [
{
"basePackageName": "project",
"packageName": "elevate-project"
}
],
"service": "project"
},
{
"sourceRoute": "/project/v1/programUsers/createOrUpdate",
"type": "POST",
"priority": "MUST_HAVE",
"inSequence": false,
"orchestrated": false,
"targetPackages": [
{
"basePackageName": "project",
"packageName": "elevate-project"
}
],
"service": "project"
},
{
"sourceRoute": "/project/v1/programUsers/getEntities",
"type": "GET",
"priority": "MUST_HAVE",
"inSequence": false,
"orchestrated": false,
"targetPackages": [
{
"basePackageName": "project",
"packageName": "elevate-project"
}
],
"service": "project"
},
{
"sourceRoute": "/project/v1/programs/create",
"type": "POST",
Expand Down Expand Up @@ -1521,6 +1577,20 @@
],
"service": "project"
},
{
"sourceRoute": "/project/v1/userProjects/createProjectPlan",
"type": "POST",
"priority": "MUST_HAVE",
"inSequence": false,
"orchestrated": false,
"targetPackages": [
{
"basePackageName": "project",
"packageName": "elevate-project"
}
],
"service": "project"
},
{
"sourceRoute": "/project/v1/userProjects/update",
"type": "POST",
Expand Down
67 changes: 63 additions & 4 deletions controllers/v1/library/categories.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ module.exports = class LibraryCategories extends Abstract {
}

/**
* @api {get} /improvement-project/api/v1/library/categories/projects/:categoryExternalId?page=:page&limit=:limit&search=:search&sort=:sort
* @api {get} /improvement-project/api/v1/library/categories/projects/:categoryExternalId?page=:page&limit=:limit&search=:search&sort=:sort
* List of library projects.
* @apiVersion 1.0.0
* @apiGroup Library Categories
Expand All @@ -56,7 +56,7 @@ module.exports = class LibraryCategories extends Abstract {
"description" : "Test template description",
"createdAt": "2020-08-31T05:59:12.230Z"
}
],
],
"count": 7
}
}
Expand Down Expand Up @@ -179,7 +179,7 @@ module.exports = class LibraryCategories extends Abstract {
}

/**
* @api {get} /improvement-project/api/v1/library/categories/list
* @api {get} /improvement-project/api/v1/library/categories/list
* List of library categories.
* @apiVersion 1.0.0
* @apiGroup Library Categories
Expand Down Expand Up @@ -240,7 +240,66 @@ module.exports = class LibraryCategories extends Abstract {
async list(req) {
return new Promise(async (resolve, reject) => {
try {
let projectCategories = await libraryCategoriesHelper.list(req)
let projectCategories = await libraryCategoriesHelper.list(req.searchText, req.query, req.userDetails)

projectCategories.result = projectCategories.data

return resolve(projectCategories)
} catch (error) {
return reject({
status: error.status || HTTP_STATUS_CODE.internal_server_error.status,
message: error.message || HTTP_STATUS_CODE.internal_server_error.message,
errorObject: error,
})
}
})
}

/**
* delete a library category
* @method
* @name delete
* @param {Object} req - requested data
* @returns {Array} Library categories.
*/

async delete(req) {
return new Promise(async (resolve, reject) => {
try {
const filterQuery = {
_id: req.params._id,
}
let projectCategories = await libraryCategoriesHelper.delete(filterQuery, req.userDetails)

projectCategories.result = projectCategories.data

return resolve(projectCategories)
} catch (error) {
return reject({
status: error.status || HTTP_STATUS_CODE.internal_server_error.status,
message: error.message || HTTP_STATUS_CODE.internal_server_error.message,
errorObject: error,
})
}
})
}

/**
* read a library category
* @method
* @name details
* @param {Object} req - requested data
* @returns {Array} Library categories.
*/

async details(req) {
return new Promise(async (resolve, reject) => {
try {
const filterQuery = {
_id: req.params._id,
getChildren: req.query.getChildren === 'true',
}
let projectCategories = await libraryCategoriesHelper.details(filterQuery, req.userDetails)

projectCategories.result = projectCategories.data

Expand Down
Loading