Skip to content

Commit 445906a

Browse files
RWB GLific changes v1
1 parent d240688 commit 445906a

File tree

5 files changed

+340
-37
lines changed

5 files changed

+340
-37
lines changed

rwb/src/main/java/org/avni_integration_service/rwb/dto/NudgeUserRequestDTO.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ public class NudgeUserRequestDTO {
77
String sinceNoOfDays;
88
String withinNoOfDays;
99

10+
public NudgeUserRequestDTO(String userId, String userName) {
11+
this.userId = userId;
12+
this.userName = userName;
13+
}
14+
1015
public NudgeUserRequestDTO(String userId, String userName, String sinceNoOfDays, String withinNoOfDays) {
1116
this.userId = userId;
1217
this.userName = userName;

rwb/src/main/java/org/avni_integration_service/rwb/repository/AvniRwbUserNudgeRepository.java

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,22 @@
99
import org.joda.time.DateTime;
1010
import org.springframework.stereotype.Component;
1111

12+
import java.util.Map;
13+
1214
@Component
1315
public class AvniRwbUserNudgeRepository {
16+
private static final Logger logger = Logger.getLogger(AvniRwbUserNudgeRepository.class);
17+
18+
private static final Map<String, String> QUERY_TO_FLOW_ID = Map.of(
19+
"Work Order Registration", "36875",
20+
"Nudge to register WO", "36876",
21+
"Nudge to Login", "36859",
22+
"Successful WO registration", "36877",
23+
"Daily Recording", "36878",
24+
"Nudge for Endline", "36879",
25+
"Nudge for Work Order Endline", "36880"
26+
);
27+
1428
private final AvniMessageRepository avniMessageRepository;
1529
private final AvniQueryRepository avniQueryRepository;
1630
private final RwbContextProvider rwbContextProvider;
@@ -21,21 +35,39 @@ public AvniRwbUserNudgeRepository(AvniMessageRepository avniMessageRepository, A
2135
this.rwbContextProvider = rwbContextProvider;
2236
}
2337

24-
public SendMessageResponse sendMessage(NudgeUserRequestDTO nudgeUserRequestDTO) {
25-
return avniMessageRepository.sendMessage(createMessageRequestToNudgeUser(nudgeUserRequestDTO));
38+
public static Map<String, String> getQueryToFlowIdMap() {
39+
return QUERY_TO_FLOW_ID;
2640
}
2741

28-
private ManualMessageContract createMessageRequestToNudgeUser(NudgeUserRequestDTO nudgeUserRequestDTO) {
29-
ManualMessageContract manualMessageContract = new ManualMessageContract();
30-
manualMessageContract.setReceiverId(nudgeUserRequestDTO.getUserId());
31-
manualMessageContract.setReceiverType(ReceiverType.User);
32-
manualMessageContract.setMessageTemplateId(rwbContextProvider.get().getMsgTemplateId());
33-
manualMessageContract.setParameters(new String[]{
34-
nudgeUserRequestDTO.getUserName(), nudgeUserRequestDTO.getSinceNoOfDays(), nudgeUserRequestDTO.getWithinNoOfDays()});
35-
manualMessageContract.setScheduledDateTime(new DateTime()); //set current date time
36-
return manualMessageContract;
42+
public SendMessageResponse startFlow(NudgeUserRequestDTO dto, String flowId) {
43+
logger.info(String.format("Starting flow %s for user %s", flowId, dto.getUserId()));
44+
return avniMessageRepository.startFlowForContact(createFlowRequest(dto, flowId));
3745
}
3846

47+
private StartFlowForContactRequest createFlowRequest(NudgeUserRequestDTO dto, String flowId) {
48+
StartFlowForContactRequest request = new StartFlowForContactRequest();
49+
request.setReceiverId(dto.getUserId());
50+
request.setReceiverType(ReceiverType.User);
51+
request.setFlowId(flowId);
52+
request.setParameters(new String[]{dto.getUserName()});
53+
return request;
54+
}
55+
56+
// public SendMessageResponse sendMessage(NudgeUserRequestDTO nudgeUserRequestDTO) {
57+
// return avniMessageRepository.sendMessage(createMessageRequestToNudgeUser(nudgeUserRequestDTO));
58+
// }
59+
//
60+
// private ManualMessageContract createMessageRequestToNudgeUser(NudgeUserRequestDTO nudgeUserRequestDTO) {
61+
// ManualMessageContract manualMessageContract = new ManualMessageContract();
62+
// manualMessageContract.setReceiverId(nudgeUserRequestDTO.getUserId());
63+
// manualMessageContract.setReceiverType(ReceiverType.User);
64+
// manualMessageContract.setMessageTemplateId(rwbContextProvider.get().getMsgTemplateId());
65+
// manualMessageContract.setParameters(new String[]{
66+
// nudgeUserRequestDTO.getUserName(), nudgeUserRequestDTO.getSinceNoOfDays(), nudgeUserRequestDTO.getWithinNoOfDays()});
67+
// manualMessageContract.setScheduledDateTime(new DateTime()); //set current date time
68+
// return manualMessageContract;
69+
// }
70+
3971
public CustomQueryResponse executeCustomQuery(CustomQueryRequest customQueryRequest) {
4072
return avniQueryRepository.invokeCustomQuery(customQueryRequest);
4173
}

rwb/src/main/java/org/avni_integration_service/rwb/service/RwbUserNudgeService.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ public RwbUserNudgeService(AvniRwbUserNudgeRepository avniRwbUserNudgeRepository
3131
this.rwbContextProvider = rwbContextProvider;
3232
}
3333

34-
public List<NudgeUserRequestDTO> getUsersThatHaveToReceiveNudge() {
35-
RwbConfig rwbConfig = rwbContextProvider.get();
36-
CustomQueryRequest customQueryRequest = new CustomQueryRequest(rwbConfig.getCustomQueryName(), Integer.parseInt(rwbConfig.getSinceNoOfDays()));
34+
public List<NudgeUserRequestDTO> getUsersForQuery(String queryName) {
35+
CustomQueryRequest customQueryRequest = new CustomQueryRequest(queryName, 0);
3736
CustomQueryResponse customQueryResponse = avniRwbUserNudgeRepository.executeCustomQuery(customQueryRequest);
38-
logger.info(String.format("Custom Query returned %d number of users to nudge", customQueryResponse.getTotal()));
37+
logger.info(String.format("Query '%s' returned %d users", queryName, customQueryResponse.getTotal()));
3938
return customQueryResponse.getData().stream().map(row ->
40-
new NudgeUserRequestDTO(row.get(USER_ID_RESULT_COL_INDEX).toString(), row.get(USER_NAME_RESULT_COL_INDEX).toString(),
41-
rwbConfig.getSinceNoOfDays(), rwbConfig.getWithinNoOfDays())).collect(Collectors.toList());
39+
new NudgeUserRequestDTO(row.get(USER_ID_RESULT_COL_INDEX).toString(),
40+
row.get(USER_NAME_RESULT_COL_INDEX).toString()))
41+
.collect(Collectors.toList());
4242
}
4343

44-
public SendMessageResponse nudgeUser(NudgeUserRequestDTO nudgeUserRequestDTO) {
45-
return avniRwbUserNudgeRepository.sendMessage(nudgeUserRequestDTO);
44+
public SendMessageResponse nudgeUser(NudgeUserRequestDTO nudgeUserRequestDTO, String flowId) {
45+
return avniRwbUserNudgeRepository.startFlow(nudgeUserRequestDTO, flowId);
4646
}
4747
}

rwb/src/main/java/org/avni_integration_service/rwb/worker/RWBUsersNudgeWorker.java

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@
22

33
import org.apache.log4j.Logger;
44
import org.avni_integration_service.avni.domain.SendMessageResponse;
5-
import org.avni_integration_service.common.MessageUnprocessableException;
6-
import org.avni_integration_service.common.PlatformException;
7-
import org.avni_integration_service.common.UnknownException;
8-
import org.avni_integration_service.integration_data.domain.error.ErrorRecord;
9-
import org.avni_integration_service.rwb.config.RwbSendMsgErrorType;
105
import org.avni_integration_service.rwb.dto.NudgeUserRequestDTO;
6+
import org.avni_integration_service.rwb.repository.AvniRwbUserNudgeRepository;
117
import org.avni_integration_service.rwb.service.RwbUserNudgeErrorService;
128
import org.avni_integration_service.rwb.service.RwbUserNudgeService;
13-
import org.avni_integration_service.rwb.util.DateTimeUtil;
149
import org.springframework.stereotype.Component;
1510

16-
import java.util.Calendar;
11+
import java.util.List;
1712

1813
@Component
1914
public class RWBUsersNudgeWorker {
@@ -27,20 +22,16 @@ public RWBUsersNudgeWorker(RwbUserNudgeService rwbUserNudgeService, RwbUserNudge
2722
}
2823

2924
public void processUsers() {
30-
rwbUserNudgeService.getUsersThatHaveToReceiveNudge().forEach(nudgeUserRequestDTO -> processUser(nudgeUserRequestDTO));
25+
AvniRwbUserNudgeRepository.getQueryToFlowIdMap().forEach((queryName, flowId) -> {
26+
logger.info(String.format("Processing flow %s for query '%s'", flowId, queryName));
27+
List<NudgeUserRequestDTO> users = rwbUserNudgeService.getUsersForQuery(queryName);
28+
users.forEach(dto -> processUser(dto, flowId));
29+
});
3130
}
3231

33-
private void processUser(NudgeUserRequestDTO nudgeUserRequestDTO) {
32+
private void processUser(NudgeUserRequestDTO nudgeUserRequestDTO, String flowId) {
3433
try {
35-
ErrorRecord errorRecord = rwbUserNudgeErrorService.getErrorRecord(nudgeUserRequestDTO.getUserId());
36-
if(errorRecord != null && errorRecord.getLastErrorRecordLog().getErrorType().getName().equals(RwbSendMsgErrorType.Success.name()) &&
37-
DateTimeUtil.differenceWithNowLessThanInterval(errorRecord.getLastErrorRecordLog().getLoggedAt(),
38-
Integer.parseInt(nudgeUserRequestDTO.getWithinNoOfDays()), Calendar.DAY_OF_MONTH)) {
39-
logger.debug(String.format("User with id '%s' has already been nudged successfully in the last %s day(s).",
40-
nudgeUserRequestDTO.getUserId(), nudgeUserRequestDTO.getWithinNoOfDays()));
41-
return;
42-
}
43-
SendMessageResponse sendMessageResponse = rwbUserNudgeService.nudgeUser(nudgeUserRequestDTO);
34+
SendMessageResponse sendMessageResponse = rwbUserNudgeService.nudgeUser(nudgeUserRequestDTO, flowId);
4435
rwbUserNudgeErrorService.saveUserNudgeStatus(nudgeUserRequestDTO.getUserId(), sendMessageResponse);
4536
} catch (Exception exception) {
4637
rwbUserNudgeErrorService.saveUserNudgeError(nudgeUserRequestDTO.getUserId(), exception);

0 commit comments

Comments
 (0)