Skip to content

FLW-713 Remove All File Upload Options#350

Merged
vanitha1822 merged 4 commits intorelease-3.6.1-fixfrom
feature/remove_upload_file
Jan 30, 2026
Merged

FLW-713 Remove All File Upload Options#350
vanitha1822 merged 4 commits intorelease-3.6.1-fixfrom
feature/remove_upload_file

Conversation

@SauravBizbRolly
Copy link
Copy Markdown
Contributor

@SauravBizbRolly SauravBizbRolly commented Jan 29, 2026

📋 Description

JIRA ID: FLW-713

Remove All File Upload Options


✅ Type of Change

  • 🐞 Bug fix (non-breaking change which resolves an issue)
  • New feature (non-breaking change which adds functionality)
  • 🔥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 🛠 Refactor (change that is neither a fix nor a new feature)
  • ⚙️ Config change (configuration file or build script updates)
  • 📚 Documentation (updates to docs or readme)
  • 🧪 Tests (adding new or updating existing tests)
  • 🎨 UI/UX (changes that affect the user interface)
  • 🚀 Performance (improves performance)
  • 🧹 Chore (miscellaneous changes that don't modify src or test files)

ℹ️ Additional Information

Please describe how the changes were tested, and include any relevant screenshots, logs, or other information that provides additional context.

Summary by CodeRabbit

  • New Features
    • Added JWT token-based authentication requirement to dynamic form retrieval endpoints for enhanced security
    • Extended form field attributes with editability status and state tracking capabilities
    • Added Assamese language translation support for multi-language forms
    • Introduced comprehensive user service role mapping functionality with geographic and organizational context

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Jan 29, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 🔍 Trigger a full review
📝 Walkthrough

Walkthrough

This pull request introduces JWT token-based authentication for structured form retrieval, enabling state-specific field filtering. It adds persistent fields to track form field editability and state assignment, expands translation support with Assamese language, and creates a new JPA entity class for user-service-role mappings with corresponding repository access.

Changes

Cohort / File(s) Summary
Authentication & Token Processing
src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java, src/main/java/com/iemr/common/service/dynamicForm/FormMasterService.java, src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java
Added required JWT token header parameter to form retrieval endpoint; service now extracts state ID from token, retrieves user roles, filters form fields by state, and includes token-aware error handling and logging.
Entity & DTO Schema Expansion
src/main/java/com/iemr/common/data/dynamic_from/FormField.java, src/main/java/com/iemr/common/data/translation/Translation.java, src/main/java/com/iemr/common/dto/dynamicForm/FieldResponseDTO.java
Added isEditable and stateCode fields to FormField and FieldResponseDTO; added assameseTranslation field to Translation entity for multi-language support.
User Service Role Mapping
src/main/java/com/iemr/common/data/users/UserServiceRole.java, src/main/java/com/iemr/common/service/users/UserServiceRoleRepo.java
Introduced new JPA entity UserServiceRole mapped to v_userservicerolemapping table with comprehensive field mappings for user, service, role, and location data; added repository interface with custom findByUserName query method.

Sequence Diagram(s)

sequenceDiagram
    actor Client
    participant Controller as DynamicFormController
    participant Service as FormMasterServiceImpl
    participant JwtUtil
    participant UserRepo as UserServiceRoleRepo
    participant DB as Database

    Client->>Controller: GET /form/{formId}?lang=en<br/>(Header: jwttoken)
    activate Controller
    Controller->>Service: getStructuredFormByFormId(formId, lang, token)
    activate Service
    
    Service->>JwtUtil: Extract stateId from token
    activate JwtUtil
    JwtUtil-->>Service: stateId
    deactivate JwtUtil
    
    Service->>UserRepo: findByUserName(userName from token)
    activate UserRepo
    UserRepo->>DB: Query user roles
    DB-->>UserRepo: UserServiceRole list
    deactivate UserRepo
    UserRepo-->>Service: User roles
    
    Service->>DB: Retrieve form by formId
    DB-->>Service: Form & Fields
    
    Service->>Service: Filter fields by stateId<br/>Apply language translations<br/>Parse options/validations/conditionals
    
    Service-->>Controller: FormResponseDTO
    deactivate Service
    
    Controller-->>Client: ApiResponse with form data
    deactivate Controller
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A hop, a skip, through tokens we spring,
States and roles in data we bring,\
Forms now filter with JWT's might,\
Assamese words shine ever so bright!\
New tables mapped, the schema's delight! ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title check ⚠️ Warning The PR title 'Remove All File Upload Options' does not match the actual changes, which involve adding JWT token authentication, new database fields, and a new JPA entity—not removing file upload functionality. Update the title to accurately reflect the primary changes, such as 'Add JWT token authentication to structured forms API' or 'Extend form fields and add user service role mapping'.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@SauravBizbRolly
Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Jan 29, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🤖 Fix all issues with AI agents
In `@src/main/java/com/iemr/common/data/users/UserServiceRole.java`:
- Line 10: Change the primary key field usrMappingId in UserServiceRole from
primitive int to the wrapper type Integer and update its accessor methods
(getUsrMappingId and setUsrMappingId) accordingly so the ID can be null for
unsaved entities; locate the usrMappingId declaration and the corresponding
getter/setter in class UserServiceRole and replace the type usages (including
any annotations or JPA mappings tied to usrMappingId) from int to Integer.
- Line 30: Rename the misspelled field userServciceRoleDeleted to
userServiceRoleDeleted in the UserServiceRole class and update its getter/setter
names accordingly (e.g., getUserServiceRoleDeleted/setUserServiceRoleDeleted);
also update all usages/references (constructors, equals/hashCode, JSON mappings,
DTOs, tests) to the new name and, if a `@Column` annotation or other persistence
mapping relies on the old name, add or update
`@Column`(name="userServcice_role_deleted") (or the exact DB column name) to
preserve the existing database mapping.
- Around line 364-368: The class UserServiceRole overrides hashCode() but has no
corresponding equals(), and hashCode() currently uses many mutable fields; add
an equals(Object o) implementation in UserServiceRole that compares the same
identity field(s) used for equality (e.g., usrMappingId or a stable identifier
such as userId/usrMappingId) and update hashCode() to compute only from that
stable identifier; ensure equals handles nulls and type checks (instanceof), and
keep both methods consistent so JPA entity identity is based on the chosen
identifier field(s) only.
- Around line 6-8: Update UserServiceRole to use Integer for the primary key
field (replace primitive int id) and implement equals(Object) to match the
existing hashCode contract; refactor hashCode() so it relies only on the
identifier (id) rather than all mutable fields, and make equals(Object) compare
instances by id (handling null/unsaved ids properly). Rename the misspelled
field userServciceRoleDeleted → userServiceRoleDeleted and convert blockid and
villageid to camelCase (blockId, villageId) throughout the class. Also review
the `@GeneratedValue`(strategy = GenerationType.IDENTITY) usage on the id field in
light of the v_userservicerolemapping view (ensure the DB supports generated ids
or remove the generator if the entity is read-only). Optionally consider
converting to Lombok (`@Data`) with field-based JPA annotations for consistency
with Translation and FormField after these fixes.

In
`@src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java`:
- Around line 215-216: The line in FormMasterServiceImpl that does
singleSection.setSectionTitle(singleSection.getSectionTitle()) is a no-op and
leaves the DTO title null; replace it to assign a real title (for example use a
local sectionTitle variable if one exists, or derive it from the grouped fields
like the first field's getSectionTitle(), or a form/getSectionTitle method) so
GroupedFieldResponseDTO.singleSection receives a meaningful section title rather
than resetting itself.
- Around line 119-127: The code risks NPE and IOBE when accessing token and the
userServiceRole list: ensure token is not null before calling token.isEmpty()
(use token != null && !token.isEmpty()), obtain username via
jwtUtil.getUsernameFromToken only when token is valid, then check the returned
list from userServiceRoleRepo.findByUserName is not null and not empty before
accessing userServiceRole.get(0); only then assign stateId and call logger.info
(use clear message like "StateId: "+stateId). Also consider handling the else
cases (leave stateId as 0 or log a warning) in the methods/classes: token,
jwtUtil.getUsernameFromToken, userServiceRoleRepo.findByUserName,
userServiceRole.get(0).
- Around line 226-230: The catch in FormMasterServiceImpl currently logs the
exception and returns null, which hides failures; instead modify the catch in
the method containing that try/catch to either re-throw a runtime (or service)
exception (e.g., throw new RuntimeException("Failed to <operation> in
FormMasterServiceImpl", e)) or return a well-defined error DTO/result object so
callers can detect failure; ensure you reference the original exception (e) when
re-throwing or wrapping so the stack trace is preserved and update any
callers/controllers to handle the thrown exception or error result accordingly.
- Around line 137-138: In FormMasterServiceImpl where fieldDtos is built,
replace the unsafe Integer comparison formField.getStateCode()==0 with a
null-safe check using either unboxing (formField.getStateCode() != null &&
formField.getStateCode().intValue() == 0) or equals against an Integer constant
(Integer.valueOf(0).equals(formField.getStateCode())), and keep the existing
comparison to finalStateId similarly null-safe (finalStateId ==
formField.getStateCode().intValue() or
formField.getStateCode().equals(finalStateId)); ensure you reference the
fields.stream(...) filter that uses formField.getStateCode to locate and update
the check.
🧹 Nitpick comments (7)
src/main/java/com/iemr/common/service/users/UserServiceRoleRepo.java (1)

1-17: Package placement and unused imports.

  1. Unused imports: @Query and @Param (lines 5-6) are imported but never used.
  2. Package naming: This repository is placed in com.iemr.common.service.users but repositories are typically placed in a repository package (e.g., com.iemr.common.repository.users).
♻️ Proposed fix
 package com.iemr.common.service.users;
 
 import com.iemr.common.data.users.UserServiceRole;
 import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java (2)

10-10: Remove unused import.

The org.springframework.data.jpa.repository.Query import is not used in this controller.


86-89: Consider token handling and header naming.

  1. Breaking change: The jwttoken header is now required (no required = false). This will break existing clients that don't provide this header.
  2. Header naming convention: Consider using standard header naming like Authorization with a Bearer prefix, which is the OAuth 2.0 convention.

If backward compatibility is needed, consider making the token optional with graceful fallback:

♻️ Example with optional token
 `@GetMapping`(value = "form/{formId}/fields")
-public ResponseEntity<ApiResponse<?>> getStructuredForm(`@PathVariable` String formId, `@RequestParam`(name = "lang", defaultValue = "en") String lang,`@RequestHeader`(value = "jwttoken") String token) {
+public ResponseEntity<ApiResponse<?>> getStructuredForm(`@PathVariable` String formId, `@RequestParam`(name = "lang", defaultValue = "en") String lang, `@RequestHeader`(value = "Authorization", required = false) String token) {
src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java (2)

26-26: Remove unused import.

javax.persistence.criteria.CriteriaBuilder is imported but not used.


203-206: Use logger instead of System.err.println.

Line 205 uses System.err.println for error logging. The class already has a logger configured—use it consistently.

♻️ Proposed fix
                     } catch (Exception e) {
-
-                        System.err.println("JSON Parsing Error in field: " + field.getFieldId());
+                        logger.error("JSON Parsing Error in field: {}", field.getFieldId(), e);
                         throw new RuntimeException("Failed to parse JSON for field: " + field.getFieldId(), e);
                     }
src/main/java/com/iemr/common/data/users/UserServiceRole.java (2)

37-40: Inconsistent field naming convention.

Fields blockid, blockname, villageid, villagename use lowercase while other fields like workingDistrictId, workingLocationId use camelCase. For consistency and Java naming conventions, consider renaming these fields to blockId, blockName, villageId, villageName.

If the database column names require lowercase, keep the @Column(name = "...") annotation to preserve the mapping.


1-41: Consider using Lombok to reduce boilerplate.

This entity has ~32 fields with manual getters/setters spanning 300+ lines. Other entities in this codebase (e.g., Translation.java, FormField.java) use Lombok's @Data annotation with field-based JPA annotations.

Adopting Lombok would significantly reduce boilerplate and improve maintainability.

♻️ Example refactored structure using Lombok
package com.iemr.common.data.users;

import jakarta.persistence.*;
import lombok.Data;
import java.util.Objects;

`@Entity`
`@Table`(name = "v_userservicerolemapping", schema = "db_iemr")
`@Data`
public class UserServiceRole {
    
    `@Id`
    `@GeneratedValue`(strategy = GenerationType.IDENTITY)
    `@Column`(name = "USRMappingID")
    private Integer usrMappingId;
    
    `@Column`(name = "UserID")
    private Integer userId;
    
    `@Column`(name = "Name")
    private String name;
    
    `@Column`(name = "UserName")
    private String userName;
    
    // ... remaining fields with `@Column` annotations ...
    
    // Override equals/hashCode for proper JPA entity identity
    `@Override`
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        UserServiceRole that = (UserServiceRole) o;
        return usrMappingId != null && Objects.equals(usrMappingId, that.usrMappingId);
    }
    
    `@Override`
    public int hashCode() {
        return Objects.hash(usrMappingId);
    }
}

Comment on lines +6 to +8
@Entity
@Table(name = "v_userservicerolemapping", schema = "db_iemr")
public class UserServiceRole {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, read the complete UserServiceRole.java file
cat -n src/main/java/com/iemr/common/data/users/UserServiceRole.java

Repository: PSMRI/Common-API

Length of output: 11714


🏁 Script executed:

# Check if Translation.java exists and uses Lombok
fd Translation.java --type f

Repository: PSMRI/Common-API

Length of output: 123


🏁 Script executed:

# Check if FormField.java exists and uses Lombok
fd FormField.java --type f

Repository: PSMRI/Common-API

Length of output: 122


🏁 Script executed:

# Search for database migration files or schema definitions that mention v_userservicerolemapping
find . -type f \( -name "*.sql" -o -name "*.yml" -o -name "*.yaml" \) -exec grep -l "v_userservicerolemapping" {} \;

Repository: PSMRI/Common-API

Length of output: 42


🏁 Script executed:

# Check Translation.java for Lombok annotations
head -30 src/main/java/com/iemr/common/data/translation/Translation.java

Repository: PSMRI/Common-API

Length of output: 679


🏁 Script executed:

# Check FormField.java for Lombok annotations
head -30 src/main/java/com/iemr/common/data/dynamic_from/FormField.java

Repository: PSMRI/Common-API

Length of output: 743


🏁 Script executed:

# Search for any database schema files that might define v_userservicerolemapping
find . -type f \( -name "*.sql" -o -name "*.yml" -o -name "*.yaml" \) | head -20

Repository: PSMRI/Common-API

Length of output: 279


Implement equals() method to match overridden hashCode(). The class overrides hashCode() (line 365) but lacks an equals() method, violating the Java Object contract. This will cause incorrect behavior in collections and equality comparisons.

Additionally:

  • Use Integer instead of primitive int for the ID field (lines 10, 56). Primitive types cannot distinguish unsaved/null entities in JPA.
  • Fix hashCode() to use only the ID, not all 32 mutable fields. JPA entities should base hashCode() and equals() solely on the identifier to comply with best practices.
  • Verify @GeneratedValue(IDENTITY) compatibility: The table name v_userservicerolemapping (with v_ prefix) suggests a database view, which is typically read-only and may not support auto-generated IDs.
  • Fix typo in field name userServciceRoleDeleted (lines 30, 256) → userServiceRoleDeleted.
  • Standardize field naming: blockid, villageid should follow camelCase convention used elsewhere (blockId, villageId).
  • Consider using Lombok @Data and field-based annotations for consistency with Translation.java and FormField.java.
🤖 Prompt for AI Agents
In `@src/main/java/com/iemr/common/data/users/UserServiceRole.java` around lines 6
- 8, Update UserServiceRole to use Integer for the primary key field (replace
primitive int id) and implement equals(Object) to match the existing hashCode
contract; refactor hashCode() so it relies only on the identifier (id) rather
than all mutable fields, and make equals(Object) compare instances by id
(handling null/unsaved ids properly). Rename the misspelled field
userServciceRoleDeleted → userServiceRoleDeleted and convert blockid and
villageid to camelCase (blockId, villageId) throughout the class. Also review
the `@GeneratedValue`(strategy = GenerationType.IDENTITY) usage on the id field in
light of the v_userservicerolemapping view (ensure the DB supports generated ids
or remove the generator if the entity is read-only). Optionally consider
converting to Lombok (`@Data`) with field-based JPA annotations for consistency
with Translation and FormField after these fixes.

@Table(name = "v_userservicerolemapping", schema = "db_iemr")
public class UserServiceRole {
private Integer userId;
private int usrMappingId;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Use Integer wrapper type instead of primitive int for the primary key.

The primary key field usrMappingId is declared as primitive int (Line 10), which defaults to 0. This makes it impossible to distinguish between an unsaved entity and one with ID=0. JPA best practice is to use wrapper types (Integer) for ID fields so that null can indicate an unpersisted entity.

🔧 Proposed fix
-    private int usrMappingId;
+    private Integer usrMappingId;

And update the getter/setter:

-    public int getUsrMappingId() {
+    public Integer getUsrMappingId() {
         return usrMappingId;
     }

-    public void setUsrMappingId(int usrMappingId) {
+    public void setUsrMappingId(Integer usrMappingId) {
         this.usrMappingId = usrMappingId;
     }

Also applies to: 52-62

🤖 Prompt for AI Agents
In `@src/main/java/com/iemr/common/data/users/UserServiceRole.java` at line 10,
Change the primary key field usrMappingId in UserServiceRole from primitive int
to the wrapper type Integer and update its accessor methods (getUsrMappingId and
setUsrMappingId) accordingly so the ID can be null for unsaved entities; locate
the usrMappingId declaration and the corresponding getter/setter in class
UserServiceRole and replace the type usages (including any annotations or JPA
mappings tied to usrMappingId) from int to Integer.

Comment thread src/main/java/com/iemr/common/data/users/UserServiceRole.java
Comment thread src/main/java/com/iemr/common/data/users/UserServiceRole.java Outdated
Comment on lines +119 to +127
int stateId =0 ;
try {
if(!token.isEmpty()){
List<UserServiceRole> userServiceRole= userServiceRoleRepo.findByUserName(jwtUtil.getUsernameFromToken(token));
if(userServiceRole!=null){
stateId = userServiceRole.get(0).getStateId();
logger.info("State:Id"+stateId);
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Potential NullPointerException and IndexOutOfBoundsException.

Several null/empty checks are missing:

  1. Line 121: token.isEmpty() will throw NullPointerException if token is null.
  2. Line 124: userServiceRole.get(0) will throw IndexOutOfBoundsException if the list is empty.
🐛 Proposed fix with proper null and empty checks
-        int  stateId =0 ;
+        int stateId = 0;
         try {
-            if(!token.isEmpty()){
-                List<UserServiceRole> userServiceRole=  userServiceRoleRepo.findByUserName(jwtUtil.getUsernameFromToken(token));
-                if(userServiceRole!=null){
+            if (token != null && !token.isEmpty()) {
+                String username = jwtUtil.getUsernameFromToken(token);
+                List<UserServiceRole> userServiceRole = userServiceRoleRepo.findByUserName(username);
+                if (userServiceRole != null && !userServiceRole.isEmpty()) {
                     stateId = userServiceRole.get(0).getStateId();
-                    logger.info("State:Id"+stateId);
+                    logger.info("State:Id {}", stateId);
                 }
             }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
int stateId =0 ;
try {
if(!token.isEmpty()){
List<UserServiceRole> userServiceRole= userServiceRoleRepo.findByUserName(jwtUtil.getUsernameFromToken(token));
if(userServiceRole!=null){
stateId = userServiceRole.get(0).getStateId();
logger.info("State:Id"+stateId);
}
}
int stateId = 0;
try {
if (token != null && !token.isEmpty()) {
String username = jwtUtil.getUsernameFromToken(token);
List<UserServiceRole> userServiceRole = userServiceRoleRepo.findByUserName(username);
if (userServiceRole != null && !userServiceRole.isEmpty()) {
stateId = userServiceRole.get(0).getStateId();
logger.info("State:Id {}", stateId);
}
}
🤖 Prompt for AI Agents
In `@src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java`
around lines 119 - 127, The code risks NPE and IOBE when accessing token and the
userServiceRole list: ensure token is not null before calling token.isEmpty()
(use token != null && !token.isEmpty()), obtain username via
jwtUtil.getUsernameFromToken only when token is valid, then check the returned
list from userServiceRoleRepo.findByUserName is not null and not empty before
accessing userServiceRole.get(0); only then assign stateId and call logger.info
(use clear message like "StateId: "+stateId). Also consider handling the else
cases (leave stateId as 0 or log a warning) in the methods/classes: token,
jwtUtil.getUsernameFromToken, userServiceRoleRepo.findByUserName,
userServiceRole.get(0).

Comment thread src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java Outdated
Comment thread src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java Outdated
Comment thread src/main/java/com/iemr/common/service/dynamicForm/FormMasterServiceImpl.java Outdated
Copy link
Copy Markdown
Member

@vanitha1822 vanitha1822 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check the coderabbit comments please.

@sonarqubecloud
Copy link
Copy Markdown

@vanitha1822 vanitha1822 merged commit c6e42d9 into release-3.6.1-fix Jan 30, 2026
3 of 4 checks passed
vishwab1 pushed a commit that referenced this pull request Feb 9, 2026
* FLW-713 Remove All File Upload Options

* Fix UserServiceRoleRepo dependency issue and codeRabit comment

* fixed coderabit comment

* fix userMappingId issue
DurgaPrasad-54 pushed a commit to DurgaPrasad-54/Common-API that referenced this pull request Mar 12, 2026
* FLW-713 Remove All File Upload Options

* Fix UserServiceRoleRepo dependency issue and codeRabit comment

* fixed coderabit comment

* fix userMappingId issue
vishwab1 pushed a commit that referenced this pull request Mar 12, 2026
* FLW-713 Remove All File Upload Options

* Fix UserServiceRoleRepo dependency issue and codeRabit comment

* fixed coderabit comment

* fix userMappingId issue
vanitha1822 added a commit that referenced this pull request Mar 12, 2026
* fix: cors spell fixes and import of packages updates

* fix: deployment issue fix

* feat: amm-1959 dhis token for cho report re-direction

* fix: beneficiary history on revisit (#320)

* fix: call type mapper (#322)

* Elasticsearch implementation for Beneficiary Search (#324)

* fix: implement functionality to search beneficiaries with Elasticsearch

* fix: remove unwanted import

* fix: update pom.xml

* fix: change the response code

* variable added

* Elastic Search Implementation for Advanced Search (#327)

* fix: cherry-pick commits for advanced search

* fix: cherry-pick commit for token issue - mobile application

* fix: add the missing properties

* fix: add function to retrieve userid

* fix: move the fetch Userid to jwtUtil

* fix:signature check for mmu

* fix: retrive any user without deleted

* fix: update KM filepath

* FLW-713 Remove All File Upload Options (#350)

* FLW-713 Remove All File Upload Options

* Fix UserServiceRoleRepo dependency issue and codeRabit comment

* fixed coderabit comment

* fix userMappingId issue

* Add SMS functionality in release-3.6.1 (#358)

* Enable SMS Functionality in MMU App to Send Prescriptions  (#325)

* fix: sms template save and map mmu (#306)

* Vb/sms (#307)

* fix: sms template save and map mmu

* fix: enable mms for mmu prescription

* Enable SMS Functionality in MMU App to Send Prescriptions  (#325)

* fix: sms template save and map mmu (#306)

* Vb/sms (#307)

* fix: sms template save and map mmu

* fix: enable mms for mmu prescription

---------

Co-authored-by: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com>

---------

Co-authored-by: 5Amogh <amoghavarsh@navadhiti.com>
Co-authored-by: Vanitha S <116701245+vanitha1822@users.noreply.github.com>
Co-authored-by: Sachin Kadam <152252767+sac2kadam@users.noreply.github.com>
Co-authored-by: vanitha1822 <vanitha@navadhiti.com>
Co-authored-by: Saurav Mishra <80103738+SauravBizbRolly@users.noreply.github.com>
drtechie pushed a commit that referenced this pull request Mar 19, 2026
* Move code to 3.6.1 to 3.8.0 (#372)

* fix: cors spell fixes and import of packages updates

* fix: deployment issue fix

* feat: amm-1959 dhis token for cho report re-direction

* fix: beneficiary history on revisit (#320)

* fix: call type mapper (#322)

* Elasticsearch implementation for Beneficiary Search (#324)

* fix: implement functionality to search beneficiaries with Elasticsearch

* fix: remove unwanted import

* fix: update pom.xml

* fix: change the response code

* variable added

* Elastic Search Implementation for Advanced Search (#327)

* fix: cherry-pick commits for advanced search

* fix: cherry-pick commit for token issue - mobile application

* fix: add the missing properties

* fix: add function to retrieve userid

* fix: move the fetch Userid to jwtUtil

* fix:signature check for mmu

* fix: retrive any user without deleted

* fix: update KM filepath

* FLW-713 Remove All File Upload Options (#350)

* FLW-713 Remove All File Upload Options

* Fix UserServiceRoleRepo dependency issue and codeRabit comment

* fixed coderabit comment

* fix userMappingId issue

* Add SMS functionality in release-3.6.1 (#358)

* Enable SMS Functionality in MMU App to Send Prescriptions  (#325)

* fix: sms template save and map mmu (#306)

* Vb/sms (#307)

* fix: sms template save and map mmu

* fix: enable mms for mmu prescription

* Enable SMS Functionality in MMU App to Send Prescriptions  (#325)

* fix: sms template save and map mmu (#306)

* Vb/sms (#307)

* fix: sms template save and map mmu

* fix: enable mms for mmu prescription

---------

Co-authored-by: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com>

---------

Co-authored-by: 5Amogh <amoghavarsh@navadhiti.com>
Co-authored-by: Vanitha S <116701245+vanitha1822@users.noreply.github.com>
Co-authored-by: Sachin Kadam <152252767+sac2kadam@users.noreply.github.com>
Co-authored-by: vanitha1822 <vanitha@navadhiti.com>
Co-authored-by: Saurav Mishra <80103738+SauravBizbRolly@users.noreply.github.com>

* fix: add OTP rate limiting to prevent OTP flooding on sendConsent endpoint (#373)

- Add OtpRateLimiterService with Redis-backed per-mobile rate limits (3/min, 10/hr, 20/day)
- Add OtpRateLimitException for 429 responses
- Integrate rate limiter in BeneficiaryOTPHandlerImpl and BeneficiaryConsentController
- Add otp.ratelimit.* properties to common_ci and common_docker profiles
- Update common_example.properties with new OTP rate limit config

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* Health api (#376)

* Cherry-pick health and version API enhancements to release-3.6.1 (#371)

* feat(health,version): update version and health endpoints and add advance check for database

* fix(health): normalize severity and fix slow query false positives

* fix(health): avoid false CRITICAL on single long-running MySQL transaction

* fix(health): enforce 3s DB connection timeout via HikariCP

* Release 3.6.1 (#374)

* feat(health,version): update version and health endpoints and add advance check for database

* fix(health): normalize severity and fix slow query false positives

* fix(health): avoid false CRITICAL on single long-running MySQL transaction

* fix(health): enforce 3s DB connection timeout via HikariCP

* feat(health): add healthcontroller and fix versioncontroller issues

* fix: build error (#375)

---------

Co-authored-by: KOPPIREDDY DURGA PRASAD <144464542+DurgaPrasad-54@users.noreply.github.com>
Co-authored-by: Vanitha S <116701245+vanitha1822@users.noreply.github.com>

---------

Co-authored-by: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com>
Co-authored-by: 5Amogh <amoghavarsh@navadhiti.com>
Co-authored-by: Sachin Kadam <152252767+sac2kadam@users.noreply.github.com>
Co-authored-by: Saurav Mishra <80103738+SauravBizbRolly@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: KOPPIREDDY DURGA PRASAD <144464542+DurgaPrasad-54@users.noreply.github.com>
vanitha1822 added a commit that referenced this pull request Mar 26, 2026
* Elasticsearch implementation for Beneficiary Search (#324)

* fix: implement functionality to search beneficiaries with Elasticsearch

* fix: remove unwanted import

* fix: update pom.xml

* fix: change the response code

* variable added

* Elastic Search Implementation for Advanced Search (#327)

* fix: cherry-pick commits for advanced search

* fix: cherry-pick commit for token issue - mobile application

* fix: add the missing properties

* fix: add function to retrieve userid

* fix: move the fetch Userid to jwtUtil

* fix:signature check for mmu

* fix: retrive any user without deleted

* fix: update KM filepath

* FLW-713 Remove All File Upload Options (#350)

* FLW-713 Remove All File Upload Options

* Fix UserServiceRoleRepo dependency issue and codeRabit comment

* fixed coderabit comment

* fix userMappingId issue

* Add SMS functionality in release-3.6.1 (#358)

* Enable SMS Functionality in MMU App to Send Prescriptions  (#325)

* fix: sms template save and map mmu (#306)

* Vb/sms (#307)

* fix: sms template save and map mmu

* fix: enable mms for mmu prescription

* Enable SMS Functionality in MMU App to Send Prescriptions  (#325)

* fix: sms template save and map mmu (#306)

* Vb/sms (#307)

* fix: sms template save and map mmu

* fix: enable mms for mmu prescription

---------

Co-authored-by: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com>

* feat: added the facilty in resonse

* fix: login response change

* feat: added the facilty in resonse

* fix: logoin response

* fix: login response

---------

Co-authored-by: Vanitha S <116701245+vanitha1822@users.noreply.github.com>
Co-authored-by: Sachin Kadam <152252767+sac2kadam@users.noreply.github.com>
Co-authored-by: Mithun James <drtechie@users.noreply.github.com>
Co-authored-by: SnehaRH <77656297+snehar-nd@users.noreply.github.com>
Co-authored-by: vanitha1822 <vanitha@navadhiti.com>
Co-authored-by: Saurav Mishra <80103738+SauravBizbRolly@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants