package net.gepafin.tendermanagement.dao; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.EmailLogEntity; import net.gepafin.tendermanagement.enums.*; import net.gepafin.tendermanagement.model.request.EmailLogRequest; import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; import net.gepafin.tendermanagement.repositories.EmailLogRepository; import net.gepafin.tendermanagement.repositories.UserActionsRepository; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.util.Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.List; @Component public class EmailLogDao { @Autowired private EmailLogRepository emailLogRepository; @Autowired private HttpServletRequest request; @Autowired private LoggingUtil loggingUtil; public EmailLogEntity createEmailLog(EmailLogRequest emailLogRequest,List attachments) { EmailLogEntity emailLogEntity = new EmailLogEntity(); emailLogEntity.setEmailType(emailLogRequest.getEmailType().getValue()); emailLogEntity.setRecipientType(emailLogRequest.getRecipientType().getValue()); emailLogEntity.setRecipientId(emailLogRequest.getRecipientId()); emailLogEntity.setEmailSubject(emailLogRequest.getEmailSubject()); emailLogEntity.setEmailBody(emailLogRequest.getEmailBody()); emailLogEntity.setSendStatus(emailLogRequest.getSendStatus()); emailLogEntity.setErrorMessage(emailLogRequest.getErrorMessage()); emailLogEntity.setUserId(emailLogRequest.getUserId()); emailLogEntity.setEmailServiceResponse(emailLogRequest.getEmailServiceResponse()); emailLogEntity.setRecipientEmails(emailLogRequest.getRecipientEmails()); emailLogEntity.setIsDeleted(false); emailLogEntity.setApplicationId(emailLogRequest.getApplicatioId()); emailLogEntity.setAmendmentId(emailLogRequest.getAmendmentId()); emailLogEntity.setCallId(emailLogRequest.getCallId()); emailLogEntity.setUserAction(loggingUtil.getUserActionLogById(emailLogRequest.getUserActionId())); emailLogEntity.setSendStatus(StatusTypeEnum.PENDING.getValue()); emailLogEntity.setAttachments(Utils.convertListToJsonString(attachments)); emailLogEntity = saveEmailLogEntity(emailLogEntity); return emailLogEntity; } public EmailLogEntity saveEmailLogEntity(EmailLogEntity emailLogEntity){ return emailLogRepository.save(emailLogEntity); } public EmailLogRequest createEmailLogRequest(EmailScenarioTypeEnum emailType, RecipientTypeEnum recipientType, Long recipientId, String recipientEmails, Long userId, Long applicationId, Long amendmentId, Long callId, String subject, String body) { EmailLogRequest emailLogRequest = new EmailLogRequest(); Long userActionId =(Long) request.getAttribute(GepafinConstant.USER_ACTION_ID); emailLogRequest.setEmailType(emailType); emailLogRequest.setRecipientType(recipientType); emailLogRequest.setRecipientId(recipientId); emailLogRequest.setUserId(userId); emailLogRequest.setRecipientEmails(recipientEmails); emailLogRequest.setApplicatioId(applicationId); emailLogRequest.setAmendmentId(amendmentId); emailLogRequest.setCallId(callId); emailLogRequest.setUserActionId(userActionId); emailLogRequest.setEmailSubject(subject); emailLogRequest.setEmailBody(body); return emailLogRequest; } }