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 src/main/environment/common_ci.properties
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,5 @@ source-address=@env.SMS_CONSENT_SOURCE_ADDRESS@
sms-username=@env.SMS_USERNAME@
sms-password=@env.SMS_PASSWORD@
send-message-url=@env.SMS_MESSAGE_URL@

crash.logs.base.path=@env.CRASH_LOGS_PATH@
2 changes: 2 additions & 0 deletions src/main/environment/common_docker.properties
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,5 @@ sms-username=${SMS_USERNAME}
sms-password=${SMS_PASSWORD}

send-message-url=${SMS_MESSAGE_URL}

crash.logs.base.path=${CRASH_LOGS_PATH}
2 changes: 2 additions & 0 deletions src/main/environment/common_example.properties
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ sms-username=
sms-password=
send-message-url=

crash.logs.base.path=<path used>




Expand Down
63 changes: 63 additions & 0 deletions src/main/java/com/iemr/flw/controller/CrashLogController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.iemr.flw.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.iemr.flw.dto.crashlogs.CrashLogRequest;
import com.iemr.flw.service.CrashLogService;
import com.iemr.flw.utils.JwtUtil;
import com.iemr.flw.utils.response.OutputResponse;

@RestController
@RequestMapping(value = "/crash-logs", headers = "Authorization")
public class CrashLogController {

private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());

@Autowired
private CrashLogService crashLogService;

@Autowired
private JwtUtil jwtUtil;

@Autowired
private ObjectMapper objectMapper;

@PostMapping(value = "/upload", consumes = "multipart/form-data")
public String uploadCrashLog(
@RequestHeader(value = "JwtToken") String jwtToken, // Changed from Authorization
@RequestParam("file") MultipartFile file,
@RequestParam("metadata") String metadataJson) {

OutputResponse response = new OutputResponse();

try {
// No need to remove "Bearer " prefix - JwtToken header contains raw JWT
Integer userId = jwtUtil.extractUserId(jwtToken);

// Parse metadata JSON
CrashLogRequest request = objectMapper.readValue(metadataJson, CrashLogRequest.class);

// Save crash log file
String filePath = crashLogService.saveCrashLog(request, userId, file);

// Build success response
response.setResponse("Crash log saved successfully. File path: " + filePath);
logger.info("Crash log uploaded successfully for userId: " + userId);

} catch (Exception e) {
logger.error("Error uploading crash log: " + e.getMessage(), e);
response.setError(e);
}

return response.toString();
}
}
86 changes: 44 additions & 42 deletions src/main/java/com/iemr/flw/domain/iemr/M_User.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.sql.Timestamp;
import java.time.LocalDate;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.Expose;

import jakarta.persistence.Column;
Expand All @@ -21,135 +22,136 @@
import java.time.LocalDate;

@Entity
@Table(name = "m_User",schema = "db_iemr")
@Table(name = "m_User", schema = "db_iemr")
@Data
public class M_User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Expose
@Column(name="UserID")
@Column(name = "UserID")
private Integer userID;
@Expose
@Column(name="TitleID")
@Column(name = "TitleID")
private Integer titleID;
@Expose
@Column(name="FirstName")
@Column(name = "FirstName")
private String firstName;
@Expose
@Column(name="MiddleName")
@Column(name = "MiddleName")
private String middleName;
@Expose
@Column(name="LastName")
@Column(name = "LastName")
private String lastName;
@Expose
@Column(name="GenderID")
@Column(name = "GenderID")
private Short genderID;

@Expose
@Column(name="MaritalStatusID")
@Column(name = "MaritalStatusID")
private Integer maritalStatusID;
@Expose
@Column(name="DesignationID")
@Column(name = "DesignationID")
private Integer designationID;

