Enhanced PEC error response saving

This commit is contained in:
Piyush
2025-05-08 19:21:59 +05:30
parent 23ed5df464
commit 385ee2f755
20 changed files with 296 additions and 36 deletions

View File

@@ -20,8 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
import java.util.*;
@Component
@Log4j2
@@ -36,21 +35,25 @@ public class EmailDao {
@Autowired
private CallService callService;
@Autowired
private EmailLogDao emailLogDao;
public EmailResendResponseBean resendEmail(HttpServletRequest request , Long userActionId){
List<EmailLogEntity> emailLogs = emailLogRepository.findByUserActionIdAndEmailServiceType(userActionId,EmailServiceTypeEnum.PEC_SERVICE.getValue());
List<EmailLogEntity> emailLogs = emailLogRepository.findByUserActionIdAndEmailServiceTypeAndSendStatus(userActionId,EmailServiceTypeEnum.PEC_SERVICE.getValue(),StatusTypeEnum.FAILED.getValue());
if (emailLogs.isEmpty()) {
log.info("No emails found for given userActionId.");
}
EmailResendResponseBean emailResendResponseBean = new EmailResendResponseBean();
for (EmailLogEntity log : emailLogs){
EmailLogRequest emailLogRequest = new EmailLogRequest();
emailLogRequest.setEmailType(EmailScenarioTypeEnum.valueOf(log.getEmailType()));
emailLogRequest.setRecipientType(RecipientTypeEnum.valueOf(log.getRecipientType()));
emailLogRequest.setRecipientId(log.getRecipientId());
emailLogRequest.setUserId(log.getUserId());
emailLogRequest.setApplicatioId(log.getApplicationId());
emailLogRequest.setCallId(log.getCallId());
emailLogRequest.setAmendmentId(log.getAmendmentId());
EmailLogRequest emailLogRequest = emailLogDao.createEmailLogRequest(EmailScenarioTypeEnum.valueOf(log.getEmailType()),
RecipientTypeEnum.valueOf(log.getRecipientType()),
log.getRecipientId(),
log.getRecipientEmails(),
log.getUserId(),
log.getApplicationId(),
log.getAmendmentId(),
log.getCallId()
);
List<String> recipients = Utils.commaSeparatedStringToList(log.getRecipientEmails());
CallEntity call = callService.validateCall(log.getCallId());
@@ -69,23 +72,37 @@ public class EmailDao {
public EmailSendResponse buildEmailSendResponseFromRequest(HttpServletRequest request) {
Long userActionId = (Long) request.getAttribute(GepafinConstant.USER_ACTION_ID);
boolean isEmailSendSuccess = isEmailSentSuccessfully(userActionId);
EmailSendResponse emailSendResponse = new EmailSendResponse();
emailSendResponse.setIsEmailSend(isEmailSendSuccess);
emailSendResponse.setUserActionId(userActionId);
return emailSendResponse;
}
public boolean isEmailSentSuccessfully(Long userActionId) {
List<EmailLogEntity> emailLogs = emailLogRepository.findByUserActionId(userActionId);
boolean allSuccess = true;
String emailScenario = null;
for (EmailLogEntity log : emailLogs) {
if (EmailServiceTypeEnum.PEC_SERVICE.getValue().equals(log.getEmailServiceType()) &&
StatusTypeEnum.SUCCESS.getValue().equals(log.getSendStatus())) {
return true;
if (emailScenario == null) {
emailScenario = log.getEmailType();
}
boolean isSuccess = EmailServiceTypeEnum.PEC_SERVICE.getValue().equals(log.getEmailServiceType()) &&
StatusTypeEnum.SUCCESS.getValue().equals(log.getSendStatus());
if (!isSuccess) {
allSuccess = false;
break;
}
}
return false;
return buildResponse(userActionId, allSuccess, emailScenario);
}
private EmailSendResponse buildResponse(Long userActionId, boolean allSuccess, String emailScenario) {
EmailSendResponse response = new EmailSendResponse();
response.setUserActionId(userActionId);
response.setIsEmailSend(allSuccess);
response.setEmailScenario(emailScenario != null ? EmailScenarioTypeEnum.valueOf(emailScenario) : null);
return response;
}
}