in Android/app/src/main/java/com/harvard/studyappmodule/SurveyResourcesFragment.java [355:651]
private void setResourceAdapter() {
RealmList<Resource> resources = new RealmList<>();
if (resourceArrayList != null) {
for (int i = 0; i < resourceArrayList.size(); i++) {
if (resourceArrayList.get(i).getAudience() != null
&& resourceArrayList.get(i).getAudience().equalsIgnoreCase("All")) {
if (resourceArrayList.get(i).getAvailability() != null
&& resourceArrayList.get(i).getAvailability().getAvailableDate() != null
&& !resourceArrayList
.get(i)
.getAvailability()
.getAvailableDate()
.equalsIgnoreCase("")) {
try {
Calendar expiryDate = Calendar.getInstance();
expiryDate.setTime(
AppController.getDateFormatForResourceAvailability()
.parse(resourceArrayList.get(i).getAvailability().getExpiryDate()));
expiryDate.set(Calendar.HOUR, 11);
expiryDate.set(Calendar.MINUTE, 59);
expiryDate.set(Calendar.SECOND, 59);
expiryDate.set(Calendar.AM_PM, Calendar.PM);
Calendar availableDate = Calendar.getInstance();
availableDate.setTime(
AppController.getDateFormatForResourceAvailability()
.parse(resourceArrayList.get(i).getAvailability().getAvailableDate()));
availableDate.set(Calendar.HOUR, 0);
availableDate.set(Calendar.MINUTE, 0);
availableDate.set(Calendar.SECOND, 0);
availableDate.set(Calendar.AM_PM, Calendar.AM);
Calendar currentday = Calendar.getInstance();
if ((currentday.getTime().before(expiryDate.getTime())
|| currentday.getTime().equals(expiryDate.getTime()))
&& (currentday.getTime().after(availableDate.getTime())
|| currentday.getTime().equals(availableDate.getTime()))) {
resources.add(resourceArrayList.get(i));
}
} catch (ParseException e) {
Logger.log(e);
}
} else {
resources.add(resourceArrayList.get(i));
}
} else if (resourceArrayList.get(i).getAudience() != null
&& resourceArrayList.get(i).getAudience().equalsIgnoreCase("Limited")) {
if (resourceArrayList
.get(i)
.getAvailability()
.getAvailabilityType()
.equalsIgnoreCase("AnchorDate")) {
if (resourceArrayList
.get(i)
.getAvailability()
.getSourceType()
.equalsIgnoreCase("ActivityResponse")) {
if (resourceArrayList
.get(i)
.getAvailability()
.getAvailableDate()
.equalsIgnoreCase("")) {
StepRecordCustom stepRecordCustom =
dbServiceSubscriber.getSurveyResponseFromDB(
((SurveyActivity) context).getStudyId()
+ "_STUDYID_"
+ AppController.getSourceActivityId(resourceArrayList.get(i)),
AppController.getSourceKey(resourceArrayList.get(i)),
realm);
if (stepRecordCustom != null) {
Calendar startCalender = Calendar.getInstance();
Calendar endCalender = Calendar.getInstance();
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(stepRecordCustom.getResult());
startCalender.setTime(
AppController.getDateFormatForApi().parse("" + jsonObject.get("answer")));
startCalender.add(
Calendar.DATE, resourceArrayList.get(i).getAvailability().getStartDays());
if (resourceArrayList.get(i).getAvailability().getStartTime() == null
|| resourceArrayList
.get(i)
.getAvailability()
.getStartTime()
.equalsIgnoreCase("")) {
startCalender.set(Calendar.HOUR_OF_DAY, 0);
startCalender.set(Calendar.MINUTE, 0);
startCalender.set(Calendar.SECOND, 0);
} else {
String[] time =
resourceArrayList.get(i).getAvailability().getStartTime().split(":");
startCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
startCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
startCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
}
NotificationDbResources notificationsDb = null;
RealmResults<NotificationDbResources> notificationsDbs =
dbServiceSubscriber.getNotificationDbResources(
AppController.getSourceActivityId(resourceArrayList.get(i)),
((SurveyActivity) context).getStudyId(),
RESOURCES,
realm);
if (notificationsDbs != null && notificationsDbs.size() > 0) {
for (int j = 0; j < notificationsDbs.size(); j++) {
if (notificationsDbs
.get(j)
.getResourceId()
.equalsIgnoreCase(resourceArrayList.get(i).getResourcesId())) {
notificationsDb = notificationsDbs.get(j);
break;
}
}
}
endCalender.setTime(
AppController.getDateFormatForApi().parse("" + jsonObject.get("answer")));
endCalender.add(
Calendar.DATE, resourceArrayList.get(i).getAvailability().getEndDays());
if (resourceArrayList.get(i).getAvailability().getEndTime() == null
|| resourceArrayList
.get(i)
.getAvailability()
.getEndTime()
.equalsIgnoreCase("")) {
endCalender.set(Calendar.HOUR_OF_DAY, 23);
endCalender.set(Calendar.MINUTE, 59);
endCalender.set(Calendar.SECOND, 59);
} else {
String[] time =
resourceArrayList.get(i).getAvailability().getEndTime().split(":");
endCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
endCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
endCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
}
Calendar currentday = Calendar.getInstance();
if ((currentday.getTime().after(startCalender.getTime())
|| currentday.getTime().equals(startCalender.getTime()))
&& (currentday.getTime().before(endCalender.getTime())
|| currentday.getTime().equals(endCalender.getTime()))) {
resources.add(resourceArrayList.get(i));
}
} catch (JSONException | ParseException e) {
Logger.log(e);
}
}
}
} else {
// if anchordate is enrollment date
Calendar startCalender = Calendar.getInstance();
Calendar endCalender = Calendar.getInstance();
try {
for (int j = 0; j < arrayList.size(); j++) {
if (resourceArrayList
.get(i)
.getResourcesId()
.equalsIgnoreCase(arrayList.get(j).getTargetActivityId())) {
startCalender.setTime(
AppController.getDateFormatForApi()
.parse(arrayList.get(j).getAnchorDate()));
startCalender.add(
Calendar.DATE, resourceArrayList.get(i).getAvailability().getStartDays());
endCalender.setTime(
AppController.getDateFormatForApi()
.parse(arrayList.get(j).getAnchorDate()));
endCalender.add(
Calendar.DATE, resourceArrayList.get(i).getAvailability().getEndDays());
break;
}
}
if (resourceArrayList.get(i).getAvailability().getStartTime() == null
|| resourceArrayList
.get(i)
.getAvailability()
.getStartTime()
.equalsIgnoreCase("")) {
startCalender.set(Calendar.HOUR_OF_DAY, 0);
startCalender.set(Calendar.MINUTE, 0);
startCalender.set(Calendar.SECOND, 0);
} else {
String[] time =
resourceArrayList.get(i).getAvailability().getStartTime().split(":");
startCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
startCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
startCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
}
NotificationDbResources notificationsDb = null;
RealmResults<NotificationDbResources> notificationsDbs =
dbServiceSubscriber.getNotificationDbResources(
AppController.getSourceActivityId(resourceArrayList.get(i)),
((SurveyActivity) context).getStudyId(),
RESOURCES,
realm);
if (notificationsDbs != null && notificationsDbs.size() > 0) {
for (int j = 0; j < notificationsDbs.size(); j++) {
if (notificationsDbs
.get(j)
.getResourceId()
.equalsIgnoreCase(resourceArrayList.get(i).getResourcesId())) {
notificationsDb = notificationsDbs.get(j);
break;
}
}
}
if (resourceArrayList.get(i).getAvailability().getEndTime() == null
|| resourceArrayList
.get(i)
.getAvailability()
.getEndTime()
.equalsIgnoreCase("")) {
endCalender.set(Calendar.HOUR_OF_DAY, 23);
endCalender.set(Calendar.MINUTE, 59);
endCalender.set(Calendar.SECOND, 59);
} else {
String[] time =
resourceArrayList.get(i).getAvailability().getEndTime().split(":");
endCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
endCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
endCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
}
Calendar currentday = Calendar.getInstance();
if ((currentday.getTime().after(startCalender.getTime())
|| currentday.getTime().equals(startCalender.getTime()))
&& (currentday.getTime().before(endCalender.getTime())
|| currentday.getTime().equals(endCalender.getTime()))) {
resources.add(resourceArrayList.get(i));
}
} catch (ParseException e) {
Logger.log(e);
}
}
} else {
resources.add(resourceArrayList.get(i));
}
} else if (resourceArrayList.get(i).getAudience() == null) {
resources.add(resourceArrayList.get(i));
}
}
} else {
addStaticVal();
}
for (int i = 0; i < resources.size(); i++) {
boolean status = false;
try {
if (resources.get(i) != null
&& resources.get(i).getAvailability().getSourceActivityId() != null) {
status = true;
}
} catch (Exception e) {
e.printStackTrace();
}
if (status) {
NotificationDbResources notificationsDb = null;
RealmResults<NotificationDbResources> notificationsDbs =
dbServiceSubscriber.getNotificationDbResources(
AppController.getSourceActivityId(resources.get(i)),
((SurveyActivity) context).getStudyId(),
RESOURCES,
realm);
if (notificationsDbs != null && notificationsDbs.size() > 0) {
for (int j = 0; j < notificationsDbs.size(); j++) {
if (notificationsDbs
.get(j)
.getResourceId()
.equalsIgnoreCase(resources.get(i).getResourcesId())) {
notificationsDb = notificationsDbs.get(j);
break;
}
}
}
if (notificationsDb == null) {
setRemainder(
Calendar.getInstance(),
AppController.getSourceActivityId(resources.get(i)),
((SurveyActivity) context).getStudyId(),
resources.get(i).getNotificationText(),
resources.get(i).getResourcesId());
}
}
}
studyRecyclerView.setLayoutManager(new LinearLayoutManager(context));
studyRecyclerView.setNestedScrollingEnabled(false);
ResourcesListAdapter resourcesListAdapter = new ResourcesListAdapter(context, resources, this);
studyRecyclerView.setAdapter(resourcesListAdapter);
}