@Expose
@Column(name="AadhaarNo")
@Column(name = "AadhaarNo")
private String aadhaarNo;
@Expose
@Column(name="PAN")
@JsonProperty("pan")
@Column(name = "PAN")
private String pAN;
@Expose
@Column(name="DOB")
private LocalDate dOB;
@JsonProperty("dob")
@Column(name = "DOB")
private Timestamp dOB;
@Expose
@Column(name="DOJ")
private LocalDate dOJ;
@JsonProperty("doj")
@Column(name = "DOJ")
private Timestamp dOJ;
@Expose
@Column(name="QualificationID")
@Column(name = "QualificationID")
private Integer qualificationID;
@Expose
@Column(name="HealthProfessionalID")
@Column(name = "HealthProfessionalID")
private String healthProfessionalID;
@Expose
@Column(name="UserName")
@Column(name = "UserName")
private String userName;
@Expose
@Column(name="Password")
@Column(name = "Password")
private String password;
@Expose
@Column(name="IsExternal")
@Column(name = "IsExternal")
private Boolean isExternal;
@Expose
@Column(name="AgentID")
@Column(name = "AgentID")
private String agentID;
@Expose
@Column(name="AgentPassword")
@Column(name = "AgentPassword")
private String agentPassword;
@Expose
@Column(name="EmailID")
@Column(name = "EmailID")
private String emailID;
@Expose
@Column(name="StatusID")
@Column(name = "StatusID")
private Integer statusID;
@Expose
@Column(name="EmergencyContactPerson")
@Column(name = "EmergencyContactPerson")
private String emergencyContactPerson;
@Expose
@Column(name="EmergencyContactNo")
@Column(name = "EmergencyContactNo")
private String emergencyContactNo;
@Expose
@Column(name="IsSupervisor")
@Column(name = "IsSupervisor")
private Boolean isSupervisor;
@Expose
@Column(name="Deleted",insertable = false, updatable = true)
@Column(name = "Deleted", insertable = false, updatable = true)
private Boolean deleted;
@Expose
@Column(name="CreatedBy")
@Column(name = "CreatedBy")
private String createdBy;
@Expose
@Column(name="EmployeeID")
@Column(name = "EmployeeID")
private String employeeID;
@Expose
@Column(name="CreatedDate",insertable = false, updatable = false)
@Column(name = "CreatedDate", insertable = false, updatable = false)
private Timestamp createdDate;
@Expose
@Column(name="ModifiedBy")
@Column(name = "ModifiedBy")
private String modifiedBy;
@Expose
@Column(name="LastModDate",insertable = false, updatable = false)
@Column(name = "LastModDate", insertable = false, updatable = false)
private Timestamp lastModDate;

@Expose
@Column(name="Remarks")
@Column(name = "Remarks")
private String remarks;

@Expose
@Column(name="ContactNo")
@Column(name = "ContactNo")
private String contactNo;


@Expose
@Column(name="IsProviderAdmin")
@Column(name = "IsProviderAdmin")
private Boolean isProviderAdmin;

@Expose
@Column(name="ServiceProviderID")
@Column(name = "ServiceProviderID")
private Integer serviceProviderID;



@Expose
@Column(name = "failed_attempt", insertable = false)
private Integer failedAttempt;

public M_User() {
// TODO Auto-generated constructor stub
}

public M_User(Integer userID, String userName) {
// TODO Auto-generated constructor stub
this.userID=userID;
this.userName=userName;
this.userID = userID;
this.userName = userName;
}

}
10 changes: 10 additions & 0 deletions src/main/java/com/iemr/flw/dto/crashlogs/CrashLogRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.iemr.flw.dto.crashlogs;

import lombok.Data;

@Data
public class CrashLogRequest {
private String appVersion;
private String deviceId;
private String timestamp;
}
9 changes: 9 additions & 0 deletions src/main/java/com/iemr/flw/service/CrashLogService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.iemr.flw.service;

import com.iemr.flw.dto.crashlogs.CrashLogRequest;
import org.springframework.web.multipart.MultipartFile;
import com.iemr.flw.utils.exception.IEMRException;

public interface CrashLogService {
String saveCrashLog(CrashLogRequest request, Integer userId, MultipartFile file) throws IEMRException;
}
15 changes: 7 additions & 8 deletions src/main/java/com/iemr/flw/service/impl/AshaProfileImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,16 +99,15 @@ private AshaWorker getDetails(Integer userID) {
M_User m_user = Objects.requireNonNull(employeeMasterInter.getUserDetails(userID), "User details not found for ID: " + userID);
AshaWorker ashaWorker = new AshaWorker();
ashaWorker.setEmployeeId(m_user.getUserID());
ashaWorker.setDob(m_user.getDOB());
LocalDate doj = m_user.getDOJ();

if (doj == null) {
doj = LocalDate.now();
}

// 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());
Expand Down
Loading