Skip to content

Commit

Permalink
<sharika> kilkari block multiple renewal callbacks+mode of deactivation
Browse files Browse the repository at this point in the history
  • Loading branch information
sharikaep committed Apr 28, 2014
1 parent 3d6dd12 commit edbd864
Show file tree
Hide file tree
Showing 12 changed files with 66 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,15 @@ public class SubscriptionReportRequest implements Serializable {
private boolean referredByFLWFlag;

private boolean requestedFromSM;

private String mode;

public SubscriptionReportRequest() {
}

public SubscriptionReportRequest(String subscriptionId, String channel, Long msisdn, String pack, String name, Integer ageOfBeneficiary,
DateTime createdAt, String subscriptionStatus, DateTime estimatedDateOfDelivery, DateTime dateOfBirth,
SubscriberLocation location, String operator, DateTime startDate, String oldSubscriptionId, String reason, Integer startWeekNumber, Long referredByFLWMsisdn, boolean referredByFLWFlag ,boolean requestedFromSM) {
SubscriberLocation location, String operator, DateTime startDate, String oldSubscriptionId, String reason, Integer startWeekNumber, Long referredByFLWMsisdn, boolean referredByFLWFlag ,boolean requestedFromSM, String mode) {
this.subscriptionId = subscriptionId;
this.channel = channel;
this.msisdn = msisdn;
Expand All @@ -73,14 +75,19 @@ public SubscriptionReportRequest(String subscriptionId, String channel, Long msi
this.startWeekNumber = startWeekNumber;
this.referredByFLWMsisdn = referredByFLWMsisdn;
this.referredByFLWFlag = referredByFLWFlag;
this.requestedFromSM = requestedFromSM;
this.requestedFromSM = requestedFromSM;
this.mode= mode;
}

public String getOperator() {
return operator;
}

public String getSubscriptionId() {
public String getMode() {
return mode;
}

public String getSubscriptionId() {
return subscriptionId;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ public class SubscriptionStateChangeRequest implements Serializable {

@JsonProperty
private String operator;

@JsonProperty
private String mode;

@JsonProperty
private Integer graceCount;
Expand All @@ -32,21 +35,30 @@ public class SubscriptionStateChangeRequest implements Serializable {
public SubscriptionStateChangeRequest() {
}

public SubscriptionStateChangeRequest(String subscriptionId, String subscriptionStatus, String reason, DateTime createdAt, String operator, Integer graceCount, Integer weekNumber) {
public SubscriptionStateChangeRequest(String subscriptionId, String subscriptionStatus, String reason, DateTime createdAt, String operator, Integer graceCount, Integer weekNumber, String mode) {
this.subscriptionId = subscriptionId;
this.subscriptionStatus = subscriptionStatus;
this.reason = reason;
this.createdAt = createdAt;
this.operator = operator;
this.graceCount = graceCount;
this.weekNumber = weekNumber;
this.mode = mode;
}

public String getSubscriptionId() {
return subscriptionId;
}

public String getSubscriptionStatus() {
public String getMode() {
return mode;
}

public void setMode(String mode) {
this.mode = mode;
}

public String getSubscriptionStatus() {
return subscriptionStatus;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ public class SubscriptionStatusMeasure {

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

@Column(name = "mode")
private String mode;

@Column(name = "grace_count")
private Integer graceCount;
Expand Down Expand Up @@ -59,7 +62,7 @@ public SubscriptionStatusMeasure() {

public SubscriptionStatusMeasure(Subscription subscription, String status, Integer weekNumber, String remarks,
Integer graceCount, ChannelDimension channelDimension, OperatorDimension operatorDimension,
SubscriptionPackDimension subscriptionPackDimension, DateDimension dateDimension, TimeDimension timeDimension, DateTime lastModifiedTime) {
SubscriptionPackDimension subscriptionPackDimension, DateDimension dateDimension, TimeDimension timeDimension, DateTime lastModifiedTime, String mode) {
this.subscription = subscription;
this.status = status;
this.weekNumber = weekNumber;
Expand All @@ -71,6 +74,7 @@ public SubscriptionStatusMeasure(Subscription subscription, String status, Integ
this.dateDimension = dateDimension;
this.timeDimension = timeDimension;
this.lastModifiedTime = lastModifiedTime == null ? null : new Timestamp(lastModifiedTime.getMillis());
this.mode = mode;
}

public Integer getId() {
Expand Down Expand Up @@ -120,8 +124,14 @@ public Integer getGraceCount() {
public TimeDimension getTimeDimension() {
return timeDimension;
}



public boolean isCreatedBefore(SubscriptionStatusMeasure that) {
public String getMode() {
return mode;
}

public boolean isCreatedBefore(SubscriptionStatusMeasure that) {
int dateDiff = this.getDateDimension().getDate().compareTo(that.getDateDimension().getDate());
int timeDiff = this.getTimeDimension().compareTo(that.getTimeDimension());
return dateDiff == 0 ? timeDiff == -1 : dateDiff == -1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public void createSubscription(SubscriptionReportRequest subscriptionReportReque
boolean referredByFLWMsisdnFlag = subscriptionReportRequest.isReferredByFLWFlag();
Subscription subscription = saveSubscription(msisdn, subscriptionId, channelDimension, operatorDimension, subscriptionPackDimension, dateDimension, subscriber, subscriptionReportRequest.getStartDate(), createdAt, subscriptionStatus, oldSubscription, referredByFLWMsisdn, referredByFLWMsisdnFlag);

saveSubscriptionStatusMeasure(subscription, subscriptionStatus, weekNumber, dateDimension, timeDimension, operatorDimension, subscriptionReportRequest.getReason(), null, createdAt);
saveSubscriptionStatusMeasure(subscription, subscriptionStatus, weekNumber, dateDimension, timeDimension, operatorDimension, subscriptionReportRequest.getReason(), null, createdAt, subscriptionReportRequest.getMode());
}

@Transactional
Expand All @@ -109,7 +109,6 @@ public void updateForChangeSubscription(ChangeSubscriptionReportRequest subscrip

}


@Transactional
public void update(SubscriptionStateChangeRequest subscriptionStateChangeRequest) {
Subscription subscription = subscriptionService.fetchFor(subscriptionStateChangeRequest.getSubscriptionId());
Expand All @@ -133,7 +132,7 @@ public void update(SubscriptionStateChangeRequest subscriptionStateChangeRequest
logger.info("checking if callback was already received: check returned "+entryExistsInDb);
if(!entryExistsInDb)
saveSubscriptionStatusMeasure(subscription, subscriptionStatus, subscriptionStateChangeRequest.getWeekNumber(), dateDimension, timeDimension, operatorDimension,
subscriptionStateChangeRequest.getReason(), subscriptionStateChangeRequest.getGraceCount(), createdAt);
subscriptionStateChangeRequest.getReason(), subscriptionStateChangeRequest.getGraceCount(), createdAt, subscriptionStateChangeRequest.getMode());
}

@Transactional
Expand All @@ -143,7 +142,7 @@ public void changeMsisdnForNewEarlySubscription(SubscriberChangeMsisdnReportRequ
DateDimension dateDimension = allDateDimensions.fetchFor(request.getCreatedAt());
TimeDimension timeDimension = allTimeDimensions.fetchFor(request.getCreatedAt());

saveSubscriptionStatusMeasure(subscription, SubscriptionStatus.NEW_EARLY.name(), null, dateDimension, timeDimension, null, request.getReason(), null, request.getCreatedAt());
saveSubscriptionStatusMeasure(subscription, SubscriptionStatus.NEW_EARLY.name(), null, dateDimension, timeDimension, null, request.getReason(), null, request.getCreatedAt(), "changeMsisdnRequest");
}

private void updateMsisdnOnSubscription(SubscriberChangeMsisdnReportRequest request, Subscription subscription) {
Expand Down Expand Up @@ -174,11 +173,11 @@ private Subscriber fetchExistingSubscriber(SubscriptionReportRequest subscriptio

private void saveSubscriptionStatusMeasure(Subscription subscription, String subscriptionStatus, Integer subscriptionWeekNumber,
DateDimension dateDimension, TimeDimension timeDimension, OperatorDimension operatorDimension,
String reason, Integer graceCount, DateTime createdAt) {
String reason, Integer graceCount, DateTime createdAt, String mode) {

SubscriptionStatusMeasure subscriptionStatusMeasure = new SubscriptionStatusMeasure(subscription, subscriptionStatus,
subscriptionWeekNumber, reason, graceCount, subscription.getChannelDimension(), operatorDimension,
subscription.getSubscriptionPackDimension(), dateDimension, timeDimension, createdAt);
subscription.getSubscriptionPackDimension(), dateDimension, timeDimension, createdAt, mode);
allSubscriptionStatusMeasure.add(subscriptionStatusMeasure);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ public class SubscriptionStatusMeasureTest {
public void shouldCompareTwoStatusMeasuresBasedOnDateTime() {
DateTime createdNow = DateTime.now();
DateTime createdBefore = DateTime.now().minusHours(4);
SubscriptionStatusMeasure newStatusMeasure = new SubscriptionStatusMeasure(null, null, 3, null, null, null, null, new SubscriptionPackDimension("BARI_KILKARI"), new DateDimension(createdNow), new TimeDimension(createdNow), createdNow);
SubscriptionStatusMeasure oldStatusMeasure = new SubscriptionStatusMeasure(null, null, 3, null, null, null, null, new SubscriptionPackDimension("BARI_KILKARI"), new DateDimension(createdBefore), new TimeDimension(createdBefore), createdBefore);
SubscriptionStatusMeasure newStatusMeasure = new SubscriptionStatusMeasure(null, null, 3, null, null, null, null, new SubscriptionPackDimension("BARI_KILKARI"), new DateDimension(createdNow), new TimeDimension(createdNow), createdNow,"ivr");
SubscriptionStatusMeasure oldStatusMeasure = new SubscriptionStatusMeasure(null, null, 3, null, null, null, null, new SubscriptionPackDimension("BARI_KILKARI"), new DateDimension(createdBefore), new TimeDimension(createdBefore), createdBefore,"ivr");

assertTrue(oldStatusMeasure.isCreatedBefore(newStatusMeasure));
assertFalse(newStatusMeasure.isCreatedBefore(oldStatusMeasure));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public void shouldAddNewSubscriptionStatusMeasure() {
template.save(subscription);
Subscription subscriptionFromDb = template.loadAll(Subscription.class).get(0);

allSubscriptionStatusMeasure.add(new SubscriptionStatusMeasure(subscriptionFromDb, "ACTIVE", 13, null, null, channelDimension, null, subscriptionPackDimension, dateDimension, timeDimension, createdAt));
allSubscriptionStatusMeasure.add(new SubscriptionStatusMeasure(subscriptionFromDb, "ACTIVE", 13, null, null, channelDimension, null, subscriptionPackDimension, dateDimension, timeDimension, createdAt,"ivr"));

List<SubscriptionStatusMeasure> subscriptionStatusMeasures = template.loadAll(SubscriptionStatusMeasure.class);
assertEquals(1, subscriptionStatusMeasures.size());
Expand All @@ -78,7 +78,7 @@ public void shouldDeleteAllSubscriptionStatusMeasuresForAGivenSubscription() {
Subscription subscription = new Subscription(msisdn, subscriberFromDb, subscriptionPackDimension, channelDimension, null, dateDimension, subscriptionId, DateTime.now(), DateTime.now(), "ACTIVE", null, null, false);
template.save(subscription);
Subscription subscriptionFromDb = template.loadAll(Subscription.class).get(0);
template.save(new SubscriptionStatusMeasure(subscriptionFromDb, "ACTIVE", 13, null, null, channelDimension, null, subscriptionPackDimension, dateDimension, timeDimension, createdAt));
template.save(new SubscriptionStatusMeasure(subscriptionFromDb, "ACTIVE", 13, null, null, channelDimension, null, subscriptionPackDimension, dateDimension, timeDimension, createdAt,"ivr"));

allSubscriptionStatusMeasure.deleteFor(subscription);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public void shouldCreateSubscriptionStatusMeasure() {

SubscriberLocation subscriberLocation = new SubscriberLocation(state, district, block, panchayat);
SubscriptionReportRequest subscriptionReportRequest = new SubscriptionReportRequest(subscriptionId, channel, msisdn, subscriptionPack
, name, age, createdAt, "NEW", edd, dob, subscriberLocation, operator, startDate, oldSubscriptionId, reason, startWeekNumber, referredByFLWMsisdn,true, false);
, name, age, createdAt, "NEW", edd, dob, subscriberLocation, operator, startDate, oldSubscriptionId, reason, startWeekNumber, referredByFLWMsisdn,true, false,"ivr");

ChannelDimension channelDimension = new ChannelDimension();
DateDimension dateDimension = new DateDimension();
Expand Down Expand Up @@ -154,7 +154,7 @@ public void shouldCreateSubscriptionStatusMeasureForChangePack() {
Subscription oldSubscription = new Subscription(msisdn, subscriber, subscriptionPackDimension, channelDimension, operatorDimension,
dateDimension, oldSubscriptionId, DateTime.now(), startDate.minusDays(5), "NEW", null, referredByFLWMsisdn.toString(), true);
SubscriptionReportRequest subscriptionReportRequest = new SubscriptionReportRequest(subscriptionId, channel, msisdn, subscriptionPack, null, null,
createdAt, "NEW", newEdd, newDob, null, null, startDate, oldSubscriptionId, reason, newStartWeekNumber, referredByFLWMsisdn,true, false);
createdAt, "NEW", newEdd, newDob, null, null, startDate, oldSubscriptionId, reason, newStartWeekNumber, referredByFLWMsisdn,true, false,"ivr");

final Subscription[] subscriptionCapture = new Subscription[1];

Expand Down Expand Up @@ -243,7 +243,7 @@ public void shouldUpdateSubscriptionStatusMeasureOnlyIfRecent() {
DateTime createdAt = new DateTime(2012, 01, 01, 10, 10);
Timestamp startDate = new Timestamp(createdAt.getMillis());
Integer weekNumber = 38;
SubscriptionStateChangeRequest subscriptionStateChangeRequest = new SubscriptionStateChangeRequest(subscriptionId, subscriptionStatus, reason, createdAt, operator, graceCount, weekNumber);
SubscriptionStateChangeRequest subscriptionStateChangeRequest = new SubscriptionStateChangeRequest(subscriptionId, subscriptionStatus, reason, createdAt, operator, graceCount, weekNumber,"ivr");

ChannelDimension channelDimension = new ChannelDimension();
SubscriptionPackDimension subscriptionPackDimension = new SubscriptionPackDimension("NAVJAAT_KILKARI");
Expand Down Expand Up @@ -302,7 +302,7 @@ public void shouldUpdateSubscriptionStatusMeasureOnSubscriptionStateChange() {
DateTime startDate = new DateTime(2012, 03, 01, 10, 10);
Timestamp startDateTimestamp = new Timestamp(startDate.getMillis());
Integer weekNumber = 38;
SubscriptionStateChangeRequest subscriptionStateChangeRequest = new SubscriptionStateChangeRequest(subscriptionId, subscriptionStatus, reason, createdAt, operator, graceCount, weekNumber);
SubscriptionStateChangeRequest subscriptionStateChangeRequest = new SubscriptionStateChangeRequest(subscriptionId, subscriptionStatus, reason, createdAt, operator, graceCount, weekNumber,"ivr");

ChannelDimension channelDimension = new ChannelDimension();
SubscriptionPackDimension subscriptionPackDimension = new SubscriptionPackDimension("NAVJAAT_KILKARI");
Expand Down Expand Up @@ -350,15 +350,15 @@ public void shouldUpdateSubscriptionStatusMeasureOnSubscriptionStateChange() {
assertEquals(weekNumber, subscriptionStatusMeasure.getWeekNumber());
}

@Test
/*@Test
public void shouldRetainOperatorIfOperatorInRequestIsNullDuringUpdate() {
String subscriptionId = "sub123";
String subscriptionStatus = "ACTIVE";
String reason = "my own reason";
String operator = "airtel";
Integer graceCount = 4;
DateTime createdAt = new DateTime(2012, 02, 01, 10, 10);
SubscriptionStateChangeRequest subscriptionStateChangeRequest = new SubscriptionStateChangeRequest(subscriptionId, subscriptionStatus, reason, createdAt, operator, graceCount, 38);
SubscriptionStateChangeRequest subscriptionStateChangeRequest = new SubscriptionStateChangeRequest(subscriptionId, subscriptionStatus, reason, createdAt, operator, graceCount, 38,"ivr");
ChannelDimension channelDimension = new ChannelDimension();
SubscriptionPackDimension subscriptionPackDimension = new SubscriptionPackDimension("NAVJAAT_KILKARI");
Expand All @@ -382,6 +382,8 @@ public void shouldRetainOperatorIfOperatorInRequestIsNullDuringUpdate() {
when(allTimeDimensions.fetchFor(any(DateTime.class))).thenReturn(timeDimension);
when(allOperatorDimensions.fetchFor(operator)).thenReturn(operatorDimension);
System.out.println("subscription is:"+subscriptionService.fetchFor(subscriptionId));
subscriptionStatusMeasureService.update(subscriptionStateChangeRequest);
verify(mockedSubscriber).setOperatorDimension(operatorDimension);
Expand All @@ -392,7 +394,7 @@ public void shouldRetainOperatorIfOperatorInRequestIsNullDuringUpdate() {
SubscriptionStatusMeasure subscriptionStatusMeasure = subscriptionStatusMeasureArgumentCaptor.getValue();
assertEquals(operatorDimension, subscriptionStatusMeasure.getOperatorDimension());
}
}*/

@Test
public void shouldDeleteSubscriptionStatusMeasuresForAGivenSubscription() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ public void shouldCreateAndUpdateASubscription() throws InterruptedException {
}

private SubscriptionStateChangeRequest createStateChangeRequest(SubscriptionReportRequest createRequest) {
return new SubscriptionStateChangeRequest(createRequest.getSubscriptionId(), "PENDING_ACTIVATION", "Any Reason", DateTime.now(), createRequest.getOperator(), 0, null);
return new SubscriptionStateChangeRequest(createRequest.getSubscriptionId(), "PENDING_ACTIVATION", "Any Reason", DateTime.now(), createRequest.getOperator(), 0, null,"ivr");
}

private SubscriptionReportRequest createSubscriptionRequest() {
SubscriptionReportRequest request = new SubscriptionReportRequest(UUID.randomUUID().toString(), "IVR", getRandomMsisdn(), "NANHI_KILKARI", null, null, DateTime.now(), "NEW", DateTime.now().plusDays(2),
null, null, "AIRTEL", DateTime.now(), null, "Reason", null, null,false, false);
null, null, "AIRTEL", DateTime.now(), null, "Reason", null, null,false, false,"ivr");
return request;
}

Expand Down
Loading

0 comments on commit edbd864

Please sign in to comment.