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
20 changes: 10 additions & 10 deletions src/main/java/com/iemr/flw/controller/AshaProfileController.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,26 +62,26 @@ public ResponseEntity<Map<String, Object>> getProfile(HttpServletRequest request
try {
String jwtFromHeader = request.getHeader("JwtToken");

// Validate JWT header presence
// if (jwtFromHeader == null || jwtFromHeader.trim().isEmpty()) {
// response.put("statusCode", 401);
// response.put("status", "Unauthorized");
// response.put("errorMessage", "JWT token is missing");
// return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(response);
// }
// Validate JWT header presence
if (jwtFromHeader == null || jwtFromHeader.trim().isEmpty()) {
response.put("statusCode", 401);
response.put("status", "Unauthorized");
response.put("errorMessage", "JWT token is missing");
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(response);
}

// Extract and validate user ID from JWT
// int userId = jwtUtil.extractUserId(jwtFromHeader); // Make sure this returns 0 or throws for invalid token
int userId = jwtUtil.extractUserId(jwtFromHeader); // Make sure this returns 0 or throws for invalid token

if (employeeId == 0) {
if (userId == 0) {
response.put("statusCode", 401);
response.put("status", "Unauthorized");
response.put("errorMessage", "Invalid JWT token");
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(response);
}

// Business logic
AshaWorker ashaWorker = ashaProfileService.getProfileData(employeeId);
AshaWorker ashaWorker = ashaProfileService.getProfileData(userId);
logger.info("Asha Profile"+ashaWorker);

response.put("statusCode", 200);
Expand Down
7 changes: 4 additions & 3 deletions src/main/java/com/iemr/flw/domain/iemr/AshaWorker.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class AshaWorker {
private Integer employeeId; // Changed from Integer to String

@Column(name = "dob")
private LocalDate dob; // Changed from String to LocalDate
private String dob; // Changed from String to LocalDate


@Column(name = "mobile_number")
Expand All @@ -40,7 +40,7 @@ public class AshaWorker {
private String fatherOrSpouseName;

@Column(name = "date_of_joining")
private LocalDate dateOfJoining; // Changed from String to LocalDate
private String dateOfJoining; // Changed from String to LocalDate


@Column(name = "bank_account")
Expand Down Expand Up @@ -98,8 +98,9 @@ public class AshaWorker {
@Column(name = "ProviderServiceMapID")
private Integer ProviderServiceMapID;

@Lob
@Column(name = "profileImage")
private String profileImage;
private byte[] profileImage;

@Column(name = "isFatherOrSpouse")
private Boolean isFatherOrSpouse;
Expand Down
138 changes: 119 additions & 19 deletions src/main/java/com/iemr/flw/service/impl/AshaProfileImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

import com.iemr.flw.domain.iemr.AshaWorker;
import com.iemr.flw.domain.iemr.User;
import com.iemr.flw.dto.iemr.UserServiceRoleDTO;
import com.iemr.flw.repo.iemr.AshaProfileRepo;
import com.iemr.flw.repo.iemr.UserServiceRoleRepo;
import com.iemr.flw.service.AshaProfileService;
import com.iemr.flw.service.EmployeeMasterInter;

import com.iemr.flw.repo.iemr.EmployeeMasterRepo;
import com.iemr.flw.service.UserService;
import com.iemr.flw.utils.JwtAuthenticationUtil;
import com.iemr.flw.utils.JwtUtil;
import jakarta.transaction.Transactional;
Expand All @@ -18,6 +20,7 @@

import java.time.LocalDate;
import java.util.Objects;
import java.util.Optional;

import org.springframework.data.redis.core.RedisTemplate;

Expand All @@ -37,6 +40,9 @@ public class AshaProfileImpl implements AshaProfileService {
JwtAuthenticationUtil jwtAuthenticationUtil;
@Autowired
private UserServiceRoleRepo userServiceRoleRepo;

@Autowired
private UserService userService;
private final Logger logger = LoggerFactory.getLogger(AshaProfileImpl.class);

@Transactional
Expand All @@ -45,16 +51,17 @@ public AshaWorker saveEditData(AshaWorker request) {
try {
Objects.requireNonNull(request, "ASHA worker request must not be null");

Long id = request.getId();
Optional<AshaWorker> ashaWorker = ashaProfileRepo.findByEmployeeId(request.getEmployeeId());

// ---------- CREATE Case ----------
if (id == null || id == 0) {
// treat id=0 as null (frontend mistake)
if (id != null && id == 0) {
request.setId(null);
}
if (!ashaWorker.isPresent()) {
request.setId(null);

AshaWorker saved = ashaProfileRepo.save(request);
UserServiceRoleDTO userServiceRoleDTO= userService.getUserDetail(request.getEmployeeId());
if(userServiceRoleDTO!=null){
request.setName(userServiceRoleDTO.getName());
}
AshaWorker saved = saveProfile(request);
logger.info("Created ASHA Worker: {}", saved.getId());
return saved;
}
Expand Down Expand Up @@ -91,19 +98,12 @@ private AshaWorker getDetails(Integer userID) {
User m_user = Objects.requireNonNull(employeeMasterInter.getUserDetails(userID), "User details not found for ID: " + userID);
AshaWorker ashaWorker = new AshaWorker();
ashaWorker.setEmployeeId(m_user.getUserID());
// Convert DOB (Timestamp) to LocalDate
java.sql.Timestamp dobTimestamp = m_user.getDOB();
LocalDate dob = dobTimestamp != null ? dobTimestamp.toLocalDateTime().toLocalDate() : null;
ashaWorker.setDob(dob);
// Convert DOJ (Timestamp) to LocalDate
java.sql.Timestamp dojTimestamp = m_user.getDOJ();
LocalDate doj = dojTimestamp != null ? dojTimestamp.toLocalDateTime().toLocalDate() : LocalDate.now();
ashaWorker.setDateOfJoining(doj);

ashaWorker.setName(String.format("%s %s", Objects.toString(m_user.getFirstName(), ""), Objects.toString(m_user.getLastName(), "")).trim());
ashaWorker.setMobileNumber(m_user.getContactNo());
ashaWorker.setAlternateMobileNumber(m_user.getEmergencyContactNo());
ashaWorker.setProviderServiceMapID(m_user.getServiceProviderID());
ashaWorker.setProfileImage("");
ashaWorker.setProfileImage(null);
ashaWorker.setSupervisorName("");
ashaWorker.setAwwName("");
ashaWorker.setVillage("");
Expand Down Expand Up @@ -132,8 +132,104 @@ private AshaWorker getDetails(Integer userID) {
throw new RuntimeException("Failed to create ASHA worker profile from user details", e);
}
}
@Transactional
public AshaWorker saveProfile(AshaWorker request) {
logger.info("Saving ASHA Profile for EmployeeId: {}", request.getEmployeeId());

logger.info("Received DOB: {}", request.getDob());
logger.info("Received Date Of Joining: {}", request.getDateOfJoining());

AshaWorker existing = ashaProfileRepo
.findByEmployeeId(request.getEmployeeId())
.orElse(new AshaWorker());

if (isValid(request.getName()))
existing.setName(request.getName());

if (isValid(request.getVillage()))
existing.setVillage(request.getVillage());

if (request.getEmployeeId() != null)
existing.setEmployeeId(request.getEmployeeId());

// Save even if null
existing.setDob(request.getDob());

if (isValid(request.getMobileNumber()))
existing.setMobileNumber(request.getMobileNumber());

if (isValid(request.getAlternateMobileNumber()))
existing.setAlternateMobileNumber(request.getAlternateMobileNumber());

if (isValid(request.getFatherOrSpouseName()))
existing.setFatherOrSpouseName(request.getFatherOrSpouseName());

// Save even if null
existing.setDateOfJoining(request.getDateOfJoining());

if (isValid(request.getBankAccount()))
existing.setBankAccount(request.getBankAccount());

if (isValid(request.getIfsc()))
existing.setIfsc(request.getIfsc());

if (request.getPopulationCovered() != null)
existing.setPopulationCovered(request.getPopulationCovered());

if (isValid(request.getChoName()))
existing.setChoName(request.getChoName());

if (isValid(request.getChoMobile()))
existing.setChoMobile(request.getChoMobile());

if (isValid(request.getAwwName()))
existing.setAwwName(request.getAwwName());

public AshaWorker updateProfile(AshaWorker request) {
if (isValid(request.getAwwMobile()))
existing.setAwwMobile(request.getAwwMobile());

if (isValid(request.getAnm1Name()))
existing.setAnm1Name(request.getAnm1Name());

if (isValid(request.getAnm1Mobile()))
existing.setAnm1Mobile(request.getAnm1Mobile());

if (isValid(request.getAnm2Name()))
existing.setAnm2Name(request.getAnm2Name());

if (isValid(request.getAnm2Mobile()))
existing.setAnm2Mobile(request.getAnm2Mobile());

if (isValid(request.getAbhaNumber()))
existing.setAbhaNumber(request.getAbhaNumber());

if (isValid(request.getAshaHouseholdRegistration()))
existing.setAshaHouseholdRegistration(request.getAshaHouseholdRegistration());

if (isValid(request.getAshaFamilyMember()))
existing.setAshaFamilyMember(request.getAshaFamilyMember());

if (request.getProviderServiceMapID() != null)
existing.setProviderServiceMapID(request.getProviderServiceMapID());

if (request.getProfileImage() != null && request.getProfileImage().length > 0)
existing.setProfileImage(request.getProfileImage());

if (request.getIsFatherOrSpouse() != null)
existing.setIsFatherOrSpouse(request.getIsFatherOrSpouse());

if (isValid(request.getSupervisorName()))
existing.setSupervisorName(request.getSupervisorName());

if (isValid(request.getSupervisorMobile()))
existing.setSupervisorMobile(request.getSupervisorMobile());

return ashaProfileRepo.save(existing);
}



public AshaWorker updateProfile(AshaWorker request) {
AshaWorker existing = ashaProfileRepo.findByEmployeeId(request.getEmployeeId()).orElseThrow(() -> new RuntimeException("ASHA worker not found"));
if (isValid(request.getAbhaNumber())) existing.setAbhaNumber(request.getAbhaNumber());
if (request.getEmployeeId() != null) existing.setEmployeeId(request.getEmployeeId());
Expand Down Expand Up @@ -161,16 +257,20 @@ public AshaWorker updateProfile(AshaWorker request) {
if (isValid(request.getAwwMobile())) existing.setAwwMobile(request.getAwwMobile());
if (request.getProviderServiceMapID() != null)
existing.setProviderServiceMapID(request.getProviderServiceMapID());
if (isValid(request.getProfileImage())) existing.setProfileImage(request.getProfileImage());
if (isValidImage(request.getProfileImage())) existing.setProfileImage(request.getProfileImage());
if (request.getIsFatherOrSpouse() != null) existing.setIsFatherOrSpouse(request.getIsFatherOrSpouse());
if (isValid(request.getSupervisorName())) existing.setSupervisorName(request.getSupervisorName());
if (isValid(request.getSupervisorMobile())) existing.setSupervisorMobile(request.getSupervisorMobile());
return existing;
return ashaProfileRepo.save(existing);
}

private boolean isValid(String value) {
return value != null && !value.trim().isEmpty() && !"null".equalsIgnoreCase(value.trim());
}

private boolean isValidImage(byte[] value) {
return value != null && value.length > 0;
}


}